Witajcie,
W chwili obecnej pracuję nad projektem który wykorzystuje SPI oraz UART. Haczyk polega na tym że biblioteka do SPI z której korzystam wykorzystuje przerwania od SPI. Problem polega na tym że osobno te dwie rzeczy działają idealnie a w momencie gdy chcę połączyć je tj. odczytać coś z SPI i wysłać tą odczytaną wartość na UART to na terminalu dostaje jakieś śmieci - łańcuchy tekstowe które wysyłam na uart dostaję w terminalu w niekompletnej postaci (np. zamiast słowa Status dostaje samo St bez żadnego znaku nowej linit itp.). Na moje oko wygląda to tak jakby przerwania od UARTa gryzły się z przerwaniem od SPI przy czym jak przeglądałem kod z BB z Projektem Wielozdaniowym to tam co prawda nie ma przerwań od SPI ale są przerwania zewnętrzne od INT (RTC), ICP (do podczerwieni) i obsługa UARTa itd. i tam takich problemów nie ma więc pewnie ja coś namotałem i nie wiem jak to ugryźć teraz.
Poniżej jest schemat płytki testowej którą wykorzystuje (tak jest tam arduino nano ale to dlatego że jest małe i dość poręczne) do testów.
Poniżej znajduje się kod pliku main.c, spi.c, spi.h, timeout.c i timeout.h
main.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
spi.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
spi.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
timeout.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
timeout.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Kodów źródłowych do uarta nie będę publikował bo jest to przerobiona wersja z bb (dostosowane rejestry do ATmegi328p, zmieniona konwencja nazewnictwa zmiennych, wycięta obsługa RS485 i dodany odbiór łańcuchów tekstowych) - chyba że Mirek się zgodzi to wtedy źródła do uarta udostępnię.
Z góry dziękuję za każda pomoc w namierzeniu problemu
.
Pozdrawiam!