Goblin
21.12.2008, 22:24
Ich versuche mich gerad an der Simulation einer Kerzenflamme. Basis dafür ist natürlich ein Software-PWM. Ich habe mit dem RN-AVR-Tool den passenden Prescaler und Startwert für den Timer0 (8-Bit) errechnet und diesen in mein Programm eingetragen. Trotzdem flimmert das PWM. Nicht nur ein wenig, sondern extrem. Bei PWM-Werten von >50 ist so eine Art Blinken im Millisekundenbereich zu sehen. Irgendwas scheint da faul zu sein. Hier mein Code:
$regfile = "ATtiny2313.dat"
$crystal = 1000000
Config Timer0 = Timer , Prescale = 1
Config Portd = Output
On Timer0 Timer_irq
Enable Timer0
Enable Interrupts
Led_g Alias Portd.4
Dim Pwm1 As Byte
Dim Pwm_cnt As Byte
Dim Green As Bit
Const Timervorgabe = 246
Pwm1 = 100
Do
Loop
Timer_irq:
Timer0 = Timervorgabe
Green = 0
If Pwm1 > Pwm_cnt Then Green = 1
Led_g = Green
Incr Pwm_cnt
Return
Sieht jemand nen Programmierfehler?
$regfile = "ATtiny2313.dat"
$crystal = 1000000
Config Timer0 = Timer , Prescale = 1
Config Portd = Output
On Timer0 Timer_irq
Enable Timer0
Enable Interrupts
Led_g Alias Portd.4
Dim Pwm1 As Byte
Dim Pwm_cnt As Byte
Dim Green As Bit
Const Timervorgabe = 246
Pwm1 = 100
Do
Loop
Timer_irq:
Timer0 = Timervorgabe
Green = 0
If Pwm1 > Pwm_cnt Then Green = 1
Led_g = Green
Incr Pwm_cnt
Return
Sieht jemand nen Programmierfehler?