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

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

brynix 18 Kwi 2009 17:27 3175 9
REKLAMA
  • #1 6429491
    brynix
    Poziom 11  
    Programuję Atmege128 za pomocą USBASP, wszystko się programuje , ale Atmega nie reaguje w ogóle (nie wykonuje programu)


    #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?
  • REKLAMA
  • #2 6429615
    mietekn
    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.
  • REKLAMA
  • #3 6429706
    brynix
    Poziom 11  
    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
  • REKLAMA
  • Pomocny post
    #4 6430044
    BoskiDialer
    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...
  • #5 6430225
    brynix
    Poziom 11  
    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.
  • REKLAMA
  • Pomocny post
    #6 6430250
    Dar.El
    Poziom 41  
    Witam
    Może to problem z wyprowadzeniem PEN. Najlepiej nie podłączać go do niczego, niech wisi w "powietrzu".
  • #7 6430280
    brynix
    Poziom 11  
    Próbowałem i ze zwartym PEN do masy i z wiszący w powietrzu, taki sam rezultat.
  • #8 6430345
    _Robak_
    Poziom 33  
    Po pierwsze, zeby nie miec zadnych jaj przy dalszej pracy, zmien fusy m103c i jtagen na 1.
  • #9 6431212
    brynix
    Poziom 11  
    Po co mam zmieniać jtagen? Najpierw chciałbym żeby zaczęło cokolwiek działać. Jutro sprawdzę na innej atmedze.
  • Pomocny post
    #10 6431843
    _Robak_
    Poziom 33  
    Po to ze jak bys losowo wybral do testow portf to bys pisal na forum czemu ci nie dziala ten port ;>
REKLAMA