Hallo
Ich glaube, wir "reden" aneinander vorbei:
Mit toggeln meine ich das Ein- und Ausschalten der Trägerfrequenz die deine RC5-Signale transportiert.
Toggeln meint hier nicht das togglebit2 im RC5-Code.
Toggeln bedeutet doch nur "Zustand wechseln", Zitat aus dem Datenblatt, CTC-Mode, Seite 64:
Code:
For generating a waveform output in CTC mode, the OC0A output can be set to toggle
its logical level on each Compare Match by setting the Compare Output mode bits to
toggle mode (COM0A1:0 = 1). The OC0A value will not be visible on the port pin unless
the data direction for the pin is set to output. The waveform generated will have a maximum
frequency of fOC0 = fclk_I/O/2 when OCR0A is set to zero (0x00). The waveform
frequency is defined by the following equation:
So kann die LED ausreichend schnell geschaltet werden, der Kontroller könnte es natürlich auch ohne Timer schaffen, aber dann kann er nicht mehr viel anderes erledigen. In deinem timerlosen Beispiel wird das über eine Schleife erledigt:
Code:
.equ b =15 ;38kHz @ togle = 26,3ySec / 2 @ 4 MHz crystal
; BitTime = 35 ; 889 YSec
One_send:
ldi BitTime,36 ; half Bit one
One_1: ldi temp,b ; 38 KHz Burst
sbi PORTD,TxD
One_2: dec temp
brne One_2
ldi temp,b
cbi PORTD,TxD
One_3: dec temp
brne One_3
dec BitTime
brne One_1
ret
Viele Wege führen zum Ziel. Allerdings führt dein Code (@Harry) leider nicht dahin, weil du eben nur die Bits ausgibst, aber keine Trägerfrequenz. Hier werden die 38kHz mit einem NE555 erzeugt und die Trägerfrequenz erklärt:
http://www.the-starbearer.de/Roboter...ake/IRBake.htm
Wenn ich die IRled zwischen zwei ausgänge schalte schliesst die dann nicht kurz?
Die LED doch hat einen Widerstand in Reihe und schliest deshalb keine Ports kurz. Die Pins können 50mA ("Pin Driver Strength",Datenblatt s. 134)
Hast du die Fusebits auch auf 9,6MHz gesetzt? Sonst ist der tiny vermutlich zu lahm.
Gruß
mic
Lesezeichen