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



Teraz jest 26 kwi 2024, o 04:35


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 29 sie 2018, o 04:04 
Offline
Nowy

Dołączył(a): 08 lis 2017
Posty: 4
Pomógł: 0

Witam wszystkich

Więc problem jak w temacie.

Zagadka powstała po tym jak zacząłem experymentować po lekturze poradników o "prostym Terminalu Bluetooth" autorstwa szanownego Mirka Kardasia (dzięki Mu niech będą i szacunek za to co robi)
(#0245, #0246, #0247, #0248, #0250, #0251)
Przerobiłem krok po kroku omawiany w poradnikach kod w B4A.

Wsystko dziala super (!!!!!!!), ale:
mój experyment polega na tym, że zamiast terminala PC używam AVR ATmega328P.

I teraz:
Terminal PC + FTDI + HC-05 <=> Android (app B4A) - konfiguracja działająca; komunikacja w obie strony bo obserwuję na terminalu i na telefonie
Terminal PC + FTDI <= AVR ATmega328P - konfiguracja działająca; komunikacja w jedną stronę (na razie) bo obserwuję na terminalu to co wysyłam z procka (0x41 czyli literę "A" i to widzę na terminalu PC)

AVR ATmega328P + HC-05 <=> Android (app B4A) - konfiguracja nie działa; litera "A" wysyłana z procka do telefonu nie dociera (a procek ją na pewno potrafi wysłać - nie wiem czy wysyła jak mu podłączę BT)

Nie mam pojęcia dlaczego procek na terminal wysyła dane a przez BT już nie.

w AVR transmisja wygląda tak :

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


Natomiast w kodzie B4A zdarzenie NewText wygląda tak:

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


Zatem z AVR wysyłam coś jako "hex" a w app oczekuję stringa - czy to może być powodem, że nic się nie pojawia w komponencie "edtLog" ???
No moim zdaniem tu nie powino się to gryźć bo przecież terminal rozpoznaje 0x41 i pokazuje śliczne duże "A"
Ale mogę się mylić...

Ponieważ AVR jest zasilany 5V to na jego lini Tx stosuję najprostszy znaleziony w necie dzielnik rezystorowy aby stan wysoki ok 5V sprowadzić do poziomu ok 3,3V , który jest tolerowany przez moduł BT - przynajmniej takich połączeń z dzielnikiem można znaleźć dużo w necie i wg autorów różnej maści, taki dzielnik powinien wystarczyć.

Robiłem też doświadczenie bez dzielnika na lini Tx, zasilając AVR napięciem 3,3V - efekt taki sam: osobno AVR z terminalem na PC działa (litera "A" pojawia sie w terminalu na PC) , również osobno moduł BT z terminalem na PC działa (efekty obserwuję na Androidzie)
ale jeśli podłączę BT i AVR to na telefonie nie ma nic.


Aha:
z poziomu AVR testowane było tylko wysyłanie "A"
Nie testowałem odbioru bo w kodzie asemblera utknąłem właśnie przy nadawaniu.

Czy któryś z szanownych forumowiczów może udzielić jakieś wskazówki / sugestii?
Może ktoś miał podobny problem?

Będę wdzięczny za wszelkie odpowiedzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2018, o 07:38 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27226
Lokalizacja: Szczecin
Pomógł: 1041

Nie za bardzo jestem w stanie się wgryzać a temat ale tak na szybko co mi przychodzi na myśl - czytając ogólnie o problemie. To czy kolega nie zapomniał o specyficznej różnicy w znakach końca linii ? ;)

toż Android w ogóle nie wysyła na końcu znaku ENTER czyli (13) .... trzeba ręcznie to robić. Chyba że na razie testujesz tylko wysyłanie samych pojedynczych znaków a nie stringów.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2018, o 16:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Czy konfiguracja HC-05 dla testu z PC i ATmega328 jest taka sama (włącznie z takim samym podłączeniem pinu KEY)?
Czy na pewno masz odpowiednio ustawiona prędkość RS232 na procesorze?

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2018, o 04:45 
Offline
Nowy

Dołączył(a): 08 lis 2017
Posty: 4
Pomógł: 0

Bardzo dziękuję kolegom za reakcję i odpowiedzi.

Już się odnoszę kolejno:

@mirekk36:
tak, najpierw chcę wysłać pojedynczy znak a potem - w ramach praktyki - chcę potrenować wysyłanie stringów. Na razie mam mgliste pojęcie jak to w assemblerze zrealizować ale to kwestia czasu kiedy się nauczę. - Owszem, wiem, że to zadanie jest banalnie proste w C. Na razie jednak zostaję przy assemblerze.

@rskup:
config HC-05:
38400,0,0 - jest to odpowiedź na zapytanie AT+UART? (38400 bits/s, 1 bit STOP, bez bitu parzystości)

config AVR:
UCSR0A:
U2X0=1 - podwójna prędkość transmisji

UCSR0B:
RXCIE0 = 1 - zezwolenie na obsługę przerwania po wykryciu ustawienia bitu RXC0
TXCIE0 = 1 - zezwolenie na obsługę przerwania po wykryciu ustawienia bitu TXC0
RXEN0 = 1 - wł. możliwości odbioru danych
TXEN0 = 1 - wł. możliwości wysyłania danych

UCSR0C:
UMSEL0[1:0] = 00 - USART asynchroniczny
UPM0[1:0] = 00 - bez bitu parzystości
USBS0 = 0 - 1 bit STOPU
UCSZ0[1:0] = 11 - dane 8-bitowe


i nastawy prędkości transmisji:
UBRR0H = 0x00 (d: 0)
UBRROL = 0x2F (d: 47)
- wg dokumentacji dla ATmega328P dla podwójnej prędk. transmisji (U2X0=1) przy fosc=14.7456MHz (a taki właśnie mam) , UBRR0 =74 dla 38400bps

Tak więc raczej parametry transmisyjne AVR i BT są takie same (no chyba, że coś przeoczyłem)

Natomiast nie bardzo rozumiem pytania o pin KEY:
o ile w module BT jest przycisk, który na pin34 (KEY) podaje 3,3V aby włączyć komendy AT, o tyle w AVR takiego nie znalazłem ^^

Trudno mi zatem odpowiedzieć, czy podłączenie pinu KEY jest takie samo :)

No chyba, że słowo-klucz "pin KEY" odnosi się do czegoś innego.

Pozdrawiam
Sławek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2018, o 06:18 
Offline
Nowy

Dołączył(a): 08 lis 2017
Posty: 4
Pomógł: 0

Witam po króciutkiej przerwie... :)

Dzięki wam udało mi się rozwikłać zagadkę:
Kolega rskup przynaglił mnie do ponownej analizy mojego kodu asm, co uczyniłem dość skrupulatnie.
Kolega mirekk36 naprowadził mnie na trop brakującego "ENTERA".

I rzeczywiście: po analizie kodu, okazało się, że trzeba wykonać małą korektę co do kolejności niektórych rozkazów i każdorazowego powtórzenia transmisji znaku "ENTER" po każdej transmisji litery "A"
Nie wiem czemu ale mnie nagle olśniło, że przecież ten "ENTER" to też znak i że można a nawet trzeba go wysłać tak jak każdy inny znak!!!
Przerobiłem kod i zadziałało !!!!

Temat zamknięty.

Dziękuję za poświęconą uwagę i kilka słów odpowiedzi!!!

Pozdrawiam
Sławek



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: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO