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

ATmega 644P niekontrolowane resetowanie

Drako1988 05 Cze 2011 08:40 2686 16
REKLAMA
  • #1 9577758
    Drako1988
    Poziom 20  
    Witam szanownych kolegów

    Problem mój pojawił się przy próbie uruchomienia ATmegi 644P. Mianowicie, chcąc sprawdzić, czy mega w układzie działa poprawnie napisałem program w C, który nie robi nic poza wystawieniem zera na jeden z portów a tym samym zaświecenia diody podłączonej do tego portu.

    I tutaj problem, jeśli układ pracuje z wewnętrznym kwarcem to wszystko działa prawidłowo, natomiast po przełączeniu na kwarc zewnętrzny, układ jak by się ciągle restartował, tzn dioda miga zamiast świecić (miga z częstotliwością kilku Hz).

    Dodam, że to nie moje pierwsze spotkanie z ATmegą i pisałem już wiele programów na ten uC. Zewnętrzny kwarc ma częstotliwość 14745600 Hz. Watchdog nie ma raczej na to wpływu bo czy włączę czy wyłączę fusa od watchdoga to nic się nie zmienia.

    Dodam jeszcze, że np, dodanie obsługi przycisku(pooling na jednym z pinów) działa poprawnie. Poprawnie w tym sensie, że dodałem gaszenie diody po naciśnięciu przycisku i dioda faktycznie gaśnie po jego naciśnięciu natomiast miga po puszczeniu. Jeśli zamienię kolejność (naciśnięcie->świeci, puszczenie->nie świeci) to po naciśnięciu przycisku dioda również miga.

    Będę wdzięczny za udzielenie jakichkolwiek podpowiedzi.
    Pozdrawiam
  • REKLAMA
  • #3 9577868
    elektryk101
    Warunkowo odblokowany
    Pokaż schemat. Podłączyłeś 2 kondensatory od kwarcu do masy? Jest zasilanie części cyfrowej i analogowej procesora? Są kondensatory ok 100nF przyłączone do lini zasilania?
  • #4 9578272
    Drako1988
    Poziom 20  
    Jak mówiłem, kodu to tu w sumie nie ma

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Poniżej schemat, nie mam teraz dostępu do płytki, ale doczytałem się jeszcze, że zmasowana obudowa kwarcu może źle wpływać na jego pracę, tutaj tak jest ponieważ obudowa opiera się na polygonie dołączonym do masy.

    Schemat:
    ATmega 644P niekontrolowane resetowanie
  • #5 9578348
    elektryk101
    Warunkowo odblokowany
    Drako1988 napisał:

    ale doczytałem się jeszcze, że zmasowana obudowa kwarcu może źle wpływać na jego pracę, tutaj tak jest ponieważ obudowa opiera się na polygonie dołączonym do masy.

    Ja u siebie czasem podłączam obudowę kwarcu do masy i wszystko działa dobrze.
    Noga AVCC to zasilanie części analogowej, i podłącz ją bez tego rezystora bezpośrednio do zasilania. i daj kondensatory 100nF do szyny zasilania. Tylko pamiętaj, że te kondensatory muszą byc blisko procesora.
  • REKLAMA
  • #6 9578471
    tmf
    VIP Zasłużony dla elektroda
    To podłączenia AVCC przez rezystor to poważny błąd. Powinieneś je podłączyć bezpośrednio do zasilania, lub przez dławik. Sprawdź też kondensatory przy kwarcu i sam kwarc. Być może masz zimny lut, albo któryś z tych elementów jest uszkodzony. Masz też włączony fusebit CKOPT?
  • REKLAMA
  • #8 9578772
    Andrzej__S
    Poziom 28  
    tmf napisał:

    Masz też włączony fusebit CKOPT?

    Akurat ATmega644P nie ma fusebitu CKOPT (jak np. ATmega64). Full swing oscillator można ustawić za pomocą fusebitów CKSEL3..1

    Drako1988 napisał:

    Dodam jeszcze, że np, dodanie obsługi przycisku(pooling na jednym z pinów) działa poprawnie. Poprawnie w tym sensie, że dodałem gaszenie diody po naciśnięciu przycisku i dioda faktycznie gaśnie po jego naciśnięciu natomiast miga po puszczeniu. Jeśli zamienię kolejność (naciśnięcie->świeci, puszczenie->nie świeci) to po naciśnięciu przycisku dioda również miga.

    To by mi wyglądało na reset spowodowany spadkiem napięcia zasilającego w momencie zapalenia diody. Proponowałbym zastosować się do wskazówki kolegi tmf dotyczącej tego rezystora w szereg z AVCC, później sprawdzić wahania napięcia zasilającego (najlepiej oscyloskopem).

    Proponowałbym też, abyś podał dokładne ustawienia fusebitów (włącznie z extended, bo tam są ustawienia bodlevel).
  • #9 9578779
    Drako1988
    Poziom 20  
    Powiem tak, w tej konfiguracji mikrokontroler wcześniej w innej aplikacji działał bez problemu. Co do zimnego lutu to też raczej odpada, bo mam dwie płytki zmontowane i na obu jest to samo, ale sprawdzę. Czy włączę czy wyłączę bit WDTON to jest to samo (też moja pierwsza myśl to watchdog). Sprawdzałem na optymalizacji -Os i -O0. Z tego co pamiętam CKOPT wyłączony, ale czy źle zaprogramowany CKOPT może mieć takie skutki?

    Dodam, że dwa układy zachowują się identycznie. Co do rezystora na AVCC to jeśli to było by źle to na wewnętrznym kwarcu też raczej by nie działało. Poza tym, z tego co wiem to jeśli nie korzystam z analogowej części uP to AVCC nie jest do niczego potrzebne.

    Co do resetu po spadku napięcia, to BODEN wyłączone, też już to sprawdzałem, jutro będę dalej z tym walczył, bo teraz nie mam dostępu do tego układu.

    A, no i BODEN działało by tak samo przy wewnętrznym i zewnętrznym kwarcu, bo przecież dołączenie kwarcu nie zwiększa raczej zbytnio poboru mocy.
  • #11 9578797
    Andrzej__S
    Poziom 28  
    Atmel napisał:

    • Speed Grades
    – ATmega164P/324P/644PV: 0 - 4 MHz @ 1.8V - 5.5V, 0 - 10 MHz @ 2.7V - 5.5V
    – ATmega164P/324P/644P: 0 - 10 MHz @ 2.7V - 5.5V, 0 - 20 MHz @ 4.5V - 5.5V

    A Ty zdaje się zasilasz układ napięceim 3,3V i próbujesz zastosować kwarc 14,7456MHz?
  • #12 9578804
    Drako1988
    Poziom 20  
    Stabilizator LDO zasilany z 5V, na wyjściu 3,3V 100mA. Ten układ zasilania też był sprawdzony we wcześniejszej wersji układu. Ale też jutro jeszcze sprawdzę dokładnie. (Ostatnio po pojawieniu się problemu nie miałem za dużo czasu, żeby potestować, natomiast wszystkie pomysły z fusebitami jakie mi przyszły do głowy sprawdziłem)

    Dodano po 1 [minuty]:

    Kolego Andrzej__S no to teraz mnie zaskoczyłeś, bo ostatnio układ w tej konfiguracji pracował. No to chyba problem rozwiązany, na to nie wpadłem. Jutro dam odpowiedź jak wyszło.
  • #13 9578813
    janbernat
    Poziom 38  
    Obudowa kwarcu albo ma być przylutowana do masy albo izolowana.
    A nie "opierać się".
    Pod kwarce są specjalne podkładki.
    Ale z braku laku można podłożyć kawałek papieru i dopiero potem wlutować.
  • #14 9583604
    Drako1988
    Poziom 20  
    Witam ponownie.

    Dzisiaj przetestowałem oba układy i jakie było moje zdziwienie, kiedy pierwszy po podłączeniu zaczął działać normalnie, tzn diody się świeciły a nie migały.

    Drugi po podłączeniu migał, odłączyłem go i podłączyłem do zasilania kilkukrotnie i problem ustał.

    Możecie strzelać, nie mam pojęcia co było nie tak. Później pracowałem z tymi układami przez jakieś 4 h wielokrotnie je podłączając i odłączając i problem nie wrócił.

    No i co najlepsze, przy 3.3V na 14.7456MHz działa bez problemu:P (Chyba ze to te "babole" przez to się robią)

    Natomiast sprawdziłem poprzednią wersję i pracuje ona bezbłędnie na 14.7456MHz przy napięciu 3.3V przy dość zaawansowanej aplikacji .
  • REKLAMA
  • #15 9583613
    dondu
    Moderator na urlopie...
    Jeżeli producent stawia granicę 10MHz to nie oznacza, że przy 10MHz + 1Hz układ nie będzie działał. To jedynie granica, gdzie producent gwarantuje 100% poprawnego działania. A gdzie ono się kończy i zaczynają problemy to indywidualny problem danego typu, partii czy wręcz konkretnej kości.

    A ponieważ ta granica zależy od napięcia zasilania tym bardziej porównywanie wczoraj do dzisiaj jest nieobiektywne.

    Fiat 126p także pojedzie 200km/h ze stromej górki, ale ja nie chciałbym być w środku :)
    Praca poza granicami wyznaczonymi przez producenta jest ryzykowna, o czym się przekonujesz i będziesz przekonywał nadal.
  • #16 9600104
    Konto nie istnieje
    Konto nie istnieje  
  • #17 9699011
    Drako1988
    Poziom 20  
    Niestety ta Mega nie ma takiego fusa.
    Swiją drogą układy do dzisiaj pracują poprawnie bez efektu migania.
REKLAMA