Hallo an die Forumsgemeinde. Ich versuche aktuell mit meinem AVR NET IO und dem ATmega32 ein RECS80 Protokoll nachzubilden. Auf dem Bild im Anhang sieht man, dass das wunderbar funktioniert, mein Problem ist aber, dass ich das Signal invertiert benötige. Also, dass der Pegel am Ausgang (OC0, PB3) dauerhaft auf 5V liegt und die Signalsprünge von 5V -> 0V -> 5V gehen, nicht 0V -> 5V -> 0V. Ist das Softwareseitig zu lösen? Müsste doch eigentlich funktionieren, ich komme aber nicht darauf... mfg Marius
Dafür ist nur eine Zeile in irsnd.c - Funktion irsnd_off() - zu ändern: Alt:
1 | IRSND_PORT &= ~(1<<IRSND_BIT); // set IRSND_BIT to low |
Neu:
1 | IRSND_PORT |= 1<<IRSND_BIT; // set IRSND_BIT to high |
In irsnd_on() dagegen ist keine Änderung nötig, da hier sowieso moduliert wird, d.h. der Pegel wechselt sowieso die ganze Zeit. Edit: Dasselbe muss nochmal in irsnd_init() gemacht werden: Alt:
1 | IRSND_PORT &= ~(1<<IRSND_BIT); // set IRSND_BIT to low |
Neu:
1 | IRSND_PORT |= 1<<IRSND_BIT; // set IRSND_BIT to high |
Damit der Ruhezustand auch vor dem Senden des ersten Frames umgestellt ist. Vorsicht beim Raussuchen der beiden Stellen im Source. Es ist jeweils der #else Zweig (AVR) - nicht zu verwechseln mit _AVR_XMEGA_.
:
Bearbeitet durch Moderator
Vielen Dank für die schnelle Antwort! Habe es angepasst und es hat auf Anhieb funktioniert.
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.