Witam.
Wziąłem się ostatnio za komunikację z komputerem. Napisałem program który na razie tylko wysyła ciąg znaków. Oczywiście chciałem aby wszystko odbywało się w przerwaniach.
Napotkałem na taki problem, który nawet nie wiem czym może być spowodowany.
Oto kod:
Ten kod nie działa poprawnie. Zamiast wysyłać na pc "tekst " to wysyła tylko znak 02 czyli start of text.
Co dziwne wystarczy dać delay powyżej 300 ms w funkcji uart_tx() (gdziekolwiek) i kod ładnie działa. Myślałem najpierw że może chodzić o to, że po wyjściu z tej funkcji tablica charów znika i uart nie ma co wysyłać. Jednak gdyby tak było to nic by nie dało danie delaya przed włączeniem przerwania od pustego bufora nadawczego.
Problem chyba leży w linijce
w funkcji uart_tx(). Już tłumaczę dlaczego tak myślę.
Gdy zmieniłem funkcję uart_tx() tak:
a txt[] to była globalna tablica w której na sztywno był wpisany tekst, to działo się to samo. Czyli tablica ze znakami była dostępna przez cały czas.
pomogło dopiero wyrzucenie
do funkcji głównej.
Przepraszam za zawiłość.
Czy ma ktoś może jakieś pomysły?
Wziąłem się ostatnio za komunikację z komputerem. Napisałem program który na razie tylko wysyła ciąg znaków. Oczywiście chciałem aby wszystko odbywało się w przerwaniach.
Napotkałem na taki problem, który nawet nie wiem czym może być spowodowany.
Oto kod:
Kod: C / C++
Ten kod nie działa poprawnie. Zamiast wysyłać na pc "tekst " to wysyła tylko znak 02 czyli start of text.
Co dziwne wystarczy dać delay powyżej 300 ms w funkcji uart_tx() (gdziekolwiek) i kod ładnie działa. Myślałem najpierw że może chodzić o to, że po wyjściu z tej funkcji tablica charów znika i uart nie ma co wysyłać. Jednak gdyby tak było to nic by nie dało danie delaya przed włączeniem przerwania od pustego bufora nadawczego.
Problem chyba leży w linijce
Kod: C / C++
w funkcji uart_tx(). Już tłumaczę dlaczego tak myślę.
Gdy zmieniłem funkcję uart_tx() tak:
Kod: C / C++
a txt[] to była globalna tablica w której na sztywno był wpisany tekst, to działo się to samo. Czyli tablica ze znakami była dostępna przez cały czas.
pomogło dopiero wyrzucenie
Kod: C / C++
do funkcji głównej.
Przepraszam za zawiłość.
Czy ma ktoś może jakieś pomysły?
