ATNEL tech-forum https://forum.atnel.pl/ |
|
C, AVR, UART, TRANSMISJA https://forum.atnel.pl/topic23704.html |
Strona 1 z 1 |
Autor: | fofex [ 4 kwi 2021, o 14:27 ] |
Tytuł: | Re: C, AVR, UART, TRANSMISJA |
edwardkraweznik napisał(a): char * ppp = "ppp123"; for(int i = 0; i<sizeof(ppp); i++) sizeof wskaźnika zwraca wielkość zmiennej wskaźnikowej. W przypadku AVR wskaźniki są przeważnie 16 bitowe edwardkraweznik napisał(a): char ppp[] = "ppp123 ala ma kota..."; for(int i = 0; i<sizeof(ppp); i++) sizeof na tablicy zwraca wielkość tablicy, w tym przypadku jest to długość stringu łącznie z końcowym '\0'. Wypychając string na UART zwykle nie chcemy wysyłać końcowego 0 a więc albo trzeba wysyłać "sizeof ppp - 1" znaków, albo skorzystać z funkcji strlen. edwardkraweznik napisał(a): 1. Czy rozwiązanie jak wyżej, wysyłanie znak po znaku w pętli jest prawidłowe ? może inaczej powinienem to zrobić ? W zasadzie tak, z tym że pęta busy wait blokuje program na czas transmisji. edwardkraweznik napisał(a): 3. Co się stanie jeśli tych danych nie odbieram? mikrokontrolery mają jakiś timeout i wywalają te dane? co dokładnie się z tym dzieje? Nic się nie dzieje, znak zostanie przetransmitowany niezależnie czy odbierzesz czy nie bez informacji zwrotnej. Jak chcesz mieć informację czy timeout musisz sobie zaimplementować swoją kontrolę przepływu edwardkraweznik napisał(a): void cum_pin_snd(volatile uint8_t *pin, uint8_t pinnr) { if ( PINB & (1 << 0)) Przypuszczam że miało być |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |