Witam.
Chciałem zrobić sobie obrotomierz z wyświetlaczem led na procku AVR. Przeszukując sieć nie natrafiłem na nic takiego, jedynie na elektrodzie jest coś podobnego, tylko na wyższym modelu procka i dodatkowo skomplikowany
https://www.elektroda.pl/rtvforum/topic372068.html
Korzystając z tego i mojej nikłej umiejętności skleciłem program. Podczas pracy wyświetlają się tylko 0 i nie ma reakcji na podawanie impulsów na port d.5.
Proszę o rady i modyfikacje, które pozwolą uruchomić układ...
Chciałem zrobić sobie obrotomierz z wyświetlaczem led na procku AVR. Przeszukując sieć nie natrafiłem na nic takiego, jedynie na elektrodzie jest coś podobnego, tylko na wyższym modelu procka i dodatkowo skomplikowany
https://www.elektroda.pl/rtvforum/topic372068.html
Korzystając z tego i mojej nikłej umiejętności skleciłem program. Podczas pracy wyświetlają się tylko 0 i nie ma reakcji na podawanie impulsów na port d.5.
Proszę o rady i modyfikacje, które pozwolą uruchomić układ...
Cytat:Config Portd = &B1111101
Portd = &B1111111
Config Portb = &B11111111
Portb = &B11111111
Config Timer0 = Timer , Prescale = 1024
Config Timer1 = Counter , Edge = Rising
Dim Secu As Integer
Dim Ff As Byte
Dim Freq As Long
Dim Tys As Byte
Dim Setk As Long
Dim Dzies As Byte
Dim Jedn As Byte
Dim Wysw As Byte
On Timer0 Licz_sekunda
On Timer1 Licz_freq
Enable Timer0
Timer0 = 106 'dla kwarcu 11,0592MHz
Enable Timer1
Enable Interrupts
Ff = 0 'zerowanie zmiennej przepelnienia timer1
Freq = 0 'zerowanie zmiennej podajacej czestotliwosc
Secu = 0 'zerowanie zmiennej przepelnienia timer0
Timer1 = 0 'zerowanie licznika impulsow
Start Timer1 'uruchomienie licznika impulsow
Start Timer0
Tys = Freq / 1000
Setk = Freq Mod 1000
Setk = Setk / 100
Dzies = Freq Mod 100
Dzies = Dzies / 10
Jedn = Freq Mod 10
Do
Waitms 5
Incr Wysw
If Wysw = 4 Then Wysw = 0
Select Case Wysw
Case 0:
Portb = Lookup(jedn , Tabela)
Portd.3 = 0
Case 1:
Portb = Lookup(dzies , Tabela)
Portd.4 = 0
Case 2:
Portb = Lookup(setk , Tabela)
Portd.2 = 0
Case 3:
Portb = Lookup(tys , Tabela)
Portd.6 = 0
End Select
Loop
Licz_sekunda:
Incr Secu 'liczenie ile petli zrobil timer0
Counter0 = Counter0 + 106 ' dla kwarcu 11,0592MHz
If Secu = 72 Then 'odliczanie petli timer0 dla 1 sekundy dla kwarcu 11,0592MHz
Stop Timer1 'zatrzymanie zliczania impulsow
Stop Timer0 'zatrzymanie zliczania czasu
Secu = 0 'zerowanie licznika petli timer0
Gosub Licz_freq2 'obliczenie badanej czestotliwosci
Timer0 = 0 'zerowanie timer0
Timer1 = 0 'zerowanie timer1
Start Timer1 'rozpoczecie zliczania impulsow
Start Timer0 'rozpoczenie zliczania czasu
End If
Return
Licz_freq:
Ff = Ff + 1 'jezeli timer1 przekroczy zakre to dodaj 1
Return
Licz_freq2:
Freq = Ff * 65536 'ile petli zrobil timer1
Ff = 0 'w koncu gdzies trzeba wyzerowac
Freq = Freq + Timer1
Freq = Freq * 60 'dodanie nie pelnego cyklu timera 1
Return
End
Tabela:
Data 192 , 249 , 164 , 176 , 156 , 146 , 130 , 248 , 128 , 144