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.

AVR ATmega8A C - Kontroler diod na bluetooth

Mag-Łoch 15 Lis 2015 18:34 1062 6
  • #1 15 Lis 2015 18:34
    Mag-Łoch
    Poziom 5  

    Witam,
    Mam mały problem, próbuję wykonać komunikację interfejsu szeregowego z modułem bluetooth XM-15B aby wysyłać dane z aplikacji na telefonie, która będzie sterować kolejno odpowiednimi elementami. Problem polega na tym, że próbuje zainicjować UARTA, wysyłam paczkę danych, uC ma sprawdzać te informacje i na ich podstawie zapalać albo gasić odpowiednie diody. Poniżej kod.
    Zakładam, ze jak wyślę z terminala z telefonu cyfrę 0 to zapali się lub zgaśnie dioda PD3, a jak wyślę 1 do zapali się lub zgaśnie dioda PD4. Kod się kompiluje, ale jak wgrywam go do uC to nie chce działać kiedy wysyłam cyfry z telefonu. Diody działają, problem tkwi w programie. Proszę o pomoc.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 6
  • #3 15 Lis 2015 19:04
    tmf
    Moderator Mikrokontrolery Projektowanie

    @Mag-Łoch Twoja funkcja Odbierz odczytuje i zwraca zawartość rejestru danych USART (UDR), ale to też kasuje jego zawartość i ponowny odczyt UDR nie zwróci wartości poprzednio odczytanej. Stąd też switch(UDR) nie zadziała poprawnie. Musisz więc przypisać wynik funkcji Odbierz do zmiennej tymczasowej i zastosować ją w konstrukcji switch.

    0
  • #4 15 Lis 2015 19:58
    Mag-Łoch
    Poziom 5  

    Mogę bezpośrednio po funkcji odbierającej dane wstawić przypisanie wartości z UDR do zmiennej tymczasowej ? czy w jakiś konkretny sposób mam zapisać te wartości w case, jeśli chce przez terminal wysłać na przykład cyfrę 1, to ona w kodzie ASCII ma konkretny numer i mam ten numer wpisać ?

    0
  • #5 15 Lis 2015 20:06
    2675900
    Użytkownik usunął konto  
  • #6 15 Lis 2015 20:12
    tmf
    Moderator Mikrokontrolery Projektowanie

    Mag-Łoch napisał:
    Mogę bezpośrednio po funkcji odbierającej dane wstawić przypisanie wartości z UDR do zmiennej tymczasowej ? czy w jakiś konkretny sposób mam zapisać te wartości w case, jeśli chce przez terminal wysłać na przykład cyfrę 1, to ona w kodzie ASCII ma konkretny numer i mam ten numer wpisać ?


    Najprościej zamienić switch(UDR) na switch(odbierz()).

    0
  • #7 15 Lis 2015 22:16
    Mag-Łoch
    Poziom 5  

    trochę to zmieniłem, wydaje się być wszystko ok, ale jak próbuje coś wysłać z terminala tak żeby zapalić albo zgasić diode to nie działa

    0