Cześć chcę napisać program obsługujący transmisję pomiędzy komputerem a mikrokontrolerem poprzez RS485. Wykorzystuje do tego celu układ max3483. Czytałem dokumentację ST w której proponowane są dwa rozwiązania co do zarządzania linią sterującą kierunkiem transmisji:
1. Wykorzystanie przerwania od USARTA-TC oraz przerwania od DMA TC.
2. Wykorzystanie dwóch przerwań od USARTA TC, TXE.
Mimo to chciałem wykorzystać przerwanie RXNE ponieważ, uC docelowo będzie ustawiony w tryb nasłuchu i będzie tylko odpowiadał na otrzymane komendy.
Na wstępie bez sterowania linią kierunkową chciałem wysłać coś z komputera i zapisać to w tablicy. Ewidentnie coś robię źle bo wysyłam jakiś ciąg znaków a w tablicy zapisuje się coś zupełnie innego (zazwyczaj rozszerzony znak ASCII).
Wysyłanie z kompa i odsyłanie tego z uC po rs232 działa. Myślałem, że to samo odbiorę po rs485 jednak mam z tym problem. Proszę o pomoc.
Obsługa przerwania:
Pytanie podstawowe brzmi dlaczego jak wyślę z komputera "cos<CR>" to otrzymuję praktycznie zawsze rozszerzone znaki ascii oczywiście bez <CR> czyli ten warunek w obsłudze przerwania nigdy nie zachodzi, chyba że przez przypadek.
1. Wykorzystanie przerwania od USARTA-TC oraz przerwania od DMA TC.
2. Wykorzystanie dwóch przerwań od USARTA TC, TXE.
Mimo to chciałem wykorzystać przerwanie RXNE ponieważ, uC docelowo będzie ustawiony w tryb nasłuchu i będzie tylko odpowiadał na otrzymane komendy.
Na wstępie bez sterowania linią kierunkową chciałem wysłać coś z komputera i zapisać to w tablicy. Ewidentnie coś robię źle bo wysyłam jakiś ciąg znaków a w tablicy zapisuje się coś zupełnie innego (zazwyczaj rozszerzony znak ASCII).
Wysyłanie z kompa i odsyłanie tego z uC po rs232 działa. Myślałem, że to samo odbiorę po rs485 jednak mam z tym problem. Proszę o pomoc.
Kod: C / C++
Obsługa przerwania:
Kod: C / C++
Pytanie podstawowe brzmi dlaczego jak wyślę z komputera "cos<CR>" to otrzymuję praktycznie zawsze rozszerzone znaki ascii oczywiście bez <CR> czyli ten warunek w obsłudze przerwania nigdy nie zachodzi, chyba że przez przypadek.