Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 22 gru 2024, o 18:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 9 maja 2020, o 12:54 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 344
Lokalizacja: Bydgoszcz
Pomógł: 11

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.

Obrazek

Poniżej znajduje się kod pliku main.c, spi.c, spi.h, timeout.c i timeout.h

main.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

spi.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


spi.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


timeout.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

timeout.h
Składnia: [ Pobierz ] [ Ukryj ]
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!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2020, o 14:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 145
Pomógł: 37

MichalXY napisał(a):
volatile uint8_t tx_head;
volatile uint8_t tx_tail;
volatile uint8_t rx_head;
volatile uint8_t rx_tail;

Jeśli lib UART ma tak samo nazwane zmienne z widocznością zewnętrzną to następuje ich wzajemne nadpisywanie.


Autor postu otrzymał pochwałę

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2020, o 14:25 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 344
Lokalizacja: Bydgoszcz
Pomógł: 11

fofex - zmiana nazw zmiennych które wymieniłeś dała pozytywny rezultat. Wszystko działa jak należy. Za długo w C++ pod arduino pisałem i teraz niektóre rzeczy z C muszę odrdzewić najwyraźniej. Dzięki za pomoc!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2020, o 14:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 145
Pomógł: 37

Nazwy mogłeś zostawić, za to nadać zmiennym wiązanie wewnętrzne. Wtedy było by zgodnie ze sztuką:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2020, o 15:48 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 344
Lokalizacja: Bydgoszcz
Pomógł: 11

Przed chwilą sobie doczytałem rozdział o dzieleniu projektu na pliki w BB i tam jest napisane to co Ty piszesz żeby dołożyć static aby uniewidocznić zmienną. Tak to jest jak się przez 3 lata programuje w C++ pod arduino i wraca do C (chociaż nie powiem że jest zdziwiony że jeśli zmienne są nie zadeklarowane w pliku nagłówkowym tylko w pliku źródłowym to i tak są widoczne ale skoro tak jest to nie ma co z tym dyskutować). Jeszcze raz dzięki za pomoc!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2020, o 16:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 145
Pomógł: 37

MichalXY napisał(a):
chociaż nie powiem że jest zdziwiony że jeśli zmienne są nie zadeklarowane w pliku nagłówkowym tylko w pliku źródłowym to i tak są widoczne a


No to może zdziwię Cię jeszcze bardziej jak Ci powiem, że gdybyś te zmienne przeniósł z plików .c do .h to efekt byłby dokładnie taki sam. Dla kompilatora jest obojętne czy to plik nagłówkowy czy źródłowy.

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2020, o 19:25 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

fofex napisał(a):
że gdybyś te zmienne przeniósł z plików .c do .h

Dlatego w języku C nie umieszcza się definicji zmiennych w plikach *.h ... tylko same deklaracje zmiennych

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO