Foooob
06.02.2007, 19:05
Hallo
Ich habe folgendes Problem.
Auf Knopfdruck (bzw. über die RS-232) soll meine Luxeon anfangen zu blinken. Genauso soll sich das geblinke aber auch wieder abschalten lassen, die Luxeon soll dann ausgehen. Aber genau daran scheitere ich.
Mein Code sieht folgendermaßen aus:
Dim T As Bit
Dim Tw As Word
Dim Luxstatus As Word
Config Timer3 = Timer , Prescale = 256
On Timer3 Isr_lux_t3
Timer3 = Tw
Enable Interrupts
Config Pinb.4 = Output 'Pin der Lux
'....
Do
If Mid(zeichen , 1 , 4) = "lumb" Then 'Luxeon-Status
Luxstatus = Mid(zeichen , 5 , 2)
If Luxstatus = "01" Then
'1Hz Blinken
Enable Timer3
Tw = 30000
End If
If Luxstatus = "00" Then
'LUX ausschalten
Disable Timer3
Portb.4 = 0
Ocr0 = 0
End If
End If
Waitms 50
Loop
End
Isr_lux_t3:
Timer3 = Tw
Toggle T
If T = 0 Then Ocr0 = 255 'PWM Wert der Lux
If T = 1 Then Ocr0 = 0
Toggle Portb.4
Return
Sobald die Zeichenkette "lumb01" einfliegt fängt die Luxeon an zu blinken, alles paletti. Wenn jetzt aber die Zeichenkette "lumb00" einfliegt soll die Luxeon aufhören, dazu habe ich wie man sieht versucht den Timer zu deaktivieren, den Port auf Low zu setzen und den PWM-Wert auf 0 gesetzt. Interessiert meine Luxeon aber wenig, die blinkt weiter akkurat vor sich hin.
Wenn man sich das genau auf dem Display anschaut sieht man, dass wenn man "lumb01" und _sofort_ danach "lumb00" sendet die Luxeon aus bleibt, wartet man aber dazwischen etwas nimmt der AVR von außen nichts mehr entgegen. Auch andere Befehle (zum Beispiel zur Motoransteuerung) lassen ihn kalt, einzigst die Luxeon lässt er noch blinken.
Ich habs schon mit allerlei Mitteln probiert aber entweder blinkt dann die Luxeon nicht mehr oder es gibt sonst irgendwelche Probleme. Nutze Timer leider nicht so oft, drum könnts auch an was ganz trivialem liegen :-b
Ich habe folgendes Problem.
Auf Knopfdruck (bzw. über die RS-232) soll meine Luxeon anfangen zu blinken. Genauso soll sich das geblinke aber auch wieder abschalten lassen, die Luxeon soll dann ausgehen. Aber genau daran scheitere ich.
Mein Code sieht folgendermaßen aus:
Dim T As Bit
Dim Tw As Word
Dim Luxstatus As Word
Config Timer3 = Timer , Prescale = 256
On Timer3 Isr_lux_t3
Timer3 = Tw
Enable Interrupts
Config Pinb.4 = Output 'Pin der Lux
'....
Do
If Mid(zeichen , 1 , 4) = "lumb" Then 'Luxeon-Status
Luxstatus = Mid(zeichen , 5 , 2)
If Luxstatus = "01" Then
'1Hz Blinken
Enable Timer3
Tw = 30000
End If
If Luxstatus = "00" Then
'LUX ausschalten
Disable Timer3
Portb.4 = 0
Ocr0 = 0
End If
End If
Waitms 50
Loop
End
Isr_lux_t3:
Timer3 = Tw
Toggle T
If T = 0 Then Ocr0 = 255 'PWM Wert der Lux
If T = 1 Then Ocr0 = 0
Toggle Portb.4
Return
Sobald die Zeichenkette "lumb01" einfliegt fängt die Luxeon an zu blinken, alles paletti. Wenn jetzt aber die Zeichenkette "lumb00" einfliegt soll die Luxeon aufhören, dazu habe ich wie man sieht versucht den Timer zu deaktivieren, den Port auf Low zu setzen und den PWM-Wert auf 0 gesetzt. Interessiert meine Luxeon aber wenig, die blinkt weiter akkurat vor sich hin.
Wenn man sich das genau auf dem Display anschaut sieht man, dass wenn man "lumb01" und _sofort_ danach "lumb00" sendet die Luxeon aus bleibt, wartet man aber dazwischen etwas nimmt der AVR von außen nichts mehr entgegen. Auch andere Befehle (zum Beispiel zur Motoransteuerung) lassen ihn kalt, einzigst die Luxeon lässt er noch blinken.
Ich habs schon mit allerlei Mitteln probiert aber entweder blinkt dann die Luxeon nicht mehr oder es gibt sonst irgendwelche Probleme. Nutze Timer leider nicht so oft, drum könnts auch an was ganz trivialem liegen :-b