willst ne trägerfrequenz oder wie soll ich mir das vorstellen?
Hi,
ich möchte IR LED wie beim asuro mit dem timer 2 pulsen.
Also IR über widerstand zwischen OC2 und TXD angeschlossen.
Timer initialiesierung wie bei ASURO:
Und hier der interuppt.Code:void init_timer2 (void) { cli(); // Interrupts sperren! TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 << CS20); OCR2 = 0x91; // duty cycle for 36kHz TIMSK |= (1 << TOIE2); sei(); // Interrrupts freigeben! }
nun möchte ich die IR LED mit 38 anstatt 36 khz pulsen wie mach ich das?Code:SIGNAL (SIG_OVERFLOW2) { TCNT2 += 0x25; //was bezweckt dieser befehl? count36kHz ++; if (!count36kHz) timebase ++; }
MfG Martin
willst ne trägerfrequenz oder wie soll ich mir das vorstellen?
ja genau das will ich ne tragerfrequnz
was willstn genau machen?
ich will daten von meinem Bot per IR zum PC senden da ich nur 38 khz dekoder zur verfügung habe brauche ich eine trägerfrequenz mit 38 khz anstat wie beim ASURO 36 khz jetzt will ich wissen wie ich das machen kann?
Wenn Du mit "dekoder" den TSOP meinst, sollte er auch mit 36 kHz funktionieren, ist bei mir auch so, sonst änderst Du Zeile :
inCode:TCNT2 += 0x25;
um.Code:TCNT2 += 0x2E;
Warum, darfst Du im Dattenblatt selber nachgucken...
Gruß Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
mir sagt leider ASURO nix
mh, also wie du die trägerfrequenz raus kriegst hät ich dir sagen können, hab letztens von ner IR fernbedienung den träger mit nem C und 2 open-collector NPN rausgefiltert
aber mit ganz schnell ON/OFF sollte es auch gehn :P
wie sieht denn das signal aus bzw. soll es aussehn? steh da nämlich echt grad aufm schlauch.
Ein ganz normales rechtecksingnal mit 38 khz
kanst du mir das bitte erklären hab schon im datenblatt nachgeschaut und nachgerechnet!
blink, dir ist klar, dass der threadstarter etwas gefragt hat, und für eine antwort sicher dankbarer ist, als über 3 gegenfragen, oder? :P
ohne garantie:
wenn der timer überläuft, wird er auf 0x25 (37 dez) bzw 0x2E (46 dez) gesetzt. bei 8MHz quarz ergibt sich damit ohne prescaler 36kHz bzw. 38kHz. ich weiß aber gar nicht welchen quarztakt du verwendest.
was gibt es hier groß zu erklären ?
Der M8 im Asuro läuft mit 8 Mhz....
der Timer 2 läuft mit Systemtakt, ohne Prescaller, wenn man einen Overlow Interrupt bei 36 kHz haben möchte, muß der Timer mit 8MHz/36kHz -> 222 Takte laufen.
Da der Überlauf bei 255 + 1 stattfindet muß der Timer halt mit 256 - 222 geladen werden.
Das macht TCNT2 += 0x25;
0x22 wäre da rechnerisch korekter gewesen
Jetzt weißt Du hoffentlich, wie ich auf 0x2E gekommen bin, aber wie gesagt, versuch es zuerst mit ganz normall 36 kHz.
Gruß Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
Lesezeichen