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.

Bascom Atmega16 - Resetowanie programu

SQ9MYX 21 Sie 2015 14:13 465 3
  • #1 21 Sie 2015 14:13
    SQ9MYX
    Poziom 23  

    Witam zauważyłem dziwny objaw. Mianowicie odbieram dane przez sprzętowy uart z atmegi pochodzące z klawiatury. Klawiatura wysyła znak w momencie nacisnięcia i puszczenia przycisku. Zauważyłem że naciskając około 21 razy klawisz (wysłane 42 znaki w hexie) to resetuje mi się program i mikrokontroler... Teraz pytanie czym to jest spowodowane. Pomijam tutaj problem sprzętowy bo atmega jest "odkłócona" i nawet kwarc do masy przylutowany.
    Program wygląda tak :

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    deklaracja procesora:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    1 3
  • #2 21 Sie 2015 15:02
    BlueDraco
    Specjalista - Mikrokontrolery

    Po pierwsze, w każdym przyzwoitym języku programowania else dotyczy ostatniego if.

    Po drugie, jak zachowa się druga część programu, gdy zmienna Tmp_1 będzie miała wartość 100, 120 lub 140.

    Po trzecie, jeśli jużwiesz, że Tmp_1 ma wartość np. 90 (bo wpadłeś w pierwszy if), to po co sprawdzasz, czy mieści się w przedziale od 100 do 120 i kolejnych? To samo dotyczy serii if dla różnych wartości B.

    0
  • #3 21 Sie 2015 16:06
    Andrzej__S
    Poziom 28  

    O ile dobrze pamiętam, to w Basicu konstrukcja 'If' wygląda tak:
    If ... Then ... [Elseif] ... [Else] ... End if
    i 'End if' nie jest opcjonalne, a tu go chyba brakuje przy większości 'If'.

    EDIT:
    Z ciekawości doczytałem :)
    Jak jest tylko jedna instrukcja po 'Then' w tej samej linii, to wtedy jest bez 'End if'.
    Ostatnio pisałem makra w Visual Basicu (w Excell'u) jakieś 12 lat temu, więc chyba miałem prawo trochę zapomnieć? :D
    Sorry...

    0
  • #4 21 Sie 2015 18:33
    373522
    Użytkownik usunął konto