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_mit_avr-gcc 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!
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.