Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 2 gru 2024, o 21:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 16 mar 2016, o 09:08 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Dzień dobry,

Napisałem prosty kod do zapalania diody LED, gdy przez bluetooth wyślę znak 'F'. Dioda jest gaszona, gdy wyślę 'S'.
Niestety program nie działa, dioda jest ciągle zgaszona.
Korzystam z atmegi16a, a bluetooth to HC-05.

Oto kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Załączam również moją bibliotekę UART, w któej znajduje się funkcja do inicjalizacji komunikacji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Bluetooth jest na pewno podłączony poprawnie, tzn. jego wyprowadzenie TX jest podłączone do RX atmegi. Wiem, że BT działa poprawnie, bo komunikowałem się za jego pośrednictwem między androidem a PC.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2016, o 09:37 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

A próbowałeś coś wysłać z ATmegi? Skąd wiesz że odbierasz prawidłowe dane? Skąd wiesz że masz wszystko dobrze skonfigurowane? Włączyłeś przerwania? Czemu zmienna globalna używana w przerwaniu nie ma specyfikatora volatile? Podepnij najpierw jakąś przejściówkę pewną. Włącz przerwania spróbuj wysłać coś do putty, albo zrób echo czyli to co Ci przyszło od razu wyślij z powrotem.

------------------------ [ Dodano po: 2 minutach ]

Kup tą książkę:

https://sklep.atnel.pl/pl/p/Mikrokontro ... endrive/75


A wszystko Ci się wyjaśni, serio, to co zainwestujesz zwróci Ci się z nawiązką w postaci zdobytej wiedzy.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2016, o 09:51 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Rzeczywiście, zapomniałem o włączeniu przerwań i o volatile.
Książkę już mam.

Napiszę czy udało się rozwiązać problem.

------------------------ [ Dodano po: 36 minutach ]

Włączyłem przerwania oraz ustawiłem zmienną command jako volatile. Niestety dioda nadal nie działa.
Jeśli chodzi o samo przesyłanie, to wiem, że dane są wysyłane poprawnie, bo podłączałem bluetooth przez ftdi do pc i w terminalu jest wszystko OK. W takim razie musi być coś źle z programem na atmedze.

Sama biblioteka do uart też jest raczej poprawna, bo wcześniej komunikowałem ze sobą dwie atmegi i ta komunikacja działała poprawnie.

Oto program po wprowadzonych zmianach:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2016, o 10:58 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Już działa. Okazało się, że oprócz sei() trzeba jeszcze uaktywnić konkretnie przerwanie od RX-a (UCSRB |= (1 << RXCIE);)

Dzięki za pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO