Witam,
Mam taki kod: (dokładnie on jest użytkownika manekinen)
Mniej więcej wiem w jaki sposób jest rozwiązany PWM.
Mając taki kod, dioda powoli się rozjaśnia, i gdy świeci już na maxa, szybko gaśnie i znowu się rozjaśnia.. i tak w kółko.
Chciałbym się dowiedzieć w jaki sposób można policzyć czas w którym wypełnienie osiągnie wartość 255(czyli dioda będzie świecić pełną mocą)
; czas od wyłączenia diody do jej max. świecenia
Myślałem, że to zależy od tego:
Do
Waitms 20
Incr B
Loop
Dokładnie od polecenia Waitms 20, bo za każdym razem jest zwiększane B, i gdy dojdzie do 255 (to wtedy ma max wartość)
Lecz zrobiłem sobie testy:
Że na wyświetlaczu wyświetlam wartość B,
i jak się okazało, jeśli zamienię
Config Timer0 = Timer , Prescale = 1
na
Config Timer0 = Timer , Prescale = 8
to wartość B zmienia się szybciej!
Dlaczego tak się dzieje?
Przecież działanie programu, powinno być takie samo.
waitms 20, powinno być za każdym razem 20ms,
Mam taki kod: (dokładnie on jest użytkownika manekinen)
$regfile = "attiny2313.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Portd.6 = Output
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portd.1 , Rs = Portd.0
Config Timer0 = Timer , Prescale = 1
Enable Timer0
On Timer0 Software_pwm
Enable Interrupts
Dim B As Byte
Dim Reference As Byte
Do
Cls
Lcd B
Waitms 20
Incr B
Loop
Software_pwm:
Incr Reference
If Reference < B Then
Set Portd.6
Else
Reset Portd.6
End If
Return
Mniej więcej wiem w jaki sposób jest rozwiązany PWM.
Mając taki kod, dioda powoli się rozjaśnia, i gdy świeci już na maxa, szybko gaśnie i znowu się rozjaśnia.. i tak w kółko.
Chciałbym się dowiedzieć w jaki sposób można policzyć czas w którym wypełnienie osiągnie wartość 255(czyli dioda będzie świecić pełną mocą)
; czas od wyłączenia diody do jej max. świecenia
Myślałem, że to zależy od tego:
Do
Waitms 20
Incr B
Loop
Dokładnie od polecenia Waitms 20, bo za każdym razem jest zwiększane B, i gdy dojdzie do 255 (to wtedy ma max wartość)
Lecz zrobiłem sobie testy:
Że na wyświetlaczu wyświetlam wartość B,
i jak się okazało, jeśli zamienię
Config Timer0 = Timer , Prescale = 1
na
Config Timer0 = Timer , Prescale = 8
to wartość B zmienia się szybciej!
Dlaczego tak się dzieje?
Przecież działanie programu, powinno być takie samo.
waitms 20, powinno być za każdym razem 20ms,