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

AVR Atmega 128 prosty program a nie działa

kernel64 07 Kwi 2011 13:37 2235 5
REKLAMA
  • #1 9371152
    kernel64
    Poziom 2  
    Witam
    poniżej program na procesor Atmega 128 w c++ . kompilowany jest w AVR Studio (WinAvr)
    problem polega na tym że po wykonaniu pierwszej funkcji program zamiast wykonywać kolejne wychodzi i zaczyna od początku.
    w programie głównym po naciśnięciu klawisza zostaje wywołana funkcja lcd_init();
    w niej wykonywane są kolejno instrukcje aż do funkcji lcd_send(0x03);
    ta funkcja jest realizowana a następnie program zaczyna od nowa a powinien dojść do końca funkcji lcd_init(); .
    komenda SET_LED; była wstawiona by wykryć które to miejsce nie działa.
    co może być nie tak?
    ps. podobnie jest po naciśnięciu drugiego klawisza ... ma wykonać lcd_write_data(0x41);
    a w tej funkcji dochodzi (zagłębia) się do lcd_send(_data >> 4); wykonuje ją i zaczyna od nowa.


    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • REKLAMA
  • #3 9371239
    kernel64
    Poziom 2  
    Witam
    poniżej program na procesor Atmega 128 w c++ . kompilowany jest w AVR Studio (WinAvr)
    problem polega na tym że po wykonaniu pierwszej funkcji program zamiast wykonywać kolejne wychodzi i zaczyna od początku.
    w programie głównym po naciśnięciu klawisza zostaje wywołana funkcja lcd_init();
    w niej wykonywane są kolejno instrukcje aż do funkcji lcd_send(0x03);
    ta funkcja jest realizowana a następnie program zaczyna od nowa a powinien dojść do końca funkcji lcd_init(); .
    komenda SET_LED; była wstawiona by wykryć które to miejsce nie działa.
    co może być nie tak?
    ps. podobnie jest po naciśnięciu drugiego klawisza ... ma wykonać lcd_write_data(0x41);
    a w tej funkcji dochodzi (zagłębia) się do lcd_send(_data >> 4); wykonuje ją i zaczyna od nowa.



    Dodano po 8 [minuty]:

    Sprawdzałem z watchdog`iem i bez, na wewnętrznym rezonatorze 1MHz i zewnętrznym 16MHz. To początek mojej przygody z AVR wiec może to być jakiś banalny błąd.
  • REKLAMA
  • Pomocny post
    #4 9371824
    tmf
    VIP Zasłużony dla elektroda
    A fusebit kompatybilności z ATMega103 odznaczyłeś?
    BTW, co każe ci myśleć, że powyższy program jest napisany w C++?
  • REKLAMA
  • Pomocny post
    #5 9385254
    drzasiek
    Specjalista CNC
    Pierwsze co, to odznacz bit kompatybilności tak jak napisał tmf. To jest podstawowy problem przy M128 na początku.
  • #6 9386350
    kernel64
    Poziom 2  
    Odhaczenie kompatybilności z ATmega 103 wystarczyło . Wielkie dzięki za pomoc. :D
REKLAMA