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

Atmega644 Bascom AVR - programowanie i kompilacja - kłopoty

t_tom 02 Sty 2011 16:23 3743 10
REKLAMA
  • #1 8947535
    t_tom
    Poziom 12  
    Napisałem programik zegarka zbudowanego na PCF-ie i wyświetlaczu LED sterowanym multipleksowo + sterowanie RC-5. Na ATmedze16 i ATmedze32 kompiluje się w Bascomie ok. Po zmianie procesora na ATmega644 (wstawieniu linijki $regfile = "m644def.dat") pojawiają się schody. Mam komunikat po kompilacji: "Error: 202 - .EQU not found, probably using functions that are not supported by the selected chip [TIMSK]". Gdzie mam szukać przyczyny i dlaczego takiego problemu nie ma z atmegami 16 i 32? Nadmieniam, iż nr linii w której jest błąd nic nie mówi, bo wskazuje na koniec programu. Czy ktoś wie w czym problem?
  • REKLAMA
  • #2 8947615
    mirekk36
    Poziom 42  
    ATmega644 ma inne nazwy wielu rejestrów, więc albo może się gdzieś odwołujesz do nich bezpośrednio w kodzie bascomicznym, albo natrafiłeś na kolejną "dziurkę" w bascomie albo może jednak warto w końcu zacząć pisać w C ? (to tylko taka luźna sugestia) ale wtedy nigdy nie spotkasz się z takimi niespodziankami.
  • #3 8947668
    Jaca
    Poziom 31  
    Jaką masz wersję BASCOM'a ?
  • REKLAMA
  • #4 8948755
    t_tom
    Poziom 12  
    1. W kodzie nigdzie nie odwołuje się bezpośrednio do rejestrów.
    2. Posiadana przeze mnie wersja Bascoma-AVR obsługuje ATmegę644 - jest to ver. 1.11.9.8
  • REKLAMA
  • #6 8949046
    t_tom
    Poziom 12  
    Już wiem co powoduje wyświetlanie komunikatu błędu. Jak zaremowałem wszystkie linijki treści: "Getrc5(address , Command)" - jest ok. TIMER0 jest wolny, tylko Getrc5 domyślnie z niego korzysta. Wykorzystuję jedynie TIMER2 do multipleksowania. Kod jest bardzo długi bo jest tam sporo zbędnych bajerów. Trudno będzie Wam w nim się doszukać błędu. Zrobiłem już to za Was. Wycinałem po kawałku fragmenty kodu i sprawdzałem błędy kompilacji. Na 100% błędy powoduje zapis dotyczący odbioru RC-5. Dlaczego Atmegi 16 i 32 się kompilują z Getrc5(address , Command), a 644 nie chce?

    Dodano po 8 [minuty]:

    Jestem na tropie... Zamienię Timery. Getrc5 dam na Timer2, a Timer2 do multipleksowania zamienię na Timer0. Chyba to zadziała. Wstępnie już przetestowałem i się kompiluje po zamianie Timera przy Getrc5.

    Dodano po 19 [minuty]:

    Wszystko jest ok. Program się pomyślnie skompilował, wgrałem do procka ATmega644 i zegarek śmiga. Nie wiem dlaczego dokładnie, ale prawdopodobnie różnice są sporo większe w budowie Atmegi32 czy ATmegi16 w stosunku do Atmegi644 niż tylko pojemności pamięci i dodatkowy USART. Reasumując: ATmega644 w Bascomie-AVR potrzebuje konfiguracji Getrc5 na Timerze2. Praktycznie zrobiłem tak: "Config Rc5 = Pind.2 , Timer = 2" i kompilacja ruszyła. Kolegom dziękuję za pomoc, temat uważam za zamknięty.
  • #7 8950017
    piotrva
    VIP Zasłużony dla elektroda
    Po prostu bascom ma takie problemy z niektórymi up, lepiej programować w c
  • REKLAMA
  • #8 8950040
    mirekk36
    Poziom 42  
    ATmega16/32 posiada np jeden rejestr TIMSK a ATmega644 już kilka takich rejestrów TIMSK0 itd.... i na tym już się Bascom wykłada. Być może nowsza wersja Bascoma potrafiłaby sobie z tym poradzić. Ale to nie są jedyna kwiatki niestety ... dlatego popieram w całej rozciągłości wypowiedź kolegi piotrva powyżej ;)
  • #9 9117568
    rjuda
    Poziom 10  
    Mam Pytnanie do T_tom
    Czy mógł byś podpowiedzieć nam w jaki sposób ustawiasz timer= 2 i wyjaśnić dokładnie o co chodzi w tym zagadnieniu.
  • #10 9118074
    piotrva
    VIP Zasłużony dla elektroda
    
    Config rc5 = Pinx.y, Timer=2
    
  • #11 10060475
    t_tom
    Poziom 12  
    Kolega piotrva odpowiedział koledze rjuda podając kod i o to właśnie chodzi. Natomiast kolega mirekk36 słusznie wyjaśnił powód takich problemów z tym mikrokontrolerem, za co jestem mu wdzięczny. Pozdrawiam i zamykam temat.
REKLAMA