Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Attiny2313 i spieszący się zegar

krzysiekj18 26 Dec 2007 10:33 1462 9
  • #1
    krzysiekj18
    Level 19  
    Witam
    Ostatnio zająłem się nauką programowania procesorów i postanowiłem napisać program zegara. I oto i on

    Code:

    Ddrd = &B1111100
    Portd = 127
    Ddrb = 255
    Portb = 255


    Config Timer0 = Timer , Prescale = 64
    Enable Interrupts : Enable Timer0
    On Timer0 Zegar
    Dim Liczsek As Word , Liczsekz As Byte , Liczwys As Byte
    Dim Setmin As Byte , Dziemin As Byte , Setgodz As Byte , Dziegodz As Byte
    Dim Ktwy As Byte
    Setmin = 1 : Dziemin = 2 : Setgodz = 1 : Dziegodz = 2

    Do : Loop : End



    Zegar:
    Timer0 = 131
    Incr Liczsek
    Incr Ktwy
    Gosub Porgzegara
    Gosub Progwysw
    Return

    Porgzegara:
    If Liczsek = 500 Then
    Incr Liczsekz
    Liczsek = 0
    If Liczsekz = 60 Then
    Incr Setmin
    Liczsekz = 0
    End If
    If Setmin = 10 Then
    Incr Dziemin
    Setmin = 0
    End If
    If Dziemin = 6 Then
    Incr Setgodz
    Dziemin = 0
    End If
    If Setgodz = 10 Then
    Incr Dziegodz
    Setgodz = 0
    End If
    If Dziegodz = 3 Then
    Dziegodz = 0
    End If
    If Setgodz = 5 And Dziegodz = 2 Then
    Setgodz = 0
    Dziegodz = 0
    End If
    End If
    Return

    Progwysw:
    If Ktwy = 4 Then
    Ktwy = 0
    End If
    Portd = 127
    Select Case Ktwy
    Case 0:
    Portd.3 = 0
    Portb = 255
    Portb = Lookup(setmin , Tabela)
    Case 1:
    Portd.4 = 0
    Portb = 255
    Portb = Lookup(dziemin , Tabela)
    Case 2:
    Portd.5 = 0
    Portb = 255
    Portb = Lookup(setgodz , Tabela)
    Gosub Migkrop
    Case 3:
    Portd.6 = 0
    Portb = 255
    Portb = Lookup(dziegodz , Tabela)
    End Select
    Return

    Migkrop:
    If Liczsek > 250 Then
    Toggle Portb.7
    End If
    Return

    Tabela:
    Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144


    I napotkałem na pewien problem otóż zegar który przedstawiłem powyżej śpieszy się mniej więcej o jakieś 1,8 sek na minutę. Dodam jeszcze że jest on taktowany kwarcem 4MHz.
    Czy może mi ktoś powiedzieć po jakiej stronie leży problem.
    Czy jest on w samej strukturze programu ( jest on napisany w Bascom avr), czy też jest to wina np. ewentualnie uszkodzonego kwarcu ???
  • Helpful post
    #2
    kamyczek
    Level 38  
    Odepnij kwarca i zobacz czy dalej działa jeśli tak procesor dziala na wewnętrznym oscylatorze rc ,
    jeśli nie to ustaw pułapki w symulatorze i sprawdz czy przerwania występują dokładnie co określiny czas .
  • #3
    krzysiekj18
    Level 19  
    Zgodnie z radą odpiołem kwarc od procesora i porcesor nadala działa.
    Więc czy Mógłbyś napisać jak teraz przełączyć procesor z oscylatora rc na zewnętrzny kwarc ???
  • Helpful post
    #4
    kamyczek
    Level 38  
    Konfiguracja oscylatora jest wykonywania przy programowaniu fusebitów odpowiadaja za nią bity cksel zerknij do dokumentacji procesorka i zwróc tylko uwagę że bit zaprogramowany ma wartość zero i czasami programatory pokazują to odwrotnie więc zanim coś zmienisz odczytaj jak pokazuje obecną konfigurację masz ustawiony internar rc oscylator ...
  • #5
    krzysiekj18
    Level 19  
    No i właśnie chyba za bardzo się pośpieszyłem i spróbowałem na własną rękę skonfigurować te ustawienia za pomocą programatora zawartego w Bascomie avr, no i niestety teraz procesor jest zablokowany i programator go nie widzi.
    Czy Wiesz może czy istnieje jakiś sposób aby odblokować taki procesor jeżeli używa się programatora ZL2PRG ( STK200/STK300).
  • #7
    krzysiekj18
    Level 19  
    Problem w tym że kwarc mam podłączony a pogramator i tak nie widzi porcesora.
  • Helpful post
    #8
    korneliusz
    Level 16  
    Zamiast kwarcu musisz podłączyć zewnętrzny generator. W większości przypadków wystarcza prosty układzik na NE555, aby ożywić AVR.
  • #9
    krzysiekj18
    Level 19  
    Aha mam jeszcze jedno pytanko odnośnie podłączenia generatora a mianowicie w jaki sposób mam go podłączyć wystarczy że podłacze go do złącza XTAL1 a złącze XTAL2 podłącze do masy, czy też musi być on podłączony do obu tych złącz.
    I jeszcze jedno czy w momencie gdy będzie on podłączony muszę odłączyć kwarc , czy też może on być podłączony???
  • Helpful post
    #10
    kamyczek
    Level 38  
    Lepiej żeby go nie było tylko generator jeśli nie chce ci sie robić generatorka można podpiąć generator ze starej płyty komputerowej taka metalowa puszeczka zailasz ja z 5V i masz wyście generatorka podpinasz zgodnie z pdfematmela