für die einstellbare Frequenz habe ich eine Lösung gefunden
Code:
$regfile = "ATtiny13.dat"
'$crystal = 4800000
Dim Hi As Byte
Dim Lo As Byte
Dim Phase As Bit
Dim Get_break_signal As Bit
Dim B As Byte
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.
Ddrb = &B00000011
Portb = &B00000100
Lo = Reload - 13
Hi = Reload - Lo
Phase = 1
Config Timer0 = Timer , Prescale = 8
On Timer0 Timer_isr
Enable Timer0
Enable Interrupts
Declare Function Get_break_signal() As Byte
Do
nop
Loop
Timer_isr:
If Phase = 1 Then
If Get_break_signal() = 1 Then
Portb.0 = 1
Else
Portb.0 = 0
End If
Portb.1 = 0
Load Timer0 , Lo
Phase = 0
Else
If Get_break_signal() = 1 Then
Portb.0 = 0
Else
Portb.0 = 1
End If
Portb.1 = 1
Load Timer0 , Hi
Phase = 1
End If
Return
Function Get_break_signal() As Byte
Local Bt As Byte
For Bt = 1 To 3
If Portb.2 = 0 Then
Get_break_signal = 0
Exit Function
End If
Next Bt
Get_break_signal = 1
End Function
Nur regiert der µC nicht darauf wenn ich PB.2 auf Masse ziehe. Dann sollte das PWM Signal sich eigentlich ändern.
Lesezeichen