Forum: Mikrocontroller und Digitale Elektronik IRSND Ausgabesignal invertieren


von marius208 (Gast)


Angehängte Dateien:

Lesenswert?

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

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

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
von marius208 (Gast)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.