Forum: Mikrocontroller und Digitale Elektronik Infrarot Empfänger V1.1 und Mega16


von Uwe B. (Gast)


Lesenswert?

Hi,

versuche gerade das RC5 Decoder Beispiel für Code Vision Compiler
(siehe Download) auf einen Mega16  8Mhz zur Funktion zu bringen.

Habe die "GIMSK" Anweisungen durch "GICR" ersetzt und das Header
File auf den Prozessor angepasst.
Ext. Interrupt wird bei Signal ausgelöst, der Timer läuft.
Als Auswertung kommt jedoch nur unsinn heraus.
Muß man auch noch was am Timing ändern ???
Help ! bin am verzweifeln.    :(

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Mit Sicherheit. Wenn das Ganze timergesteuert ist (wovon ich ausgehe),
müssen die Timerwerte angepaßt werden. Habe sowas mal selbst in
Codevision programmiert und mußte da auch Rücksicht drauf nehmen.

Welchen Download soll ich denn sehen?!?

Gruß
KMT

von Max (Gast)


Lesenswert?

@Uwe

könntest du eventuell den ganzen Code mal posten. Ich habe auch schon
versucht einen RC5 Decoder zu programmieren, hat aber nicht so ganz
geklappt.

danke
max

von Uwe B. (Gast)


Lesenswert?

Code siehe hier unter download :

http://mikrocontroller.cco-ev.de

von Kai Markus Tegtmeier (Gast)


Angehängte Dateien:

Lesenswert?

Hm, kann so direkt nichts sehen. Da die gleiche Taktfrequenz benutzt
wird, müßte es laufen. Höchstens Interrupt-Freigabe-Problem?!?
Ich habe mal meinen RC5-Code von einem Mega32 bei 7,3728 MHz
drangehängt. Der läuft sehr gut, überprüft auf Biphasenfehler und
übergibt die Tastennummer in die globale Variable tastencode.
Angeschlossen wird der Infrarotempfänger (idle=High!) am externen
Interrupt0 (beim Mega32 PORTD.2)

Da der Code aus einem größeren Programm stammt, bitte ich um Nachsicht,
falls ich beim Zusammenstreichen eine Variable vergessen haben
sollte...

Gruß
KMT

von Uwe B. (Gast)


Lesenswert?

Super Kai !

Funktioniert klasse dein Programm.

Kannst mir noch ein paar Tips geben zur änderung auf 8 bzw. 16 Mhz ??

MfG   Uwe

von Uwe B. (Gast)


Lesenswert?

Hat sich erledigt, Formel ist ganz easy :


Timerwert = 0xFFFF-  (445 us * MHz)

bzw.

Timerwert = 0xFFFF-  (889 us * MHz)


Vielen Dank nochmals  : )


MfG   Uwe

von Kai Markus Tegtmeier (Gast)


Lesenswert?

... ist ja auch mit Liebe geschrieben ;-)

Greetz
Kai Markus

von Peter D. (peda)


Lesenswert?

@Kai,

Deine Routine hat allerdings den Nachteil, daß keine Bitsynchronistaion
erfolgt, Dadurch muß die Quarzfrequenz sehr genau eingestellt werden,
sonst können Abweichungen >3,5% zu Fehlern führen.

Da der RC5-Code ja eine Bitsynchronisation erlaubt, bin ich mir auch
nicht so sicher, ob die Fernbedienhersteller auch wirklich ihre
Schwinger so genau justieren oder manchmal darauf vertrauen, daß der
Empfänger sich bei jedem Bit neu synchronisiert und dadurch größere
Toleranzen (bis 10%) automatisch ausgleicht.

In der Codesammlung findest Du meinen Code, der sehr einfach ist und
die Bitsynchronisation durchführt:

http://www.mikrocontroller.net/forum/read-4-74473.html


Peter

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.