ATNEL tech-forum https://forum.atnel.pl/ |
|
UART problem z odbieraniem całego stringa. https://forum.atnel.pl/topic24261.html |
Strona 1 z 1 |
Autor: | antosV10 [ 25 cze 2022, o 10:50 ] |
Tytuł: | UART problem z odbieraniem całego stringa. |
Nie mogę odebrać całego stringa. Stworzyłem funkcje która ma zwrócić wskaźnik do początku tablicy a następnie ten wskaźnik przekazywany jest do funkcji wysyłającej cały string do komputera. Używam do tego 2 atmeg328P jedna wysyła string "hello\n\r" a druga go odbiera i przesyła do komputera. Na terminalu znaki wyświetlą się czasami poprawnie a czasami występuje np. podwojona litear 'l' albo 'o', innym razem string jest cały pocięty i do komputera dochodzą pierwsze 3 litery. Gdzie mam błąd mojej tej funkcji, bo funkcje nadającą string i odbierającą jeden znak brałem z blue booka. Kod atmegi nadajacej do komputera: język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Kod atmegi nadjącej do drugiego mikrokontrolera: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Moja funkcja do odbierania stringa |
Autor: | micky [ 25 cze 2022, o 10:58 ] |
Tytuł: | Re: UART problem z odbieraniem całego stringa. |
Jakie taktowanie i czym, jaka prędkość transmisji? |
Autor: | antosV10 [ 25 cze 2022, o 12:11 ] |
Tytuł: | Re: UART problem z odbieraniem całego stringa. |
micky napisał(a): Jakie taktowanie i czym, jaka prędkość transmisji? 16MHz zewnętrzny kwarc, prędkość 9600, ale tutaj raczej wszystko mam dobrze bo odbieranie i nadawanie pojedynczych znaków i nadawanie stringów działa idealnie. |
Autor: | mirekk36 [ 25 cze 2022, o 12:48 ] |
Tytuł: | Re: UART problem z odbieraniem całego stringa. |
skoro masz w funkcji język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. to jak myślisz co się stanie po ponownym wejściu do funkcji ? i znowu będzie =0 więc co ci da w pętli while() język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. że zwiększysz zmienną i ? |
Autor: | antosV10 [ 25 cze 2022, o 23:09 ] |
Tytuł: | Re: UART problem z odbieraniem całego stringa. |
mirekk36 napisał(a): że zwiększysz zmienną i ? Mi właśnie o to chodzi, że jak wyjdę z funkcji to zmienna i = 0 tak że za każdym jej wywołaniem nie trzeba jej resetować. Operacja i++ ma zapisywać kolejny odebrany znak do tablicy result pod odpowiednim indeksem. Na końcu ta tablica ma być zwrócona. |
Autor: | mirekk36 [ 26 cze 2022, o 06:12 ] |
Tytuł: | Re: UART problem z odbieraniem całego stringa. |
dobrze, sorki nie zauważyłem tego uart_getc(); w pętli ------------------------ [ Dodano po: 1 minucie ] a sprawdzałeś co zwraca uart_getc(); ? czy tam nie ma tak że jeśli nie dotrze żaden znak to zwraca zero ? |
Autor: | antosV10 [ 26 cze 2022, o 09:20 ] |
Tytuł: | Re: UART problem z odbieraniem całego stringa. |
mirekk36 napisał(a): dobrze, sorki nie zauważyłem tego uart_getc(); w pętli ------------------------ [ Dodano po: 1 minucie ] a sprawdzałeś co zwraca uart_getc(); ? czy tam nie ma tak że jeśli nie dotrze żaden znak to zwraca zero ? Faktycznie nie zwróciłem uwagi. Kod lekko zmodyfikowałem i teraz działa prawie dobrze tylko program gubi mi pierwszą literkę. Co mogę z tym zrobić? |
Autor: | mirekk36 [ 26 cze 2022, o 23:05 ] |
Tytuł: | Re: UART problem z odbieraniem całego stringa. |
antosV10 napisał(a): _delay_ms(1000); Nie ma co się dziwić że coś gubi skoro używasz TAK PASKUDNEGO DELAYA, wywal go w diabły. |
Autor: | Kuźnia [ 28 cze 2022, o 07:23 ] |
Tytuł: | Re: UART problem z odbieraniem całego stringa. |
Sprawdź czy po tej modyfikacji przy każdym wywołaniu funkcjia uart_get_string nie zwraca '\r'. Może wtedy dochodzić do nadpisywania wcześniej odebranych i wyświetlonych danych w terminalu. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |