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

[Atmega8] Atmega8, Bascom - RTC nie aktualizuje czasu, jak skonfigurować Timer2?

yokoon 02 Kwi 2013 10:11 5952 31
  • #1 12142926
    yokoon
    Poziom 29  
    Próbuję zrobić zegar RTC, podłączyłem kwarc 32,768 kHz pod piny 9=10 (OS1-OS2). Wyświetlacz 16*1a. Kod z książki Pana Wiązani, niestety nie pracuje. Wyświetla godzinę i datę wpisaną do programu i stoi. Instrukcja Config Timer2 niestety nie pomaga. Gdzie jest błąd. Mikrokontroler działa na wewnętrznym 1 MHz.
    Nie nie wiem jak umieścić kod.

    Kod:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #2 12144567
    Rokita1993
    Poziom 19  
    Czemu korzystasz z timer2 jako counter ?
    Zrób to na CTC na timer 2 a kwarc podłączyć jako zwykły.

    W takim układzie Wszystko działa na wewnętrznym oscylatorze a do zegara dochodza impulsy z kwarcu zegarkowego.

    Pozbadz się instrukcji
    Config timer2 = counter

    a kwarc podłącz pod xtal

    Pozdrawiam
  • #3 12144650
    yokoon
    Poziom 29  
    Timer2 umieściłem tylko dla próby, po usunięciu dalej nie działa.
    Tak jak napisałem kod jest z książki i myślałem, że jest sprawdzony.
    Kwarc podłączyłem tak jak piszesz, mikrokontroler działa na wewnętrznym 1 MHz.
    Zmieniałem też na 8 MHz.
  • #5 12144814
    Rokita1993
    Poziom 19  
    Kolejna sprawa to na co ci te dwie instrukcje
    lowerline
    locate 2,1
    jedną wystarczy.
    ja korzystalem z tego kodu modyfikujac go do wyświetlania czasu na 7-seg i wszystko działało jak należy.
  • #6 12144920
    yokoon
    Poziom 29  
    Tak CKOPT=0
    Lowerline może nie potrzebna ale na wyświetlaniu nic nie zmienia.
    Wyświetla czas a obok datę ale te które wpisane w programie.
    Lowerline usunąłem.
  • #8 12145674
    yokoon
    Poziom 29  
    dondu napisał:
    Podaj jakie masz wartości hexadecymalne fusebitów.


    Fusebits - C4
    Fusebits High - D9
  • #10 12146543
    yokoon
    Poziom 29  
    dondu napisał:
    Sprawdzałeś jakie ustawienia dają takie fusebity?


    Jeżeli chodzi o $crystal to mam ustawione w programie i Fuse 8000000 Hz.
    Próbowałem też z 1000000 Hz w listingu który podałem było 1000000 Hz.

    Fusebits - C4
    Fusebits High - D9



    CKOPT tez zmieniałem.
    Kwarc 32.768 podmieniałem.
  • #12 12146894
    yokoon
    Poziom 29  
    dondu napisał:
    Jeśli dobrze widzę, w programie masz 1MHz + timer 2 w trybie asynchronicznym z kwarcem 32kHz.
    Jeżeli tak, to ustaw:
    low: E1
    high: C9


    Napisałem w ostatnim poście iż mam ustawione po 8 MHz (oscylator wewnętrzny) i kwarc 32kHz.
  • #13 12146927
    dondu
    Moderator na urlopie...
    yokoon napisał:
    Napisałem w ostatnim poście iż mam ustawione po 8 MHz (oscylator wewnętrzny) i kwarc 32kHz.

    A ja zapytałem cię gdy podałeś C4 i D9:

    dondu napisał:
    Sprawdzałeś jakie ustawienia dają takie fusebity?

    Bo nie są to ustawienia, ani dla 1MHz, ani dla 8MHz, ani CKOPT.
  • #14 12147026
    yokoon
    Poziom 29  
    Takie fusebity są w zakładce "Lock and Fuse Bits" przy 8MHz (init RC osc) CKOPT=1.
  • #16 12147208
    yokoon
    Poziom 29  
    Niestety ale nie wiem jak to zrobić.
  • #18 12147532
    Konto nie istnieje
    Poziom 1  
  • #19 12147540
    yokoon
    Poziom 29  
    Dondu i Emarcus dzięki za zainteresowanie się moim problemem.

    Porównałem ustawienia Fusebitów moich i kalkulatora.
    Hex fuse:
    moje C4 D9
    kalk E4 D9

    Ja używam programu "Bascom AVR" w zakładce Lock and Fuse Bits Jest mniej możliwości wyboru niż w kalkulatorze. Ale najważniejsze bity są takie same, tak uważam. Mam ustawione:
    - CKSEL 000100: int RC Osc 8MHz.
    - SPI0 enabled.
    - CKOPT = 1 mam zewnętrzne kondensatory przy kwarcu.

    Uważam, iż problem jest z kwarcami 32kHz pochodzą one z zegarków naręcznych.
    Być może nie pracują z mikrokontrolerami, sprawdzałem oscyloskopem nie widać żadnych przebiegów na końcówkach. Tak jak pisałem wcześniej LCD wyświetla mi czas i datę ale te wpisane w programie, nic się nie zmienia.
  • #20 12147760
    Milek79
    Poziom 15  
    Jakie dałeś kondensatory? Lepiej dać ckopt=0 i wywalić je stamtąd. Kwarce 32.768 pracują z mikrokontrolerami, nawet Timer 2 jest do tego przystosowany :)

    Dodano po 50 [minuty]:

    Nie znam się na bascomie ale spróbuj dodać linię: Config Timer2 = Timer , ASYNC = 1 , Prescale = 128
  • #21 12148088
    yokoon
    Poziom 29  
    Milek79 napisał:
    Jakie dałeś kondensatory? Lepiej dać ckopt=0 i wywalić je stamtąd. Kwarce 32.768 pracują z mikrokontrolerami, nawet Timer 2 jest do tego przystosowany :)

    Dodano po 50 [minuty]:

    Nie znam się na bascomie ale spróbuj dodać linię: Config Timer2 = Timer , ASYNC = 1 , Prescale = 128


    Kondensatory 24pF. CKOPT = 0 też próbowałem.
    ATmega8 podstawiona.

    Dzięki za podpowiedź, ale dalej to samo. Zrobiłem tak:
    Config Timer2 = Timer , Async = ON , Prescale = 128

    Tylko dlaczego /128 ?
    Ja próbowałem /1.

    Zastanawia mnie jeszcze jedna sprawa, dlaczego nie widać przebiegów na oscyloskopie ?
  • #22 12148989
    Milek79
    Poziom 15  
    yokoon napisał:
    Tylko dlaczego /128 ?

    Bo 32768kHz/128=256, co powoduje że impuls będzie generowany 256 razy na sekundę, a co tyle przepełnia się ośmiobitowy timer, więc przerwanie zostanie uruchomione co równą sekundę :)

    Co do przebiegów - też pewnie wina programu, timer nie został prawidłowo skonfigurowany i nie uruchamia kwarcu

    Dodano po 3 [minuty]:

    Jeszcze po "Enable Interrupts" dopisz linię(oczywiście musisz mieć też tą podaną wcześniej): Enable Timer2
  • #23 12149278
    yokoon
    Poziom 29  
    To jest program, który niestety mnie nie lubi.



    Kod: text
    Zaloguj się, aby zobaczyć kod

    Proszę o opis jak należy umieszczać listingi programów, nie mogę sobie z tym poradzić.
  • #25 12152496
    yokoon
    Poziom 29  
    Bardzo dziękuję wszystkim za podpowiedź, ale program nie działa.

    Dodano po 22 [minuty]:

    Milek79 napisał:
    Wybierasz z listy SYNTAX język basic4gl, i tam gdzie ustawił Ci się kursor wklejasz listing


    Po wybraniu SYNTAX wyświetla mi "
    Kod: text
    Zaloguj się, aby zobaczyć kod
    " czyli nie potrzebne wyrazy Syntax mam usunąć.
  • #27 12152739
    yokoon
    Poziom 29  
    Milek79 napisał:
    Nie, listing masz umieścić pomiędzy [ syntax=basic4gl] a [/syntax] i niczego nie usuwać :)


    Dzięki teraz rozumiem.

    Co do programu używałem wersji Bascoma:
    1.11.9.5
    1.11.9.8
    2.0.7.5
    w dalszym ciągu nie działa.

    Zapomniałem dodać, iż posiadam mikrokontroler Atmega8A, taką sygnaturę wyświetla kompilator.
  • Pomocny post
    #28 12156775
    jousto
    Poziom 17  
    Z tego co porównuję z listingiem źródłowym z książki to masz kilka błędów:
    sprawdź:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    oraz umiejscowienie
    Kod: text
    Zaloguj się, aby zobaczyć kod

    w pętli a u ciebie jest poza pętlą

    oraz wyrzuć konfigurację
    Kod: text
    Zaloguj się, aby zobaczyć kod


    sprawdź także ustawienia Fuse CKSEL3..0 na wartość 0100
  • #29 12158442
    Konto nie istnieje
    Poziom 1  
  • #30 12171260
    yokoon
    Poziom 29  
    Config Timera zrobiony.
    Niestety w dalszym ciągu nie działa.
    Ciekawe dlaczego autor tego cacka się nie odzywa ?
REKLAMA