Hallo,
ich würde gerne Daten mit einer Infrarot-Diode versenden. Dazu muss ich
das IR-Licht modulieren. Am liebsten wäre mir natürlich, wenn ich das
ganze so machen könnte, dass der Timer2 der ATmega8, den ich verwende,
das selbstständig macht. Leider kann ich den Timer-Takt ja nur recht
grob mit den Vorteilern einstellen, sodass ich nicht wirklich nah an die
38kHz rankomme.
Hat jemand einen Tipp, wie ich möglichst einfach Timer2 dazu überreden
kann an einem Pin mit 38kHz zu togglen?
Danke!
>Hat jemand einen Tipp, wie ich möglichst einfach Timer2 dazu überreden>kann an einem Pin mit 38kHz zu togglen?
Du kannst den Timer:
- Vorladen,
- beim TOP-Wert löschen (clear on top)
- OCR-Register für 38*2 kHz einstellen ("OCR2 = FCPU/(38000*2)")
- OCR-Pin (mit den COM2x-bits) auf "toggle on compare" (und auf Ausgang
;))
- Timer im CTC-Mode starten (wahrscheinlich mit Prescaler "1"-> musst du
nachrechnen)
Modulieren kannst du das Signal, indem du entweder den Timer ganz
abstellst oder die COM2x-Bits vorübergehend umschaltest.
hth, Jörg
F_CPU ist das, mit dem der Atmega rennt.
Hast du nen externen Quarz dran? Wie sind die Fuses eingestellt?
Ganz genau kommt man meist nicht an die Werte ran, aber für die meisten
Anwendungen ist das nicht weiter schlimm da es Toleranzen gibt.
das nicht, aber man setzt sie auch nicht.
Da das Register TCCR2 nicht verodert wird, sondern wirklich zugewiesen
wird, steht danach dort eine 0.
Nötig wäre es nicht, aber zwecks Lesbarkeit finde ich es zumindest gut
("ich setze das Bit nicht").
H.j.Seifert schrieb:
> Und wenn du die 38kHz genau haben möchtest, sollte die Taktfrequenz> schon ein Vielfaches davon sein
Sooo genau nehmen es die TSOP Empfänger auch nicht. Ein 38kHz
funktioniert auch noch mit einer 36kHz Fernbdienung. Allerdings mit
geringerer Reichweite.
Wenn du auf "genau" abziehlst müsstest du auch die Formel für OCR2
bemängeln.
Nach Datenblattformel müsste da ja auch
Natürlich kommt es nicht so genau drauf an, bezog sich darauf:
"Wie kann ich dann die 38kHz einstellen? F_CPU ist ja bei einem Atmega8
1MHz, oder? D.h. ich komme nie genau auf die 38kHz, oder?"
Und das passt nun mal mit 1MHz eben nicht.
> F_CPU ist ja bei einem Atmega8 1MHz, oder?
Das gilt für den Auslieferungszustand. Es steht Dir frei, ihn mit einem
anderen Takt laufen zu lassen. Intern stehen neben 1MHz noch einige
andere Frequenzen zur Verfügung, z.B. 2MHz, 4MHz oder 8MHz, extern
kannst Du durch Verwendung eines passenden Quarzes (oder anderer
Taktquellen) noch viel feiner variieren. Am besten schaust Du mal im
Datenblatt im Kapitel Clock-Sources nach, manchmal reicht es eben nicht,
nur die Überschriften zu lesen.
...
Eine eigene Frage?
Dieser Thread ist über 17 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.