Cześć! Ponieważ pod moim poprzednim postem nie było odpowiedzi, a trochę rzeczy już ustaliłem, postanowiłem stworzyć oddzielny temat. Tutaj już mój system operacyjny nie powinien mieć znaczenia.
UC jakiego używam to atmega 328p.
Co chce osiągnąć?
przesyłanie niewielkich danych z telefonu do mikrokontrolera w celu zdalnego sterowania wielokanalowego jakimś urządzeniem.
Co już mam?
sprawny hc-05
działający dwukierunkowy konwerter poziomów logicznych (3.3-5v)
Programator usbASP I eclipse z wtyczka
Bluetooth terminal i roboremo na smartfonie
Moduł hc-05 bez problemu paruje się i łączy z telefonem. Po zawarciu że sobą pinów rxd I txd odsyła wysłane dane do telefonu. W terminalu jako tekst, jak i w roboremo po ustawieniu dwóch suwakow z takim samym id - przesuwając jeden, przesuwa się też drugi.
W czym jest problem?
inicjalizacja w mikrokontrolerze. Powiedzmy, że chciałbym osiągnąć to samo co przy zawarciu rxd z txd, tylko przez UC
. Dalej już sobie poradzę. Niech mikrokontroler odbierze dane, zapisze w zmiennej i odeśle z powrotem.
O ile z ADC poradziłem sobie używając noty, o tyle z UART mam problem. Jakoś ciężko mi to idzie. Co ciekawe, w nocie są gotowe kody do inicjalizacji, wysłania i odbioru danych. Tylko po zrobieniu kopiuj-wklej kod nie chce się kompilowac.
Jak się domyślam, dla niektórych na tym forum będzie to kwestia pięciu minut. Chciałbym jakiegoś gotowca, żeby mieć bazę. Tylko inicjalizacja, wysłanie i odebranie danych. Wolałbym też póki co uniknąć przerwan, jeżeli taka możliwość istnieje.
Nie wiem też, czy mogę np wykorzystać poradniki dotyczące rs232 albo UART przez WiFi, czy jest jakaś różnica. Szkoda mi całego dnia oglądania poradników żeby sprawdzić, że rs 232 nie ma nic wspólnego z komunikacją przez hc-05.
Kod który mam teraz(nie kompiluje się)
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Co zwraca kompilator:
Kod:
23:56:28 **** Incremental Build of configuration Release for project testy ****
make all
Building file: ../.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
Invoking: AVR Compiler
avr-gcc -I/home/bartosz/projekty/avr/libs -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega328p -DF_CPU=1000000UL -MMD -MP -MF".metadata/.plugins/org.eclipse.cdt.make.core/specs.d" -MT".metadata/.plugins/org.eclipse.cdt.make.core/specs.o" -c -o ".metadata/.plugins/org.eclipse.cdt.make.core/specs.o" "../.metadata/.plugins/org.eclipse.cdt.make.core/specs.c"
Finished building: ../.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -I/home/bartosz/projekty/avr/libs -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega328p -DF_CPU=1000000UL -MMD -MP -MF"main.d" -MT"main.o" -c -o "main.o" "../main.c"
../main.c: In function 'zero':
../main.c:16:2: warning: implicit declaration of function 'USART_Init' [-Wimplicit-function-declaration]
USART_Init(MYUBRR);
^~~~~~~~~~
../main.c: At top level:
../main.c:18:6: warning: conflicting types for 'USART_Init'
void USART_Init( unsigned int ubrr)
^~~~~~~~~~
../main.c:16:2: note: previous implicit declaration of 'USART_Init' was here
USART_Init(MYUBRR);
^~~~~~~~~~
../main.c: In function 'USART_Init':
../main.c:21:2: error: 'UBRR0H' undeclared (first use in this function)
UBRR0H |= (unsigned char)(ubrr>>8);
^~~~~~
../main.c:21:2: note: each undeclared identifier is reported only once for each function it appears in
../main.c:22:2: error: 'UBRR0L' undeclared (first use in this function)
UBRR0L |= (unsigned char)ubrr;
^~~~~~
../main.c:24:2: error: 'UCSR0B' undeclared (first use in this function)
UCSR0B |= (1<<RXEN0)|(1<<TXEN0);
^~~~~~
../main.c:24:16: error: 'RXEN0' undeclared (first use in this function)
UCSR0B |= (1<<RXEN0)|(1<<TXEN0);
^~~~~
../main.c:24:27: error: 'TXEN0' undeclared (first use in this function)
UCSR0B |= (1<<RXEN0)|(1<<TXEN0);
^~~~~
../main.c:26:2: error: 'UCSR0C' undeclared (first use in this function)
UCSR0C |= (1<<USBS0)|(1<<UCSZ00);
^~~~~~
../main.c:26:16: error: 'USBS0' undeclared (first use in this function)
UCSR0C |= (1<<USBS0)|(1<<UCSZ00);
^~~~~
../main.c:26:27: error: 'UCSZ00' undeclared (first use in this function)
UCSR0C |= (1<<USBS0)|(1<<UCSZ00);
^~~~~~
make: *** [subdir.mk:20: main.o] Błąd 1
23:56:30 Build Finished (took 2s.199ms)