diff --git a/AVR/main.c b/AVR/main.c index efb4e74..64a92e1 100644 --- a/AVR/main.c +++ b/AVR/main.c @@ -1,48 +1,59 @@ /* I2C Echo Example */ -#include "../I2CSlave/I2CSlave.h" - +#include "../avr-i2c-slave/I2CSlave.h" +#include +#include +#include #define I2C_ADDR 0x20 volatile uint8_t data; -volatile uint8_t final; +volatile uint8_t send=0; void I2C_received(uint8_t received_data) { data = received_data; } -void I2C_requested() -{ - I2C_transmitByte(data); +void I2C_requested() { + I2C_transmitByte(send); } void I2C_challenge() { - I2C_transmitByte(data*3); + I2C_transmitByte(send); } -void setup() -{ +void setup() { // set received/requested callbacks I2C_setCallbacks(I2C_received, I2C_requested); // init I2C I2C_init(I2C_ADDR); // init output gpio - DDRB = 0b00000001; -} + DDRC = 0b00000100; // PC2 + TCNT1 = 0; + TCCR1B |= (1 << CS10) | (1 << CS11); // No prescaling -int main() -{ +} +int main() { setup(); - + int challenge = 0; + unsigned int i = 0; // Main program loop while(1) { - if(data != 4) { + if(data == 1) { + i = TCNT1; + srand(i); + send = rand(); + while(data != send+3) { + I2C_challenge(); + } + send = 17; + I2C_challenge(); + PORTC |= 2<<1; + _delay_ms(5000); + PORTC = 0; + data = 0; + +}/* else { + send = 0; I2C_challenge(); - } - else { - //PORTB |= 1<<1; - data = 2; - I2C_requested(); - - } + }*/ } } diff --git a/AVR/makefile b/AVR/makefile index edde024..c1ec2fe 100644 --- a/AVR/makefile +++ b/AVR/makefile @@ -9,7 +9,7 @@ MCU = atmega328p FORMAT = ihex TARGET = main SRC = $(TARGET).c \ - I2CSlave.c + ../avr-i2c-slave/I2CSlave.c ASRC = OPT = s