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

[Atmega32][C] Przerwania USART wysyłają śmieciowe dane?

marek.morr 12 Wrz 2016 00:39 924 4
REKLAMA
  • #1 15926056
    marek.morr
    Poziom 2  
    Witam,

    Skonfigurowałem USART żeby wysyłać dane, do komputera lecą prawidłowo. Chciałem teraz odbierać dane z komputera, jednak chciałbym to zrobić w przerwaniu aby tam w tablicy buforować dane i co jakiś czas obrabiać je w głównej pętli programu. Problem jest z tym, że po uruchomieniu przerwań uzyskuję jakieś śmieci - tak mi się wydaje, bo nie wysyłam żadnych danych a indeks w poniższym kodzie rośnie cały czas:

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


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


    Częstotliwość (8MHz na wewnętrznym kwarcu) i prędkość jest raczej dobrze liczona bo jak się pomyliłem z konfiguracją to Terminal.exe miałem krzaki gdy wysyłałem coś z procka.

    A teraz nie wysyłając żadnych danych do proca, otrzymuje:
    Cytat:
    index: 217
    ramka: ?‹•áż°¸°C!®|?‹˝üřü…˙ţđ-˝üřţ~ţđ-ýţü˙˙đ-˙˙ţ˙đ-˙˙řK˙ř˙ü¤?‹•áż°˙
    ňü<'úúřƒŹűţ°Z˝üüţ~˙ţđ}ţü˙ůđ˙ţ˙đ-˙đ-˙˙ü˙üü¤ţ°˙Źűţ:ŇúĆřzűţđ˙ţţ~˙ţř˙ţůđ˙đ-˙đ˙ţüüä˙†˙ź˙żű?˙˙řţţţ˙üţůđ˙ř˙řţüüöǁźq˙˙ř˙˙˙ţ˙üü˙ţţ˙~ţźü˙ţţ˙˙˙˙ç˙˙˙ěü?‹•ăż°»LjŹűüka:`ż°¸đüű|?‹ţüţŁŘţř˙
    index: 171
    ramka: ţţ~ţř˙˙˙˙ř˙ţ˙đmü÷ř˙üö ż°˙đělü<'˙˙ƃŹű˙ř˙üüţţ˙řţü˙űř˙đ-ř˙˙ü˙üţö˙űţ˙':?˙˙˙ţ˙˙˙˙ţůřřýđ˙ţţţö†˙?˙ű?˙ü˙˙˙üţüřţüţ˙~źqü˙˙ţ˙ţţţţ˙ţ˙çţţ˙˙˙˙˙ěţż°»îł¶ükáżđúƒĂƒţţ°Zţţ˙>ţř˙
    Ź?‹żüż°LSţŹűĽk+éƒű˙˙ř˙˙üţ˙đţüüö˙üřđělüľűƃźüüüţ˙ü˙˙űřřă˙˙ü˙ţ˙˙űţŰ˙y˙˙˙˙˙ţůüüřţţţ
    index: 124
    ramka: ˙ǰúűžţ˙˙ü˙ţüüţ˙˙ţźü˙˙ţ˙˙˙˙ţß˙˙˙˙ţ˙ż°ű˙żţ­żđ˙řü˜ţ°˙˙˙>ţř˙üţżüżđîż°ŹűĽ˙ďř˙˙řţ˙đţüţ˙ţđěüţ˙ç°ŁĆţţ˙ü˙˙üüŢ˙ü˙˙†żţ˙˙˙˙˙˙ţţţţěü?‹•ăż°.&jŹűüka:`˙żyţţţüü˙˙Ć˙˙˙˙ţß˙˙żđ˙kƒüţܰ˙˙ż˙üüţ˙ţřďƒűţř˙˙ü˙řüţ˙˙řţţ˙çđľŢ˙ü˙˙ţţ˙ü˙˙Ç˙˙˙˙˙˙˙ţěü?ż°.·ł¶ükáżđźżyţţ˙ţţ˙Ć˙˙˙˙˙ř
    index: 60
    ramka: ƒüţÜř˙üüţ˙üƒűţřţřüţü˙˙çđ˙˙ţ˙ţţţÇ˙˙˙ţěü˙ř雳ţüđźżů˙˙˙˙Ć˙˙ř
    Ź?‹˝üż°jŹűüka:`8˙ţ˙üü˙ţŘţř˙üţ˙˙˙çř˙ţţţţţěü˙ü˙żţüđ˙˙˙˙˙ĆĆ
    Ź?›ţř" ­ţţ<'á˙ţ˙ţř˙üţ˙˙˙˙ţţţţţü˙żţţř˙˙˙Ćçüţmţřf°˙˙:˙˙˙üţúţţţ˙˙ţżţţřçţ˙ü÷ű˙zŹüţúţ˙˙ţżţţüßň˙ü÷˙Ćţúţ˙ţţü˙űţ˙Ćţ˙˙˙ü˙ű˙ç˙˙˙üď˙˙üţ˙Ć˙˙˙˙˙ř
  • REKLAMA
  • #2 15926124
    kamyczek
    Poziom 38  
    Witaj a nie masz czasem "wiszącego" wyprowadzeni rx bez włączonego wewnętrznego podciągania ? To wygląda jak by wyprowadzenie było wiszące i nigdzie nie podłączone bo bez względu na błąd prędkości jeśli zachowa taki sam stan uart nie odbierze ani jednego znaku .
  • REKLAMA
  • #3 15926169
    marek.morr
    Poziom 2  
    kamyczek napisał:
    Witaj a nie masz czasem "wiszącego" wyprowadzeni rx bez włączonego wewnętrznego podciągania ? To wygląda jak by wyprowadzenie było wiszące i nigdzie nie podłączone bo bez względu na błąd prędkości jeśli zachowa taki sam stan uart nie odbierze ani jednego znaku .


    Jak zrobiłem wysyłanie co 1 sekundę wartości zmiennej index, to nie wysyłając nic z komputera, wpada po 9 znaków, czyli mam:
    Cytat:
    index: 1
    index: 10
    index: 19
    index: 28


    Gdy wyślę coś z komputera, to zaburzam tą stałą wartość i mam:
    Cytat:
    index: 1
    index: 10
    index: 43
    index: 51


    Już nie rozumiem, co tutaj się dzieje...
  • REKLAMA
  • #4 15926189
    Konto nie istnieje
    Konto nie istnieje  
  • #5 15926200
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA