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

Atmega88PA-PU: Program nie działa po zmianie kodu i ponownym wgraniu

gunnersson 02 Mar 2017 17:00 1215 4
REKLAMA
  • #1 16318040
    gunnersson
    Poziom 7  
    Witam. Zaczynam naukę programowania uC, moim pierwszym urządzeniem tego typu jest ATMEGA88PA-PU. Wgrałem na nią program, który zapala led'a, jak nacisnę przycisk oraz gasi led'a jak puszczę przycisk. Program działał. Następnie postanowiłem zmienić program aby po naciśnięciu przycisku led się zapalał a po następnym naciśnięciu gasił. Program ten nie działał, pomimo moich prób naprawy - więc postanowiłem wgrać na niego poprzedni program. Niestety nadpisałem go następnym - więc musiałem napisać go od nowa. Program wgrywam przy pomocy mkAVRcalculator i usbasp. Program się wgrywa (mkAVR nie wypluwa mi błędów - informuje mnie że wszystkie polecenia zostały pomyślnie wykonane). Po podłączeniu płytki z atmegą nic się nie dzieje. Sprawdziłem podłączenie zasilania do atmegi (kondensatory 100nF), stan na resecie jest wysoki (dałem rezystor 10k). Przycisk jest podpięty do masy. W programie "włączyłem" rezystor pull-up. Jedyną dziwną rzeczą jest fakt że mkAVR wykrywa moją atmege jako 88P a nie 88PA (po ręcznym przestawieniu program nie wgrywa się - niestety nie zwróciłem jaki model rozpoznawał mkAVR gdy wgrywałem program dfziałający :/). Gdy jest ustawione 88P i 88PA Fuse i lockbity wyglądają tak samo (LOW: 0x62 HIGH: 0xDF EXTENDED: 0xF9 LOCKBAJT: 0x3F). W Atmel Studio 6.2 (nie używam 7 bo nie mogę go zainstalować na PC (mniejsza z tym, to chyba nie problem)) jako mikrokontroler ustawiłem ATMEGA88PA.
    Kod programu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    I płytka z uC:
    Atmega88PA-PU: Program nie działa po zmianie kodu i ponownym wgraniu
  • REKLAMA
  • Pomocny post
    #2 16318240
    zumek
    Poziom 39  
    W pierwszej instrukcji, użyłeś niewłaściwego argumentu. ;)

    zumek
  • REKLAMA
  • Pomocny post
    #3 16318273
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #4 16318923
    Kociejsko
    Poziom 14  
    O tak trzeba :

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #5 16322488
    gunnersson
    Poziom 7  
    Program wgrałem. Dioda zaczęła świecić gdy układ był jeszcze podpięty do programatora, gdy podłączyłem zasilacz 5V przepalił się stabilizator napięcia, następnie zamiast zasilacza podpiąłem zasilanie bateryjne, dioda świeciła tylko przez chwilę - nie dotykałem przycisku. Nowa atmega już zamówiona - napiszę czy udało mi się ją uruchomić :/

    EDIT. Wgrałem taki kod.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Program działał. Dioda gasiła się z drobnym opóźnieniem po odpuszczeniu przycisku. Czasami przycisk nie łapał - ale to przez to _delay_ms() w else - wiem zbędne.
    Nastepnie wgrałem program
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    I jak się domyślacie program nie działa. Wgrałem na powrót stary i nic. Powiedzcie mi czy ze mną jest coś nie tak, czy to może jakiś krytyczny błąd w moim programie?

    EDIT. Wgrałem stary kod. Zaczęło działać, lecz nadpisałem ten plik i nie mogę go tu wrzucić. Problem sam się rozwiązał.
REKLAMA