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

transfer projektu Bascom Atmega8 > Atmega48

vihajster 12 Lis 2010 13:07 2192 10
  • #1 8734065
    vihajster
    Poziom 12  
    Witam!
    Mam dopracowany, działający projekt na Atmega8 i chcę go przenieść
    na Atmega48. Pamięci wystarczy, projekt zajmuje 3,2kB.
    Procesory są pinowo zgodne, więc wydaje się to łatwe.
    Program napisany jest w Bascomie AVR.
    Taktowanie wewnętrznym generatorem RC.
    Wszystkie fusy ustawione fabrycznie, bez zmian.
    Czy mogą pojawić się jakieś niespodzianki?
    Czy mogę liczyć, że program w nowym procesorze zadziała idnetycznie?
    Pozdrawiam
  • #3 8734479
    vihajster
    Poziom 12  
    Zapoznałem się z proponowanym materiałem.
    Informacje tam zawarte sprowadzają się do
    propozycji: poczytaj sobie dokumentację
    i porównaj, czym się różnią.
    Bardzo przepraszam, ale jeśli byśmy wszyscy mieli
    tylko tego rodzaju "porady", to to forum (i wiele innych)
    byłoby zbędne. Wystarczyłyby wtedy tylko pdf-y.
    Procesor atmega 48/88/168/328 jest rozszerzeniem
    atmegi 8, tak przynajmniej się wydaje, jest bogatszy
    w możliwości. Więc przejście z 8 na 48 nie wydaje się
    być tak całkiem nierealne. Chyba ma to sens?
    Jeśli ktoś dokonał takiego transferu, to proszę o
    podzielnie się swoim doświadczeniem w tym zakresie.
    Za "porady" jak w poście powyżej serdecznie z góry dziękuję.
    Pozdrawiam
  • #4 8734637
    arnoldziq
    VIP Zasłużony dla elektroda
    Drogi kolego.
    Zadałeś pytanie : czy mój program można przenieść z Atmega8 na Atmega48, prawda ?
    Otrzymałeś jedyną odpowiedź jaką w takim przypadku mogłeś otrzymać!

    Nie zamieściłeś kodu...
    Nie napisałeś czy program używa UART-u, a może 2-ch...
    Nie napisałeś ile program potrzebuje pamięci na operacje...
    Nie napisałeś nawet co program robi.

    Jeżeli twój program ma mrugać jedną diodą, to powiem : możesz sobie za pomocą obu uC pomrugać swoją diodą w ten sam sposób.
    Jeżeli jest to coś bardziej skomplikowanego, to przy twoim opisie, nikt nie zna na twoje pytanie odpowiedzi.

    vihajster napisał:
    Procesor atmega 48/88/168/328 jest rozszerzeniem
    atmegi 8

    Nic bardziej mylnego! Popatrz chociażby, we wspomnianych już PDF-ach, na rozmiary dostępnej pamięci FLASH/SRAM/EEPROM w obu uC.

    Wiem, że jesteś niechętny czytaniu PDF-ów, ale tan jest dość ciekawy.
    Jest to dokument opisujący przejście z ATmega8 na ATmega88 (starszego brata ATmega48). Poczytaj i zobacz jakie problemy możesz napotkać, poza oczywistymi różnicami w rozmiarach pamięci 8-ki i 48-ki.
    AVR094: Replacing ATmega8 by ATmega88
  • #5 8734687
    Konto nie istnieje
    Poziom 1  
  • #6 8734882
    vihajster
    Poziom 12  
    Szanowni Panowie!
    Mam prośbę, skupmy się na sednie problemu.
    Atmel wyraźnie wskazuje, że atmegę8 można zastąpić atmegą88.
    Przygotował stosowną notę, w której opisuje związane z tym problemy,
    link do noty został uprzejmie podany w jednym z wcześniejszych postów.
    Ja rozumiem, że procesory nie są idnetyczne, ale
    ... proszę o uwagę ...
    napisałem w moim pytaniu o projekcie w BASCOMIE.
    A więc zadam pytanie raz jeszcze, trochę inaczej:
    Czy zdaniem Panów (a może ktoś to już próbował i ma jakieś doświadczenia
    i wnioski) kompilator Bascoma skompiluje poprawnie dla atmegi48/88/168
    program, który był napisany dla Atmegi8 ?
    Pytanie dotyczy więc chyba bardziej Bascoma, niż szczegółów budowy
    atmegi8 i 88, tak mi się wydaje?
    Kilka szczegółów:
    Procesor pracuje z wewnętrznym generatorem 1MHz,
    wykorzystane są INT1 i przerwanie od Timer0,
    tryb PowerDown i Idle. Timer0 generuje przerwanie co
    ok. 20ms do sterowania 7 segmentowym LCD. Co
    pewien czas procesor jest usypiany (Idle) dla
    oszczędzania energii lub mocno usypiany (PowerDown),
    i potem jest budzony sprzętowym Resetem.
    Ale nie chciałbym ograniczać problemu tylko do
    tych szczegółów, może ktoś ma również inne
    ciekawe wnioski w tym temacie , czyli
    "transfer projektu Bascom z Atmega8 na Atmega48/88/168".
    Pozdrawiam
  • #7 8734925
    janbernat
    Poziom 38  
    Jedyna metoda to skompilować ten program dla ATmega48.
  • #8 8735139
    piotrva
    VIP Zasłużony dla elektroda
    z moich ogólnych wiadomości o BASCOM'ie i tych prockach wynika, że w większości przypadków migracja powinna być bezbolesna, gdyż ten IDE zajmie się większością różnic (uwaga, w niektórych uP w BASCOM'ie skopana jest obsługa Timera0 i trzeba ręcznie ustawiać Tccr0b).
    Najlepszym sposobem będzie jednak sprawdzenie tego w praktyce i kupienie oraz zaprogramowanie kostki, co chyba nie będzie zbyt dużym wydatkiem i nakładem pracy, a będziesz miał 100% pewności
  • #9 8735642
    vihajster
    Poziom 12  
    Witam,
    cieszy mnie ta odpowiedź, oczywiście że procki już zamówiłem i
    będę ćwiczył ten problem, ale w międzyczasie chciałem zasięgnąć
    opinii u kogoś, kto być może coś podobnego robił.
    Ponieważ timery bedę używał, to może poproszę o cos więcej
    w sprawie problemów z timerami w bascomie?
    Pozdrawiam
  • #10 8737949
    ZbeeGin
    Poziom 39  
    vihajster napisał:
    Ponieważ timery bedę używał, to może poproszę o cos więcej
    w sprawie problemów z timerami w bascomie?

    Niestety jest to temat rzeka. I miejsca w bazie danych by nie starczyło na wyczerpujące wyjaśnienia.
  • #11 9734514
    vihajster
    Poziom 12  
    Witam ewentualnych czytelników tego tematu.
    Zamykam temat, jako że problem rozwiązałem.
    Obsługa timerów została poprawnie zrealizowana po
    skompilowaniu projektu w Bascomie dla procesora Atmega48,
    Jedynie przy obsłudze przerwań pojawił się problem.
    W moim programie była konieczność "ręcznego" kasowania
    flagi przerwania INT1 za pomocą instrukcji:
    SET GIFR.7 (tak było dla Atmega8)
    A Atmega48 inaczej są nazwane rejestry obsługujące przerwania i inaczej
    są rozmieszczone flagi, powyższe instrukcja została zmieniona na:
    SET EIFR.1 (dla Atmega48).
    I to wszystkie zmiany.
    Podsumowując, przechodząc z Atmega8 na Atmega48/88 itd. w Bascomie
    nie powinno być problemów, jeśli nie używamy bezpośredniego
    dostępu do rejestrów, których nazwy zostały w tych procesorach zmienione.
    Dodatkowo zmieniono położenie bitów w tych rejestrach, jak widać w moim
    przykładzie. Drobny problem pojawił się też przy programowaniu.
    Używałem procesorów Atmega48PV, mają one sygnaturę 1E920A i mój
    Bascom (ver. 1.11.9.2 - nie mam czasu zainstalować nowszej) nie
    rozpoznawał tego procesora, trzeba go było wybrać ręcznie z listy,
    ale sygnatura była poprawnie z procesora odczytywana.
    I to tyle, dziękuję za wskazówki, temat zamykam,
    pozdrawiam.
REKLAMA