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