Hallo alle zusammen,
vorab, ich bin ein Anfänger was die TWI Kommunikation betrifft. Ich habe
mich durch das Forum gewühlt, komme aber dennoch noch nicht so recht
weiter.
Ich möchte einen Atmega128 mit einem Atmega8 mittels TWI kommunizieren
lassen. Der Atmega128 soll hierbei als Master und der Atmega8 als Slave
dienen. Ich programmiere mit AVR Studio 5.1 in C.
Ich möchte den Code von Manni verwenden
(Beitrag "AVR TWI Master und Slave Funtionen in C").
Die Slave Adresse habe ich zu 15 gewählt. Beiden Atmega´s ist die Slave
Adresse bekannt. Die Frequenz für die TWI-Kommunikation habe ich zu
100kHz gewählt.
Der Atmega128 wird von einem 12 VDC Netzeil und der der Atmega8 von
einem 5 VDC Netzteil versorgt. Über 2 Pull-Up Widerstände (je 4,7kOhm)
sind die Datenleitungen SDA und SCL an 5V angeschlossen. SDA und SCL
sind am Atmega8 und Atemga128 an den richtigen Pins angeschlossen (Pin
27&28 bzw. Pin 10&9 von EXT1). Meine Frage ist nun: Muss ich die Masse
vom Atmega8 zum Pin 1 von EXT1 des Atemga128 auch verbinden?
Zunächst möchte ich als erstes, dass der Slave dem Master einfach nur
einen Integer zuschickt. Der Master soll diesen dann auf dem LCD-Display
anzeigen lassen.
In der Funktion TWIM_Start von TWI_Master.c scheint der Atemga128 in der
folgenden Schleife hängen zu bleiben. Ich lasse mir einen Char auf dem
Display anzeigen, wenn die Schleife durchlaufen wird.
1 | while (!(TWCR & (1<<TWINT))) SEND_CHAR('B');
|
Das heißt für mich, dass auf das Setzen des TWINT-Flags gewartet wird.
Bedeutet dies, dass die Daten nicht gesendet werden konnten?
Gruß Stefan