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

Bascom Atmega16 - Resetowanie programu po 42 znakach z klawiatury UART

SQ9MYX 21 Sie 2015 14:13 843 3
REKLAMA
  • #1 14937242
    SQ9MYX
    Poziom 23  
    Posty: 837
    Pomógł: 6
    Ocena: 72
    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: VB.net
    Zaloguj się, aby zobaczyć kod


    deklaracja procesora:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 14937340
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    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.
  • REKLAMA
  • #3 14937494
    Andrzej__S
    Poziom 28  
    Posty: 567
    Pomógł: 182
    Ocena: 65
    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...
  • #4 14937834
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA