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







Zitieren

Lesezeichen