ATNEL tech-forum https://forum.atnel.pl/ |
|
UART + dodatkowy bit - problem https://forum.atnel.pl/topic20859.html |
Strona 1 z 1 |
Autor: | marcin-9999 [ 10 cze 2018, o 21:38 ] |
Tytuł: | UART + dodatkowy bit - problem |
Witam, ramka którą muszę wysłać składa się standardowo( jeden bit startu, następnie 8 bitów danych, bit-x, i jeden bit stopu). Jak widać bit który mnie interesuje (bit x)jest w miejscu bitu parzystości jednak w ramce którą muszę nadać z Atmega32 do urządzenia odbiorczego musi on zawsze posiadać wartość zero. Więc nie jest to 9 bitów danych bo ten bit jest niezmienny. Czy podpowie ktoś jak zmodyfikować bibliotekę np. MKUART z niebieskiej książki z której korzystam aby móc wysłać taką ramkę po UARCie ? |
Autor: | krish [ 10 cze 2018, o 22:38 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
W DS od Atmegi 328P rozdział: 20.6.2 Sending Frames with 9 Data Bit plus przykładowy kod w asm i w C. |
Autor: | xentis [ 10 cze 2018, o 22:38 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
A cóż za problem ustawić UARTa na format 1 bit startu, 9 bitów danych i 1 bit stopu bez parzystości? Wówczas ten 9 bit doklejasz do standardowo wysyłanych ośmiu bitów jako zero i masz 8 bitów z dodatkowym zerem. Dodatkowy 9 bit masz w rejestrze UCSRB. Ten bit musi zawsze być zapisany/odczytany jako pierwszy przed operacją na rejestrze UDR. W nocie PDF od atmegi32 masz nawet przykład kodu w C i ASM właśnie dla nadawania 9 bitów. http://ww1.microchip.com/downloads/en/DeviceDoc/doc2503.pdf strona 148. |
Autor: | marcin-9999 [ 10 cze 2018, o 23:09 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
Wiem jak ustawić ramkę na 9 bitów ale nie do końca rozumiem jak dokleić ten 1 bit jako zero do całości. Kod w C z pdf widziałem. |
Autor: | JarekB [ 11 cze 2018, o 05:25 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
Nie doklejasz dziewiątego bitu do ramki Tym zajmuje się sprzęt. Możesz ustawić wartość tego bitu jako 1 lub 0 komendami: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. |
Autor: | marcin-9999 [ 11 cze 2018, o 17:06 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
tak wygląda funkcja moja: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. i bit w funkcji Init ustawiony: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. a znak wysyłam nową funkcją w pętli while w programie głónym: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. znak jest wysyłany jednak ostatni (9 bit ma stan wysoki zamiast 0) |
Autor: | krish [ 11 cze 2018, o 17:46 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
Poszukaj gdzie są bity: UCSZ0, UCSZ1, UCSZ2 w ATmedze32. |
Autor: | marcin-9999 [ 11 cze 2018, o 17:52 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
one są do ustawiania ilości bitów danych. UCSRB zamiast UCSRC?? |
Autor: | krish [ 11 cze 2018, o 18:25 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
A co mówi datasheet? |
Autor: | xentis [ 11 cze 2018, o 18:50 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
marcin-9999 napisał(a): i bit w funkcji Init ustawiony: Składnia: [ Pobierz ] [ Ukryj ] język c UCSRC = (1<<URSEL)|(7<<UCSZ0); GeSHi Bit UCSZ2 znajduje się w rejestrze UCSRB więc twoje UCSRC = (1<<URSEL)|(7<<UCSZ0); nie wybiera 9 - bitowej transmisji tylko 8 - bitową i dwa bity stopu (bo ustawiasz tylko UCSZ0 i UCSZ1 oraz bit USBS) |
Autor: | krish [ 11 cze 2018, o 18:59 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
@Xentis- nie dajesz koledze satysfakcji samodzielnego dojścia do rozwiązania problemu, tylko tak "kawa na ławę" |
Autor: | xentis [ 11 cze 2018, o 19:19 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
Ależ przecież wczoraj celowo nie podałem rozwiązania na tacy tylko dokładne miejsce gdzie ma szukać z przykładowym kodem jak na dłoni... Kolega sobie nie poradził więc myślę że konkretne wskazanie błędów "zdrowsze" będzie niż wyrwane wszystkie włosy z głowy. Jeśli chce się czegoś nauczyć to przeanalizuje i zapamięta, jeśli potrzebuje tylko żeby działało to i tak prowadzenie za rączkę na nic się zda... |
Autor: | marcin-9999 [ 11 cze 2018, o 22:14 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. hmm czy tak? w tej chwili nie mam możliwości przetestowania. ps. oczywiście, że chce się nauczyć, ale mam małe doświadczenie i noty stanowią póki co problem, dlatego bardzo dziękuje za każdą pomoc. |
Autor: | xentis [ 12 cze 2018, o 11:18 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
Przepraszam ale wprowadziłem Ciebie w błąd tym sposobem zapisu do rejestru UCSRC. Tak jak pisze kolega krish, URSEL musi jednak być w jednej linii razem z danymi do zapisu w rejestrze... |
Autor: | krish [ 12 cze 2018, o 15:03 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
Niestety nie. 1. wpisujesz '1' pod bit URSEL ( co powoduje wybranie i zapis do rejestru UCSRC). 2. w następnej operacji chcesz ustawić UCSZ0 i UCSZ1, ale wpisujesz je już do rejestru UBBRH ( a dlaczego? -opisuje DS). 3. tu jest OK. ps. bez czytania i zrozumienia DS daleko nie zajedziesz. podpowiedź: połącz punkt 1 i 2 w jedną całość. |
Autor: | marcin-9999 [ 12 cze 2018, o 18:32 ] |
Tytuł: | Re: UART + dodatkowy bit - problem |
język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. no to tak by to wyglądało, taka opcja działa. dzięki za pomoc !! |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |