Hallo Zusammen.
Ich habe ein Problem mit einer RS232 Abfrage + Dimmerfunktion(mit
Bascom).
Mein Programm soll sich über RS232 die Befehle 1-6 geben lassen und
danach die Lampen dimmen.
CODE:
$regfile = "m8def.dat" 'Atmega8
$crystal = 3686400
'Taktfrequenz
$baud = 9600
Dim Befehl As Byte
Dim A(8) As Byte
Dim I As Byte
Dim T As Byte
On Timer0 Ontimer 'Timer
On Urxc Onrxd
Ddrd = &B11111111
Tccr0 = &B00000001 'Timergeschwindigkeit
Timsk.toie0 = 1
Sreg.7 = 1
Enable Urxc
Enable Interrupts
Do
Loop
End
Ontimer: 'Dimmvorgang (Interrupt)
If I = 32 Then I = 0
For T = 5 To 7
If I < A(t) Then Portd.t = Not Portd.t
Next T
Return
Onrxd: 'UDR-Empfang
Befehl = Udr
Select Case Befehl
Case "1"
A(5) = 0
Case "2"
A(6) = 0
Case "3"
A(7) = 0
Case "4"
A(5) = 32
Case "5"
A(6) = 32
Case "6"
A(7) = 32
Case Else : Print "Error"
End Select
Befehl = ""
Return
CODE ENDE:
Ich kann soweit Eingaben über RS232 machen und die Werte werden auch
richtig zugeordnet und angezeigt wenn ich sie Abfrage.
Wenn ich die Befehle 1-3 Nutze klappt alles super.
Wenn ich allerdings 4-6 nutze Dimmt sich die gewählte Lampe auf den
gewünschten Wert, aber das Porgramm läst keine weiteren Eingaben mehr
zu.
Erst wenn ich Reset gedrückt habe kann ich wieder neue Befehle
übertragen.
Es scheint so, als würde sobald der Interrupt für die Dimmerfunktion
seine Arbeit antritt die UDR abfrage Still stehen.
Bin noch relativ neu hier hoffe einer kann mir Helfen.
Gruß
Alex
Gast
#1050540
Hmm... Scheint mir wohl keiner helfen zu können, schade.
Moin,
If I = 32 Then I = 0
For T = 5 To 7
If I < A(t) Then Portd.t = Not Portd.t
Next T
If I = <- was ist mit diesem I ??
Später zählst du T hoch, aber I finde ich in deinem Code kein 2tes mal
Gruß Anselm
Das ist der Zähler für die Helligkeit... Wenn die Lampe 1 z.B. auf Helligkeit 16(50%) gestellt ist, Leuchtet die Lampe nur bis der Wert I = 16 ist. Das läst die Lampe halt nur 50% der Gesammtzeit Leuchten.
Oh ich merke gerade das ich I garnicht erhöhe... Mal schauen ob es jetzt geht.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.