Witam.
Korzystając z płytki testowej zaprogramowałem układ AT90S2313 tak by pełnił funkcje najprostszego zegara i tak sie stało. Jednak gdy to samo chciałem zrobić z układem ATTINY2313 korzystając z tego samego kodu układ odmówił posłuszeństwa, a konkretnie obraz zaczął migać i czas był opóźniony o kilka sekund. Można to zrobić zwiększając częstotliwość przerywań ale nie jestem pewien czy nie zmieni to dokładności. Proszę o odpowiedzi dlaczego ten sam kod nie działa w AT90... i w ATTINY oraz czym te dwa układy się różnią. Pozdrawiam Artur.
Korzystając z płytki testowej zaprogramowałem układ AT90S2313 tak by pełnił funkcje najprostszego zegara i tak sie stało. Jednak gdy to samo chciałem zrobić z układem ATTINY2313 korzystając z tego samego kodu układ odmówił posłuszeństwa, a konkretnie obraz zaczął migać i czas był opóźniony o kilka sekund. Można to zrobić zwiększając częstotliwość przerywań ale nie jestem pewien czy nie zmieni to dokładności. Proszę o odpowiedzi dlaczego ten sam kod nie działa w AT90... i w ATTINY oraz czym te dwa układy się różnią. Pozdrawiam Artur.
Dim Mili As Byte
Dim Mili1 As Byte
Dim Jedmin As Byte
Dim Dziemin As Byte
Dim Jedh As Byte
Dim Dzieh As Byte
Dim Ktory As Byte
Dim Minz As Byte
Dim Hz As Byte
Config Portb = 255
Portb = 255
Config Portd = 124
Portd = 127
Config Timer0 = Timer , Prescale = 64
Enable Interrupts
Enable Timer0
Jedmin = 0
Dziemin = 0
Jedh = 0
Dzieh = 0
On Timer0 Co4ms
Do
Loop
End
Co4ms:
Timer0 = 6
If Pind.1 = 0 Then 'początek zmiany minuty
If Minz = 0 Then
Minz = 1
Incr Jedmin
If Jedmin = 10 Then
Jedmin = 0
Incr Dziemin
If Dziemin = 6 Then Dziemin = 0
End If
End If
Else
Minz = 0
End If 'koniec zmiany minuty
If Pind.0 = 0 Then 'zmiana godzin
If Hz = 0 Then
Hz = 1
Incr Jedh
If Dzieh = 2 And Jedh = 4 Then
Dzieh = 0
Jedh = 0
Else
If Jedh = 10 Then
Jedh = 0
Incr Dzieh
If Dzieh = 10 Then Dzieh = 0
End If
End If
End If
Else
Hz = 0
End If 'koniec zmiany godzin
Incr Mili
If Mili = 250 Then
Mili = 0
Incr Mili1
If Mili1 = 60 Then
Mili1 = 0
Incr Jedmin
If Jedmin = 10 Then
Jedmin = 0
Incr Dziemin
If Dziemin = 6 Then
Dziemin = 0
Incr Jedh
If Dzieh = 2 And Jedh = 4 Then
Dzieh = 0
Jedh = 0
Else
If Jedh = 10 Then
Jedh = 0
Incr Dzieh
If Dzieh = 10 Then Dzieh = 0
End If
End If
End If
End If
End If
End If
Incr Ktory
If Ktory = 4 Then Ktory = 0
Portd = 127
Select Case Ktory
Case 0:
Portb = Lookup(jedmin , Tabela)
Portd.3 = 0
Case 1:
Portb = Lookup(dziemin , Tabela)
Portd.4 = 0
Case 2:
Portb = Lookup(jedh , Tabela)
Portd.5 = 0
Portb.7 = 0
Case 3:
Portb = Lookup(dzieh , Tabela)
Portd.6 = 0
End Select
Return
Tabela:
Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144