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

EvB 4.3 / ATmega32 - Zawieszanie się programu przy komunikacji z PC

mikroice90 27 Lis 2012 00:16 1092 4
REKLAMA
  • #1 11579332
    mikroice90
    Poziom 13  
    Witam, mam problem związany z komunikacją PC z uC a tak naprawdę wydawaniem poleceń(sterowaniem) uC spod PC. Poniżej zamieszczam kod, który działa pod uC. Niestety gdy wyślę z aplikacji w C# wartość 128 następuje wejście do case 128 wysłanie wartości PIND0 lecz po przejściu całej pętli while program zatrzymuje się (czeka) na warunku bit=odbierz(); Jak sprawdziłem w UDR cały czas przechowywana jest jakaś wartość tzn. warunek z funkcji odbierz, który czeka na pusty bufor wstrzymuje prace programu. Czy ktoś ma pomysł jak temu zaradzić?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    [/code]
  • REKLAMA
  • #2 11580470
    namlooc
    Poziom 15  
    Odbieraj i wysylaj dane w przerwaniach:
    USART_TX_vect, USART_RX_vect

    Tak na szybko odbior mozna zrealizowac np. tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 11584210
    mikroice90
    Poziom 13  
    Ale jak poprzez obsługę przerwania spowodować, że np. po przesłaniu 0x80 (128) uC rozpocznie nadawanie i będzie nadawał aż do otrzymania 0x81 (129)?
    Musiałbym zdefiniować zmienne globalne, których wartość zmienia obsługa przerwania. A w wiecznej pętli postawić warunek np.:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Czy tak miałoby to wyglądać i czy to ma szansę powodzenia?
  • REKLAMA
  • #4 11584269
    Konto nie istnieje
    Poziom 1  
  • #5 11587753
    mikroice90
    Poziom 13  
    dziękuję rzeczywiście na przerwaniach działa, choć mam niezaspokojoną ciekawość dlaczego nie działa poprawnie z funkcją odbierz().
REKLAMA