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.

[C] Atmega 128, programuje się ale nie wykonuje poleceń

18 Kwi 2009 17:27 2968 9
  • Poziom 10  
    Programuję Atmege128 za pomocą USBASP, wszystko się programuje , ale Atmega nie reaguje w ogóle (nie wykonuje programu)


    Code:
    #include <avr/io.h> 
    
    int main(void)
    {
    DDRD=255;
    PORTD=255;
    while(1)
    {}
    return 0;
    }


    Sprawdzam napięcia na pinach portu D i jest ono różne na każdym pinie (bo domyślnie porty są jako wejścia więc może na nich być cokolwiek(poza portem C chyba)).

    Programuje się niby ok, ale tylko raz. To znaczy jak pierwszy raz podłączam programator to jest ok, ale jak raz zaprogramuje i chcę kolejny to otrzymuję taki komunikat:

    Cytat:

    avrdude: Device signature = 0x000102
    avrdude: Expected signature for ATMEGA128 is 1E97 02
    Double check chip, or use -F to override this check.

    avrdude done. Thank you.
    make: *** [program] Error 1

    Po odłączeniu programatora i ponownym włączeniu programuje się poprawnie, ale tylko raz.
    Czy to znaczy ze procek do wywalenia?
  • Poziom 35  
    Proponuje byś podał jakie ustawiłeś Fuse Bits czyli Bity Konfiguracyjne. To od nich zależy czy układ zadziała w twojej aplikacji. Jeśli ustawiłaś je niepoprawnie np ustawiłeś zewnętrzny generator a go nie ma w układzie to by zaprogramować układ ponownie trzeba podłączyć zewnętrzny zegar itd itd. Przykładów złego ustawienia jest wiele proponuje więc podać dokładne informacje o wspomnianych bitach i układzie w jakim pracuje procesor.
  • Poziom 10  
    Nie majstrowałem nic z fuse bitami. Odczytałem je i są następujące:
    M103C - 0
    WDTON - 1
    OCDEN - 1
    JTAGEN - 0
    SPIEN - 0
    CKOPT - 1
    EESAVE - 1
    BOOTSZ1 - 0
    BOOTSZ0 - 0
    BOOTRST -1
    BODLEVEL -1
    BODEN - 1
    SUT1 - 1
    SUT0 -0
    CKSEL3 -0
    CKSEL2 -0
    CKSEL1 -0
    CKSEL -1
  • Pomocny post
    Poziom 34  
    Odczyt sygnatury jako "000102" wskazuje, że albo procesor jest zablokowany (lockbity) albo procesor nie wchodzi w programowanie poprawnie za każdym razem - może pin reset jest gdzieś na stałe zwarty do masy albo jest do niego podłączony jakiś duży kondensator?

    Problem który się ujawni później (sam z siebie nie wpływa na wchodzenie procesora w tryb programowania) to bit M103C - atmega128 domyślnie jest sprzedawana w trybie kompatybilności z atmega103, a więc ten bit trzeba będzie później (później!) zmienić.

    Sprawdź też, czy dochodzi zasilanie do procesora...
  • Poziom 10  
    Reset nie jest zwarty, kondensatora dużego nie ma tam, ale rzeczywiście może być zablokowany bo PonyProg też czasem pisał, że device is locked. Czym go mogłem zablokować? I jak go odblokować?
    Co do bitu M103C to jego wartość jest równa zero, zmieniając na 1 wyłączamy tryb kompatybilności? Chyba tak bo port C jest automatycznie ustawiany jako wyjście w stanie niskim, tak jak jest to w Atmega103 .
    Zasilanie dochodzi na pewno.
  • Pomocny post
    Poziom 40  
    Witam
    Może to problem z wyprowadzeniem PEN. Najlepiej nie podłączać go do niczego, niech wisi w "powietrzu".
  • Poziom 10  
    Próbowałem i ze zwartym PEN do masy i z wiszący w powietrzu, taki sam rezultat.
  • Poziom 33  
    Po pierwsze, zeby nie miec zadnych jaj przy dalszej pracy, zmien fusy m103c i jtagen na 1.
  • Poziom 10  
    Po co mam zmieniać jtagen? Najpierw chciałbym żeby zaczęło cokolwiek działać. Jutro sprawdzę na innej atmedze.
  • Pomocny post
    Poziom 33  
    Po to ze jak bys losowo wybral do testow portf to bys pisal na forum czemu ci nie dziala ten port ;>