logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Obrotomierz na 90s2313 i wyświetlaczach led - błędny program

shadowxxz 20 Lut 2009 15:16 1711 4
REKLAMA
  • #1 6178497
    shadowxxz
    Poziom 11  
    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...
    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
  • REKLAMA
  • #2 6178594
    mirekk36
    Poziom 42  
    shadowxxz napisał:
    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...


    pierwsza porada - jak chcesz nauczyć się budować samochód to nie zaczynaj od budowy mercedesa klasy S

    innymi słowy mówiąc, skoro sam piszesz, że masz nikłe umiejętności - to zacznij od podstaw, miganie diodą led, klawisze a potem opanowanie kolejnych bloków funckjonalnych procka tak aby samemu pisać programy a nie na ślepo klecić jakieś dziwolągi - potem wklejać je całe na forum i pytać co w nich jest nie tak? , a najlepiej, żeby może ktoś za ciebie to napisał

    pozdrówka
  • REKLAMA
  • #3 6178602
    shadow0013
    Poziom 34  
    Nie znam się na programowaniu, ale mnie liczenie impulsów ruszyło dopiero po wymianie Timer1 = 0 na Counter1 = 0.
  • REKLAMA
  • #4 6178788
    Konto nie istnieje
    Poziom 1  
  • #5 6184811
    Konto nie istnieje
    Poziom 1  
REKLAMA