Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ATTINY2313 - Restart mikroprocesora

lukaszkny 06 Sty 2014 16:06 1059 8
  • #1 06 Sty 2014 16:06
    lukaszkny
    Poziom 11  

    Witam,

    Czy przepełnienie pamięci SRAM może powodować restart procesora? Co jakiś czas procesor się resetuje, w nieokreślonych odstępach. Odczytuje rejestr MCUSR i jego wartość to 0.

    Pozdrawiam,
    Łukasz

    0 8
  • #2 06 Sty 2014 16:07
    excray
    Poziom 39  

    lukaszkny napisał:
    Czy przepełnienie pamięci SRAM może powodować restart procesora?
    Zdecydowanie. To nawet nie tyle restart co program wychodzi poza zaprogramowany obszar i "przelatuje" cały flash aż do adresu 0. Stąd brak zmian w MCUSR. Lepiej pokaż cały kod.

    0
  • #3 06 Sty 2014 16:39
    lukaszkny
    Poziom 11  

    Dzięki za odpowiedź.

    Kod aktualnie jest taki.

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Część danych przeniosłem do EEPROM, ale dalej mam resety.

    0
  • #4 06 Sty 2014 17:50
    szczywronek
    Poziom 27  

    1. Czemu praktycznie wszystkie zmienne są globalne?
    2. Nie przeanalizowałem całości, ale wydaje się, że część zmiennych spokojnie może być jednobajtowa.
    3. Większość osób zapomina o "volatile" Ty poszedłeś zdecydowanie w drugą stronę :)
    4. Co to ma robić?

    Kod: c
    Zaloguj się, aby zobaczyć kod

    5. Gdzieś w kodzie wypatrzyłem komentarz "//przekaźniki" - może resetowanie to nie problem software'owy tylko hardware'owy :)
    6. Na 2 bajtowych zmiennych, wykorzystywanych w przerwaniach, wypadałoby operować (poza przerwaniami) atomowo.

    0
  • #5 06 Sty 2014 18:02
    lukaszkny
    Poziom 11  

    Dziękuję za uwagi, zaraz to posprawdzam i poprawie.

    Co do punku 5 to przekaźniki aktualnie nie pracują, lecz wcześniej je sprawdzałem i nie powodowały problemów.

    --------------------------------------------------

    Poprawiony kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dalej są restarty, przyczyna leży gdzieś w obsłudze DS.

    Cytat:
    6. Na 2 bajtowych zmiennych, wykorzystywanych w przerwaniach, wypadałoby operować (poza przerwaniami) atomowo.


    Dobrze rozumiem, masz na myśli zmienną licz?

    0
  • #6 23 Lut 2014 16:30
    lukaszkny
    Poziom 11  

    Ponownie odświeżam.

    Z braku czasu, nie miałem kiedy dokończyć programu. Dalej mam problem z resetami. Wyciąłem obsługę DS, bo to nie ona powoduje restarty.

    Przyczyna może leżeć w źle ustawionych przerwaniach?

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #8 24 Lut 2014 18:09
    lukaszkny
    Poziom 11  

    Schemat

    ATTINY2313 - Restart mikroprocesora

    0
  • #9 27 Lut 2014 11:48
    excray
    Poziom 39  

    Prąd płynący tylko przez PB0-6 przekracza w skrajnej sytuacji 350mA a maksymalny prąd dla WSZYSTKICH pinów według specyfikacji to 200mA. Prąd dla pojedynczych pinów PB0-6 też przekroczony o 10mA. Poza tym za mało kondensatorów filtrujących.

    0