Oh entschuldigug
Code für den Master wird bald nach gereicht, da ich an einem anderen PC programmiere. Ich programmiere in C mit WinAVR. Hier aber schonmal der Code für den I2C Bus für den Slave Atmega, welchen ich glaube ich hier aus dem Forum gesaugt habe...
Code:
#include "i2cbus.h"
unsigned char i2c_read_byte (void)
{
/*send content of TWDR; TWEA = enable ACK*/
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN);
/*wait, until byte has been received --> ACK*/
while (!(TWCR & (1<<TWINT)));
return TWDR;
}
unsigned char i2c_receive (void)
{
unsigned char value = 0;
value = i2c_read_byte ();
return value;
}
Aufrufen tue ich dass dann folgendermaßen:
Code:
SIGNAL(SIG_2WIRE_SERIAL){
variablexyz = i2receive();
PORTB = 0xFF //LED am Slave anschalten;}
Die "variablexyz" habe ich vorher als volatile deklariert und initialisiert.
Lesezeichen