Folgende Umgebung:

ATtiny13 mit 4,8Mhz

Ziel:

an den Ausgängen PortB.0 und PortB.1 soll ein PWM Signal mit 25 Hz anliegen. Das Signal hat 2 Zustände 1. 20% High 80% Low 2. 80% High 20% Low Das habe ich mit Timer_isr ganz gut hinbekommen. als nächstes muss der Tiny noch auf die Eingänge PortB.2 - B.5 reagieren und unterschiedliche PWM Zustände an den Ausgängen schalten.

Nachdem ich das wie angehangen realisiert habe, habe ich ein sehr uistabiles Signal, so das in unregelmäßigen Abständen das PWM Signal unsauber wird ( Umschaltung von Low nach High oder anders herum fehlt.

Kann mir dafür jemand einen Tip geben ?

Code:
$regfile = "ATtiny13.dat"
'$crystal = 4800000
Dim Hi As Byte
Dim Lo As Byte
Dim Phase As Bit
Dim Pwm1 As Bit
Dim Pwm2 As Bit


Const Reload = 95                                           'um 24 Hz zu erzeugen 4,8Mhz/8/64
$hwstack = 10                                               'Eingefügt Weil die Standardvorgaben
$swstack = 10                                               'für den Tiny13 zu
$framesize = 20                                             'hoch sind.
Declare Sub Taste_1
Declare Sub Taste_1a
Declare Sub Taste_2
Declare Sub Taste_2a

Ddrb = &B00000011
Portb = &B11111111
Lo = Reload - 13
Hi = Reload - Lo
Phase = 1
Config Timer0 = Timer , Prescale = 256
On Timer0 Timer_isr
Enable Timer0
Enable Interrupts
Pwm1 = 0
Pwm2 = 0

Do
 Debounce Pinb.2 , 1 , Taste_1 , Sub
 Debounce Pinb.2 , 0 , Taste_1a , Sub
 Debounce Pinb.3 , 1 , Taste_2 , Sub
 Debounce Pinb.3 , 0 , Taste_2a , Sub
Loop

Timer_isr:
  If Phase = 1 Then
   Portb.0 = Pwm1
   Portb.1 = Pwm2
   Load Timer0 , Lo
   Phase = 0

  Else
   Portb.0 = Not Pwm1
   Portb.1 = Not Pwm2
   Load Timer0 , Hi
   Phase = 1
  End If
Return

Sub Taste_1
   Pwm1 = 1
End Sub
Return

Sub Taste_1a
   Pwm1 = 0
End Sub
Return

Sub Taste_2
   Pwm2 = 1
End Sub
Return

Sub Taste_2a
   Pwm2 = 0
End Sub
Return