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

ATMEGA 8 + LCD - Zawieszanie programu przy użyciu sei() i przerwań

mastah2003 19 Maj 2013 13:32 1971 6
  • #1 12323364
    mastah2003
    Poziom 10  
    Witam, mam problem z programem na mikroprocesor. Na początek dodam, że prototyp, zanim poszedł w odstawkę pół roku temu działał prawidłowo.
    Program w tym momencie ma za zadanie wyświetlić 4 zmienne na wyświetlaczu.
    Uruchomienie przerwań zawiesza program. W zależności od tego kiedy zostaną rozpoczęte, skutkuje to innym efektem.
    Umieszczając sei(); na końcu maina program działa, reaguje na przyciski, zmienia menu, ale nie wyświetla aktualnych wartości. Umieszczając sei(); na początku programu program się zawiesza nie wyświetlając nic. Podczas gdy sei(); znajduje się po konfiguracji parametrów i ustawień ADC, po inicjalizacji LCD występuje dyskoteka na ekranie, którą trudno dokładniej opisać, nie wyświetla konkretnych znaków, tylko zaciemnia z różnym nasileniem różne pola wyświetlacza.
    Aktualna konfiguracja sprzętowa to płytka stykowa uniwersalna z 3 buttonami, 4 potencjometrami podłączonymi pod wejścia adc0-3, wyswietlaczem hd44780 2x16. Połączenia są w 90% prawidłowe.

    Proszę ludzi dobrej woli o pomoc, ponieważ już tracę siły do tego programu, a muszę go skończyć do końca maja.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    [/code]
  • #3 12325053
    mastah2003
    Poziom 10  
    Chciałem podziękować za zainteresowanie i próbę pomocy !!!. Zwiększyłem na maksa prescaler adc jednak nie przyniosło to żadnego rezultatu. Jest identycznie jak poprzednio - dyskoteka. Taka moja drobna myśl, może problem tkwi w konflikcie funkcji wyświetlania i przerwań od ADC. Nie potrafie sobie w tej chwili przypomnieć czym zajmowałem się ostatnio, tzn pół roku temu gdy jeszcze wszystko działało, jednak wydaje mi się, że ostatnie rzeczy którymi się zajmowałem były: przerwania od przepełnienia timera ( na końcu w komentarzu w celu obliczenia kWh) oraz próby stworzenia 3 ekranów "prostego menu". Jakie kolwiek naprowadzenia będą na pewno pomocne. Dziękuję.
  • #4 12325195
    BlueDraco
    Specjalista - Mikrokontrolery
    Zawsze dziwiło mnie użycie przerwań ADC... Na co to komu? Przecież to algorytm, a nie przetwornik powinien decydować o czasowym rytmie pomiarów.
  • #5 12325361
    mastah2003
    Poziom 10  
    To prawda. Idealnie by było gdyby to program decydował o przerwaniach ADC, ile mniej ich by było, występowały by wtedy kiedy są naprawde potrzebne. Ktoś ma jeszcze jakieś pomysły??
  • #6 12326078
    szelus
    Poziom 34  
    Cytat:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Chyba trochę mały ten bufor na napis, w dodatku na stosie (pozostałe bufory tak samo). Zajeżdżasz sobie stos, więc nie dziw się, że się "cuda" dzieją.
  • #7 12343842
    mastah2003
    Poziom 10  
    To nie bylo to... W programie AVR studio byl zly procek wybrany w konfiguracjii. ( obok opcji optymalizacji... kompilator robil kaszankę.
    Po prostu wracając do pisania prog stworzylem nowy proj. nie ustawiajac opcji.
    Dzięki za podpowiedzi.
REKLAMA