Zastosowałem kwarc 16 MHz oraz zasilanie uP +5V.
Według poniższych wzorów odliczany czas powinien wynosić 1 sekundę, a niestety w przypadku b) i c) tak NIE JEST i w programie wynosi odpowiednio: około 2 i około 10 sekund. Tylko dla konfiguracji z pkt. a) jest okey. Gdzie jest problem? O co tu chodzi? Proszę o pomoc!
Oto tożsame wzory, z których obliczany czas powinien byc taki sam i wynosić 1 sekundę:
a) 16000000/64/250/1000 = 1 s
b) 16000000/64/125/2000 = 1 s
c) 16000000/64/25/10000 = 1 s
A oto testowy kod w Bascomie:
$regfile = "m8def.dat"
$crystal = 16000000
Config Pinc.1 = Output
Config Timer0 = Timer , Prescale = 64
On Timer0 Sekunda
Dim Jednostki_czasu As Word : Jednostki_czasu = 0
Enable Interrupts
Enable Timer0
Load Timer0 = 250
'Load Timer0 = 125
'Load Timer0 = 25
Dioda Alias Portc.1
Do
Loop
End
Sekunda:
Load Timer0 = 250
' Load Timer0 = 125
' Load Timer0 = 25
Incr Jednostki_czasu
If Jednostki_czasu = 1000 Then 'po 1 sekundzie - prawidłowo !!!
' If Jednostki_czasu = 2000 Then 'po ok. 2 sekundach ???
' If Jednostki_czasu = 10000 Then 'po ok. 10 sekundach ???
Jednostki_czasu = 0
Set Dioda
Waitms 1000
Reset Dioda
End If
Return
Dorzucam jeszcze ustawienie bezpieczników:
Według poniższych wzorów odliczany czas powinien wynosić 1 sekundę, a niestety w przypadku b) i c) tak NIE JEST i w programie wynosi odpowiednio: około 2 i około 10 sekund. Tylko dla konfiguracji z pkt. a) jest okey. Gdzie jest problem? O co tu chodzi? Proszę o pomoc!
Oto tożsame wzory, z których obliczany czas powinien byc taki sam i wynosić 1 sekundę:
a) 16000000/64/250/1000 = 1 s
b) 16000000/64/125/2000 = 1 s
c) 16000000/64/25/10000 = 1 s
A oto testowy kod w Bascomie:
$regfile = "m8def.dat"
$crystal = 16000000
Config Pinc.1 = Output
Config Timer0 = Timer , Prescale = 64
On Timer0 Sekunda
Dim Jednostki_czasu As Word : Jednostki_czasu = 0
Enable Interrupts
Enable Timer0
Load Timer0 = 250
'Load Timer0 = 125
'Load Timer0 = 25
Dioda Alias Portc.1
Do
Loop
End
Sekunda:
Load Timer0 = 250
' Load Timer0 = 125
' Load Timer0 = 25
Incr Jednostki_czasu
If Jednostki_czasu = 1000 Then 'po 1 sekundzie - prawidłowo !!!
' If Jednostki_czasu = 2000 Then 'po ok. 2 sekundach ???
' If Jednostki_czasu = 10000 Then 'po ok. 10 sekundach ???
Jednostki_czasu = 0
Set Dioda
Waitms 1000
Reset Dioda
End If
Return
Dorzucam jeszcze ustawienie bezpieczników: