Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega16][Bascom] Jak uruchomić zegar RTC w Bascomie.

08 Sie 2008 19:54 7181 17
  • Poziom 29  
    Witam.
    Szukam 2 dni i nic. Jakiś przykład kodu czy coś.
    Atmega 16, podłączony kwarc zegarkowy do TOSC1/2. Kod programu to:
    Code:

    $regfile = "m16def.dat"
    $crystal = 8000000                                          'Oscylator wewnętrzny
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
    Config Clock = Soft
    Config Date = Dmy , Separator = -
    Enable Interrupts

    Date$ = "01-09-08"                                          '1-szy września
    Time$ = "23:59:00"

    Do
    Cls
    Lcd Time$
    Waitms 100
    Loop

    No i nie rusza, wyświetla 23:59:00. Czy brak jakiejś instrukcji uruchamiającej timer2 ?
    Może ktoś podrzuci gotowy kodzik ?
    Z góry dzięki...

    Proszę w przyszłości używać tagów w tytule oraz znaczników [code] tam , gdzie jest to niezbędne.
    Tymczasem , temat poprawiłem.
    [zumek]
  • Poziom 24  
    A jak masz ustawione bity fuse CKSEL3..0? 0100?

    PS: Kod w znacznikach bedzie czytelniejszy! :D
  • Poziom 28  
    sparwdz czy napewno do odpowiednich pinow podlaczyles kwarc (Mam nadzieje ze nie dodales kondensatorow)
    kod jest ok.
    jak sie uprzesz to fusebitow tez nie musisz zmieniac (na fabrycznych tez powinno dzialac mimon ze napisales ze "$crystal = 8000000")
    Ja ci radze kupic nowy kwarc ostatnio mialem podobny problem i okazalo sie ze kwarc ktorego uzylem byl popsuty
  • Poziom 29  
    CKSEL3...0 = 0100 oczywiście ustawione dla 8MHZ. Kwarc podłączony do TOSC1/2. Jak skonfigurować te piny (PC6 i PC7) gdzie podłączony jest kwarc. Jako wejścia czy wyjścia a może wcale? Czy potrzebna jest jakaś instrukcja która ruszy TIMER2 ? Jak to zrobić w bascomie ? W "helpie bascoma" niestety tego nie ma.
  • Poziom 28  
    pisze tobie ze kod jest ok nie ustawiasz tych pinow.
    moje zdanie: kwarc masz rabniety
  • Poziom 29  
    wader_669 napisał:
    pisze tobie ze kod jest ok nie ustawiasz tych pinow.
    moje zdanie: kwarc masz rabniety

    OK.
    Sprubuję wymienić.
  • Poziom 29  
    Witam.
    Wymieniłem kwarc i nic, wymieniłem procesor i też nic. Zegar nie rusza.
    Jeśli kod jest OK to może coś z fuse-bitami?
  • Poziom 32  
    Ok ustawiles fuse bity... ale na zew. czy wew. 8MHz ;P :?:
  • VIP Zasłużony dla elektroda
    Sprawdź jak wygląda rejestr ASSR i czy jest ustawiony bit AS2. Dodatkowo poczytaj o "config timer2" ;)
  • Poziom 39  
    Do rejestru trafia wartość 8 zatem bit AS2 jest ustawiony. CONFIG TIMER2 jest zbędne w tym programie gdyż CONFIG CLOCK = SOFT sam ustawia ten licznik i jego przerwania.

    Code:
    7:        Config Clock = Soft
    
    +00000047:               ldi     r24, 0x08      ; set AS2 in ASSR
    +00000048:               out     ASSR, r24
    +00000049:               ldi     r24, 0x05      ; prescale 128
    +0000004A:               out     TCCR2, r24
    +0000004B:               in      r24, TIMSK
    +0000004C:               ori     r24, 0x40      ; enable TOVF2
    +0000004D:               out     TIMSK, r24
    9:        Enable Interrupts
    +0000004E:               sei                    ; set global interrupt flag


    Program w symulatorze BASCOM-a działa poprawnie - choć nie trzyma się czasów, taki urok symulacji.
  • Poziom 29  
    Właśnie że w symulatorze bascoma (wer. 1.11.7.4) też czas nie idzie?! Mam ustawiony wewnętrzny osc. 8MHZ czyli CLK3...0 = 0100 ale to nie istotne. Atmega16 może pracować z dwoma kwarcami zewnetrznymi (zegarkowym i systemowym) lub z zegarkowym i oscylatorem wewnętrznym jako zegar systemowy. Odnalazłem stronkę w wersji angielskiej, jest podobny programik i nie doszukałem się błędu. Co jest grane!!!, nie mam żadnego pomysłu.
    BTW.
    Korzystam z układu uruchomieniowego www.gotronik.pl (Moduł Uruchomieniowy AVR) na atmegę 16L. Na płytce jest błąd w opisie portu "C". Jest odwrotnie oznaczony. Jest 76543210 a ma być 01234567.

    Dodano po 3 [minuty]:

    crazy_phisic napisał:
    Sprawdź jak wygląda rejestr ASSR i czy jest ustawiony bit AS2. Dodatkowo poczytaj o "config timer2" ;)

    Czytałem, czytałem ale instrukcja Config Clock = soft załatwia wszystko automatycznie. Tak wiec Timera2 nie trzeba konfigurować.
  • Poziom 27  
    Szukaj raczej błedu w połączeniu, bo sam program jest OK - przed chwilą wgrałem na Atmega8 (jedynie zmieniałem deklaracje '$regfile') w zestawie uruchomieniowym EVBavr04 (Propox) i działa normalnie - czas jest odliczany.. Może gniazdo do obsadzenia kwarcu Ci coś nie łączy, bo jeśli uC nie ma połączenia z kwarcem zew. (zegarkowym) to właśnie "zamraża" odliczanie czasu...
  • Poziom 39  
    john_t napisał:
    Właśnie że w symulatorze bascoma (wer. 1.11.7.4) też czas nie idzie?!

    Pewnie nie włączyłeś opcji "Refresh variables" i "Sim Timers"...

    Podeślij plik HEX, sprawdzimy co tam kompilator wygenerował. Ja podsyłam swój z wer. 1.11.9.2. Wgraj i sprawdź czy działa.
  • Poziom 29  
    Dzięki za kod ZbeeGin , dziś po południu wgram i sprawdzę.
    Włączyłem "refresh variables" i "Sim Timers" i w symulatorze dalej czas stoi !!!? Co tam jeszcze nie tak z ustawieniami bascoma ? Pomyślałem sobie że jeżeli w bascomie nie idzie to i plik HEX jest tak skompilowany że w realu też nie idzie.
    Przesyłam mojego hexa do sprawdzenia.
  • Poziom 29  
    Zainstalowałem wersję 1.11.9.0 i w symulatorze zegar działa. W wersji 1.11.7.4 przy tych samych ustawieniach NIE działa. Może to jest TO!!! Sprawdzę po południu na atmedze.
  • Poziom 17  
    john_t napisał:
    Zainstalowałem wersję 1.11.9.0 i w symulatorze zegar działa. W wersji 1.11.7.4 przy tych samych ustawieniach NIE działa. Może to jest TO!!! Sprawdzę po południu na atmedze.


    Już kiedy był poruszany ten problem odnośnie wersji Bascoma.
    Link
  • Poziom 39  
    Odnośnie HEX-a z wersji 1.11.7.4 to sprawa wygląda następująco:
    1. Konfiguracja przerwań i licznika Timer2 przebiega prawidłowo. Kod nie różni się od tego jaki występuje w 1.11.9.2 (przytoczony wyżej)
    2. Wewnętrzne zmienne: _sec, _min, _hour, _day, _month, _year są aktualizowane w każdym przerwaniu. RTC zatem chodzi w tle.
    3. Zmienne Time$, Date$ są aktualizowane... ale raz na 28 sekund z powodu bardzo dziwnych, długich pętli opóźniających w obsłudze wyświetlacza LCD.
  • Poziom 29  
    Witam.
    Problem rozwiązany. Przyczyną było złe oznaczenie portów na płytce testowej układu uruchomieniowego. Miernik i PDF procesora i sprawa wyjaśniona. Zegar ruszył bez problemów. Pozostaje kwestia nie działania zegara w symulatorze bascoma w wersji 1.11.7.4.
    Dzięki wszystkim za zainteresowanie tematem. Temat zamykam.