Ich habe ein Problem mit dem Timer1 beim Attiny 45.
Bei folgendem Programm faden 2 LEDs (an PB0 und PB4) gleichzeitig hoch und runter. Ändere ich bei Timer0 das "Clear Up" in "Clear Down", faden die LEDs gegenläufig. Soweit ist alles in Ordnung.
Ändere ich dagegen bei Timer1 das "Clear Up" in "Clear Down", fadet die dazugehörige LED an PB4 (OC1B) gar nicht mehr. Soweit mir bekannt ist, hat Bascom ein Problem mit den Attinys 25/45/85 bezüglich der Timer1, da sie hier nur als 8-Bit Timer ausgeführt sind.
Leider erschließt sich mir nicht genau, welche Register ich setzen muss, damit Timer1 richtig funktioniert.
Alles anzeigen
Bei folgendem Programm faden 2 LEDs (an PB0 und PB4) gleichzeitig hoch und runter. Ändere ich bei Timer0 das "Clear Up" in "Clear Down", faden die LEDs gegenläufig. Soweit ist alles in Ordnung.
Ändere ich dagegen bei Timer1 das "Clear Up" in "Clear Down", fadet die dazugehörige LED an PB4 (OC1B) gar nicht mehr. Soweit mir bekannt ist, hat Bascom ein Problem mit den Attinys 25/45/85 bezüglich der Timer1, da sie hier nur als 8-Bit Timer ausgeführt sind.
Leider erschließt sich mir nicht genau, welche Register ich setzen muss, damit Timer1 richtig funktioniert.
BASCOM-Quellcode
- $regfile = "attiny45.dat"
- $crystal = 8000000
- '$sim
- Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up 'Clear Down funktioniert
- Config Timer1 = Pwm , Prescale = 1 , Compare B Pwm = Clear Up 'Clear Down funktioniert NICHT?
- Dim I As Byte
- Dim D As Integer
- Ddrb = &B00010001 'PB0 und PB4 werden Ausgänge, der restliche Port A bleibt Eingang
- Do
- For I = 5 To 127 'Hochfaden der LED ...
- D = I
- D = D * D
- D = D / 64
- Pwm0a = D
- Pwm1b = D
- Waitms 10
- Next I
- Waitms 2000 'Pause nach dem Hochfaden
- For I = 127 To 5 Step -1 'Runterfaden der LED
- D = I
- D = D * D
- D = D / 64
- Pwm0a = D
- Pwm1b = D
- Waitms 10
- Next I
- Waitms 100 'Pause nach dem Runterfaden
- Loop
- End