Hallo Leute, wie ich sehe ist Thomas wieder
und nicht mehr
und hilft sogar
anderen Leuten,
also zu den Fragen mit den push und pops von tmp, es geht auch anders!
wenn man genug Register zu Verfügung hat, kann man sich ein extra Register nur für die
Interruptsroutinen deklarieren, z.B tmpi oder z.B. meinInterruptarbeitsregister .
und damit nur in den Interrupts arbeiten, womit man dann den tmp nicht benutzen und sichern muß.
@Tekeli,
Der Timer 1 und Timer 2 haben mehrere Modes, man kann auch andere Sachen damit machen, als nur Zeit zu Zählen (sehe DattenBlatt seite 97 ) und Suche mal nach PWM , falls es Dir,Euch nichts sagt.
Bei Deinem Asuro wird z.B. der Timer 1 in 8 bit PWM mode benutzt um die Geschwindigkeit der Motoren einzustellen ich will jetzt nicht näher daraf eingehen, weiß nicht was wir mit PWM hier Programmieren könnten (Außer bei Deinem Asuro)
sehe Dir mal asuro.c an. In der Init u. in der Speed Funktion sieht man wie man das benutzen kann.
Ich hoffe , daß Dir das reicht, am sonsten zieh Dir dashier
rein, da ist es gut beschrieben
@Thomas,
Ich tippe der Fehler liegt hier irgendwo :
Code:
rotan:
sbiw ZL, 3
ldi statusAmpel, 0b00000010 ;rot an
rjmp ende
rotgelban:
adiw ZL, 2
ldi statusAmpel, 0b00000110 ;rot und gelb an
rjmp ende
gruenan:
sbiw ZL, 3
ldi statusAmpel, 0b00001000 ;grün an
rjmp ende
gelban:
adiw ZL, 1
ldi statusAmpel, 0b00000100 ;gelb an
Bedenke, es steht zwar z.B. so:
.dw 12345,12121
drin aber in der Wirklichkeit sind das 4 Bytes
z.B. (es Stimmt nicht mit den Werten!)
10,20,30,40
Die ersten zwei gehören zu 12345 die letzten zwei zu 12121
Wenn Dein Z Zeiger auf der Low Byte von 12345 (hier 10 ) zeigt,
Du aber den zweiten wert (12121) einlesen willst mußt Du vor lpm adiw ZL,2 machen
(dann Z -> 30) einlesen, adiw ZL,1 (dann Z -> 40) und mit lpm einlesen.
Willst Du irgendwann den zweiten Wert nochmal haben sbiw ZL,1 und für den ersten sbiw ZL,3
Ich denke gelban:
adiw ZL, 1
wird falsch sein , damit landest Du "dazwischen" und jetzt kommt alles durcheinander,
verstehst Du wie ich das meine ?
Gruß Sebastian
Lesezeichen