1
0
Fork 0
lego_sensor_i2c/i2c_test_attiny85/main.c

80 lines
1.8 KiB
C
Executable file

/*
* i2c_test_attiny85.c
*
* Created: 12/11/2021 15:26:38
* Author : 40008304
*/
#if __GNUC__
#include <avr/io.h>
#include <avr/interrupt.h>
#else
#include <inavr.h>
#include <ioavr.h>
#endif
#include "led_gen.h"
#include "led_receptor.h"
#include "USI_TWI_Slave.h"
#define NOM_CONSTRUC 0x08
#define NOM_CAPTEUR 0x10
#define VALEUR_DEMAN 0x49
#define BASIC_MODE 0x42
volatile unsigned char rawVal;
volatile float adcled1;
volatile float adcled2;
volatile unsigned char recVal;
ISR (ADC_vect){//On récupère les données à chaque fin de conversion Analogique/Numérique
adcled1=measureLed1();
adcled2=measureLed2();
recVal=compareLed(adcled1,adcled2);
}
int main( void )
{
unsigned char slaveAdress, cmd,i=0;
unsigned char nom_capteur[8]= {'T','u','r','k','i','s','h','Z'};
unsigned char sensor_type[8]= {'C','a','t','c','h','E','y','e'};
slaveAdress = 0x01;
USI_TWI_Slave_Initialise(slaveAdress);
sei();
ADC_init();
ADC_start_conversion();
while(1)
{
if( USI_TWI_Data_In_Receive_Buffer() )
{
cmd = USI_TWI_Receive_Byte();
switch(cmd)
{
case NOM_CONSTRUC :
for (i=0; i<8; i++)
{
USI_TWI_Transmit_Byte(nom_capteur[i]);
}
break;
case NOM_CAPTEUR :
for (i=0; i<8; i++)
{
USI_TWI_Transmit_Byte(sensor_type[i]);
}
break;
case VALEUR_DEMAN :
USI_TWI_Transmit_Byte(recVal);
break;
case BASIC_MODE :
USI_TWI_Transmit_Byte(0x46);
break;
}
}
}
return 0;
}