Hallo!
Ich bastle an einem Programm um DCC-Daten an meine Modellbahn
zu schicken. Klappt auch soweit, nur ist mir etwas mit dem Timer-Interrupt nicht klar. Wenn ich in meinem Programm die for-next-Schleife
auf z.b 64 ändere, stimmt das Timing für das DCC nicht mehr,
sollte doch aber wegen des Interupts unabhängig sein oder ?
In den DO_Loop-Schleifen warte ich jeweils auf den Nächsten Interrupt.
Vielleicht weis jemand was ..
Code:For Adresse = 1 To 128 T = Dcc_h If Fkt(adresse) <> 0 Then For X = 1 To 12 'PREAMBLE Hw = 0 T = Dcc_h Do : Nop : Loop Until Hw = 2 Next X Hw = 0 'PACKET T = Dcc_l Do : Nop : Loop Until Hw = 2 For X = 7 To 0 Step -1 'ADRESSE Hw = 0 If Adresse.x = 1 Then T = Dcc_h Else T = Dcc_l Do : Nop : Loop Until Hw = 2 Next X Hw = 0 'PACKET T = Dcc_l Do : Nop : Loop Until Hw = 2 For X = 7 To 0 Step -1 'DATEN Hw = 0 If Fkt(adresse).x = 1 Then T = Dcc_h Else T = Dcc_l Do : Nop : Loop Until Hw = 2 Next X Hw = 0 'PACKET T = Dcc_l Do : Nop : Loop Until Hw = 2 Check = Adresse Xor Fkt(adresse) For X = 7 To 0 Step -1 'ERR_CHECK Hw = 0 If Check.x = 1 Then T = Dcc_h Else T = Dcc_l Do : Nop : Loop Until Hw = 2 Next X Hw = 0 'PACKET END T = Dcc_h Do : Nop : Loop Until Hw = 2 End If Next Adresse Loop Tim0_isr: Tcnt0 = T Incr Hw Toggle Dcc_a : Toggle Dcc_b Return







Zitieren

Lesezeichen