Здравствуйте!
Помогите пожалуйста разобраться с настройкой. Собираю реле времени для управления насосом. Под рукой была AtTiny13.
Вопросы:
1. не работает пределитель;
2. если я правильно понял кол-во переполнений считается так: время ожидания / ( 1/частота*255).
Тогда почему расчитанное кол-во переполнений сильно не совпадает с
реальным (железку уже собрал). Например: необходимо ожидать 5 минут до
включения таймера. расчет показывает, что надо ожидать 300 /
(1/4800000*255) = 5647058 переполнений таймера. Но когда я
запрограммировал микроконтроллер с этой цифрой то так и не дождался его
срабатывания. реальное кол-во прерываний для 5 минут ожидания составляет
примерно 450000. почему такая разница, где я ошибся в программе.
Спасибо
Код
$regfile = "attiny13.dat"
$crystal = 4800000
$hwstack = 8
$swstack = 16
$framesize = 32
Config Pinb.3 = Output
Config Pinb.4 = Output
Config Pinb.1 = Input
Config Pinb.2 = Input
Config Timer0 = Timer ', Prescale = 256
Enable Timer0
'Stop timer0
Dim I As Long
Start Timer0
Do
Incr I
'-------------- 8 : 3 ------------
If Portb.1 = 0 And Portb.2 = 0 Then
If I = 560000 Then
Set Portb.3
Set Portb.4
End If
If I = 3654000 Then
Reset Portb.3
Reset Portb.4
I = 0
End If
End If
'-------------- 10 : 5 ------------
If Portb.1 = 0 And Portb.2 = 1 Then
If I = 3305000 Then
Set Portb.3
Set Portb.4
End If
If I = 4957000 Then
Reset Portb.3
Reset Portb.4
I = 0
End If
End If
'-------------- 20 : 8 ------------
If Portb.1 = 1 And Portb.2 = 0 Then
If I = 6615000 Then
Set Portb.3
Set Portb.4
End If
If I = 9268000 Then
Reset Portb.3
Reset Portb.4
I = 0
End If
End If
'-------------- 30 : 10 ------------
If Portb.1 = 1 And Portb.2 = 1 Then
If I = 9930000 Then
Set Portb.3
Set Portb.4
End If
If I = 13235000 Then
Reset Portb.3
Reset Portb.4
I = 0
End If
End If
Loop
End
PS: 8 : 3 это 8 минут ожидаем до включения, 3 минуты держим включенным и выключаем