Hallo Liebe Mikrocontroller-Freunde,
ich habe 2 Dateien angehangen, mit jeweils einem IIC-Master- und einem
IIC-Slave-Projekt.
Zur Beschreibung:
Der IIC-Slave misst nach einem Interrupt bei Nulldurchgang die positive
Halbwelle eines analogen Signals.
Dabei misst er solange nach einem Verfahren, bis er die Spitze gefunden
hat.
Diesen Wert soll er dem Master übermitteln, sobald dieser anfragt. Es
handelt sich also um die Übertragung eines einzigen Bytes mit IIC.
Der Master arbeitet als Regler. Er fordert den Wert an und speichert
diesen in eine Variable. Mit einem Vergleichswert wird ein Toleranzband
errechnet.
Anschließend wird der angeforderte Wert überprüft ob er im Toleranzband
liegt. Liegt er mehrmals über oder unter der Toleranzgrenze, wird eine
entsprechende
Regelschleife aktiviert um solange Gegenzusteuern, bis der Wert wieder
im Toleranzband liegt.
Mein Problem ist:
Nach dem Einschalten übermittelt er den Wert scheinbar, welchen er
zuerst misst, also die Spitze und leitet die entsprechende Maßnahme
(links rum regeln, rechts rum regeln oder gar nichts tun) ein.
Wenn ich jetzt an meinem Spannungsgenerator rum drehe und eine
Überspannung, Unterspannung oder wieder auf Normalwert stelle, passiert
nichts mehr. Er bleibt da hängen, was er als erstes übermittelt bekommen
hat.
Erst nach einem aus- und wieder einschalten (der Vorsorgungsspannung),
holt er oder bekommt er den aktuell eingestellten Wert und verweilt
wieder dort bis zum verändern am Generator und weiteren aus- und wieder
einschalten.
Scheinbar wird die Kommunikation nicht korrekt ausgeführt. Prinzipiell
sind beide Programme in jeweils dem Projekt identisch, das einzige was
sie unterscheidet, sind die Dateien für IIC und die Anwendung.
Für Projekt 1:
Die IIC-Dateien sind von Internetseite
http://rn-wissen.de/wiki/index.php?title=TWI_Slave...
Für Projekt 2:
Die IIC-Dateien sind von der Internetseite (Hier aus dem Forum)
Beitrag "AVR TWI Master und Slave Funtionen in C"
In den Projekten werdet Ihr zwei Hauptprogramme finden. Meines ist immer
die main.c.
Es liegen noch eine TWI_Master_main.c und eine TWI_Slave_main.c in den
Ordnern.
Das sind Beispielprogramme aus dem Internet, an die ich mich gehalten
habe.
Dieser selbst werden nicht in meinem Programm verwendet.
Schaut Euch bitte den Quellcode an. Über Hilfe bin ich Euch sehr
dankbar!
Lesezeichen