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

[ATMEGA128] dziwne działanie

piegzik 03 Wrz 2009 01:12 2070 18
  • #1 6974158
    piegzik
    Poziom 13  
    Witam.
    Mam ATMEGA128-16AU SMD i z fabrycznymi ustawieniami działa sobie pięknie na wew RC 1 MHz. Na tych ustawieniach procek dziala bez problemu, problem pojawia sie natomiast gdy ustawie inną czestotliwość i tak więc:
    - wew 2MHz jest ok
    - wew 4MHz czasami zaskoczy i dziala a czasami nie chce ruszyc
    - wew 8MHz nie chce ruszyc na tej czestotliwosci
    - zewnetrzny kwarc 16MHz kondki 22pF czasami zaskoczy ale zadko. Na kwarcu tym wystepuje ladna sinusoidka, ale nawet jak juz zaskoczy i dziala to dziala jakby z przez preskaler a bajt XDIV mam ustawiony na zerowy podzial czestotliwosci zekarowej, i co ciekawe jak juz nawet zaskoczy to dziala sobie jak chce z roznymi czestotliowosciami.

    Dodam jeszcze ze psa mam wyłączonego a do zdiagnozowania prędkości działamia generuję kwadrat wygerowany na jednym z wyjść i obserwuję go na oscyloskopie.
    Proszę o jakieś wskazówki.
    Pozdrawiam.
  • #2 6974357
    _Robak_
    Poziom 33  
    Co to znaczy ze "zaskoczy" ?
  • #3 6974840
    piegzik
    Poziom 13  
    Napisalem slowo "zaskoczy" poniewaz czasami dziala dobrze a czasami nie chce ruszyc z miejsca. Wiec wydaje sie jakby jakies warunki generacji sygnalu zegarowego czasami pozwalaly na normalna prace a czasami nie.
  • #4 6974938
    _Robak_
    Poziom 33  
    Ale co to znaczy ruszy z miejsca ;) Nie wiem, nie da sie programowac, da sie programowac ale nie dziala program. Jak sprawdzasz czy dziala program?
  • #5 6974963
    loocasm
    Poziom 15  
    Rzeczywiście trochę to przypomina wróżenie z fusów...
    A propos fusów - może spróbuj ustawić start-up time na najdłuższy? SUT 10 wg dokumentacji.
  • #6 6975033
    piegzik
    Poziom 13  
    Wiec programowac sie da przez spi i jtag.
    Do sprawdzenia czy procesor dziala napisalem prosty program ktory na przemian ustawia i zeruje pin na porcie. Wiec jesli na konkretnym ustawieniu fufow na oscyloskopie da sie zauwarzyc przebieg prostokatny to znaczy ze program dziala, ale jak zmienie fusy na inne ustawienia to nie ma zadnego przebiegu.
    ustawialem wszystkie mozliwe opuznienie start-up i nie jest w niczym to zalezne od tych ustawien. Jak zmiania czestotliwosc to w tedy pojawiaja sie problemy jak bylo opisane wyzej.
  • #7 6975091
    _Robak_
    Poziom 33  
    Proponuje sprawdzic w sposob nastepujacy. Podlacz diode z rezystrkiem do portu i nia migaj. Uzyj biblioteki delay.h do opoznien, takich abys widzial mruganie czyli np.1s. Pamietaj zeby ustawiac za kazdym razem predkosc procka. Zaloze sie ze bedzie zawsze dzialac ;) Co innego sprawa z kwarcem tutaj jaja moga byc rozne, ale to juz zalezy od pcb.
  • #8 6975128
    piegzik
    Poziom 13  
    po co mam sie bawic z dioda skoro mam oscyloskop i na nim obserwuje zmiane stanu portow. Tak wlasnie zrobilem uzylem tej biblioteki do generacji przebiebu kwadratowego na porcie. Rowniez mialem to samo zastrzezenie odnosnie zle zaprojwektowanej PCB z obwodzie kwarcu wiec dla pewnosci wylutowalem kwarc i kondki z nim wspulpracujace zeby pracowac tylko na wewnetrznym RC bo myslalem ze moze jakos sie zaklucac. Nic nie pomoglo objawy dalej sa takie same. Na wewnetrznym RC dziala poprawnie zgodnie z zaprogramowanymi opuzniniami z tej biblioteki na czestotliwosci 1 oraz 2 MHz natomiast klopoty sa z 4MHz i 8 MHz.
    Juz sie zastanawiam czy procek nie jest uwalony.
  • #9 6975154
    _Robak_
    Poziom 33  
    Alez to typowe, procek uwalony ;) Jezeli mozesz programowac procka to dziala. Nie chcesz sprawdzic na diodzie to nie, a moze masz oscyloskop uwalony... eee na pewno nie ;)
  • #10 6975196
    piegzik
    Poziom 13  
    Nie wydaj mi sie zebym mial oscyloskop zepsuty gdyz ja moge na nim wykryc sinusoidke z kwarcu 16MHz i przebiegi z portow o rozych czastotliwosciach to chyba jest z nim ok. Dobra sprawdze na diodkach dla czystego sumienia. Procek dziala prawidlowo tyko jest podejrzany o wadliwe dzialanie na wyzszych czestotliwosciach bo jak wytlumaczy fakt ze na wew rc 1MHz dziala a na 4 MHz juz nie jak z zewnatrz nic mu nie przeszkadza. Kombinowalem tez z wiekszymi kondkami do sprzegania zasilania a blizej juz procka nie da cie wlutowac.
  • #11 6975222
    _Robak_
    Poziom 33  
    Ja aby byc pewnym czy procek dziala czy nie zrobilbym mruganie dioda na przerwaniu. Dac odliczanie 1 sekundy i wszystko byloby jasne.
  • #12 6976154
    piegzik
    Poziom 13  
    Wiec zgodnie z obietnica :) wykonalem zalecania kolegi _Robak_ i napisalemm prosty programik ktory mroga dioda za pomoca przerwania. Oto on:

    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <avr/signal.h>

    SIGNAL (SIG_OVERFLOW2)
    { TCNT2 = 0x00;
    PORTD ^= _BV(PD3);
    }

    int main (void)
    { sei();
    DDRD = 0x08;
    PORTD |= _BV(PD3);
    TCNT2 = 0x00;
    TIMSK = 0x40;
    TCCR2 = 0b00000101; //preskaler 1024
    for(;;)
    {
    }
    }

    Preskaler ustawiony jest na dzielenie przez 1024 natomiast przepelnienie licznika i obsluga przerwania nastepuje po 256 cyklach. W ten sposób 1024 x 256 = 262 144 cykli bedzie sie zmienial stan pinu podlaczonego do LED co przy:
    1 MHz powinno dac ok 1,9 Hz
    2 MHz powinno dac ok 3,8 Hz
    4 MHz powinno fac ok 7,6 Hz
    8 MHz powinno dac ok 15,3 Hz.

    Po odpaleniu programu zaobserwowalem miganie diody i czestotliwosc na oscyloskopie:
    przy 1 MHz dioda miga z czest 1,89 Hz
    przy 2 MHz dioda miga z czest 3,81 Hz
    przy 4 MHz dioda miga z czest 3,953 Hz
    przy 8 MHz dioda nie miga wcale.

    Dodam ze Watchdoga mam wylaczonego w fusach i jeszcze poprobuje moze jakies inne przypadkowe przerwanie zakluca prawidlowa prace.
  • #13 6976279
    _Robak_
    Poziom 33  
    Czym zasilasz mege ? Masz podlaczone Wszytskie VCC, GND i AVCC ?
  • #14 6976433
    piegzik
    Poziom 13  
    m128 zasilalem juz z programatora jak i na zewnetrznym zasilaczu z 7805. Masy wszystkie polaczone (w jednym miejscu), VCC oczywiscie tez. AVCC mam podlaczone do masy przez kondesator oraz z VCC przez dlawik, Probowalem tez AVCC polaczyc przez kondek z VCC oraz za pomoca zworki. Objawy ciagle te same.
    Zauwazylem ponadto ze przy 8 MHz dioda miga ale bardzo powoli z czastotliwoscia ok 0.229 Hz czyli stan diody zmiania sie co 4s(dlatego trudno mi bylo to wczesniej zaobserwowac), a czasami z 0,11Hz.
    Wyglada na to jakby cos wszystkie te czastotliwosci sa powiazane ze soba poprzez liczbe 2 wiec wydaje sie jakby jakos preskaler sie wlaczal na czastotliwosci 8MHz a na 4MHz byl skalinrowany RC o nizsza czestotliwosc. W tym momencie wymontowanego mam kwarca. Dzieki za zainteresowanie :)
  • #15 6976475
    _Robak_
    Poziom 33  
    AVCC musi byc podlaczony do VCC i to nie przez kondensator!! Jak juz cos to VREF przez kondensator do masy. A wylaczyles fuse bit zgodnosci z atmega 103 ?
  • #16 6976527
    piegzik
    Poziom 13  
    Spoko AVCC z VCC przez kondensator laczyla tylko zeby sprawdzic jak sie ewentualnie zachowa choc wiem ze najlepsza matoda jest polaczyc przez dlawik ktory odfiltruje zaklucenia przedostajace sie z czesci cyfrowej. AREF mama sprzegniete z masa przez kondensator. Tyb zgodnosci z M103 mam wylaczony choc nie ukrywam ze probowalem tez z ustaiwonym. Reset mam przez rezystor do VCC i kondensator do masy.
  • #17 6976875
    _Robak_
    Poziom 33  
    Tak tylko sie upewnie ;) Wiesz ze w fuse bitach bit ustawiony to 0 a nieustawiony to 1 ? :) W kazdym razie ciezko powiedziec co moze byc nie tak, wymien moze na inny procek :)
  • #18 6977002
    piegzik
    Poziom 13  
    Tak wiem o tych ustawianiach fusow ze bit ustawiony to 0 a nieustawiony to 1, Zreszta fusy ustawiam w przez jtag w AVRStudio wiec ciazko o jakas pomylke.
    Tez juz nie mam koncepcji co mozna jeszcze sprawdzic.
    Z wymiana moze byc problem z wylutowaniem procka bo jest w obudowie TQFP wiec ciecko bedzie. Jeszcze tak mysle ze cos z masa na PCB moze jest nie tak, bo innej mozliwosci niema, chyba ze uwalony jest wewnatrz procka blok odpowiedzialny za sygnal zegarowy. Procek ten jest wlutowany w przejsciowke, wiec chyba lepiej byloby wytrawic nowa plytke i wlutowac nowego procka a ten stery przyda sie do mniej wymagajacych zadan gdzie czestotliwosc pracy moze byc na poziomie 2MHz :)
    W kazdym badz razie dzieki za zainteresowanie.
  • #19 6995157
    piegzik
    Poziom 13  
    Problem rozwiązany jeśli można tak mówić.
    Kupilem nowego procka. Zaprojektowalem i wykonałem nową płytke, najpierw wlutowałem starego procka i okazało się ze problem jest dokładnie ten sam. Wiec wylutowałem go i wlutowałem nowego. Okazało się, że z nowym i wpełni sprawnym prockiem wszystko działa zgodnie z załozeniami. Więc jednak była to wina procka o co podejrzewałem. Swoją drogą ciekaw jestem czy w sklepie uwzglednili by reklamacje i wymienili na nowy. Przez tego skurczybyka tyle czasu i nerwów zepsulem. Dzieki dla _Robak_ za propozycje przyczyn błędów ale nawet we dwójke nic nie wykombinowaliśmy, bo po prostu procek jest lekko uszkodzony.
REKLAMA