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



Teraz jest 29 kwi 2026, o 16:35


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 11 maja 2014, o 17:22 
Offline
Użytkownik

Dołączył(a): 19 kwi 2013
Posty: 33
Pomógł: 0

Witam mam pały problem przy odbiorze danych po SPI
tak wyglada kod odbioru danych w przerwaniu

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


wszystko ładnie pięknie działa, ale przy resecie jednego z procków
kolejność odczytu jest losowa
Jak to można zsynchronizować by zawsze lsb trafiało do lsb a msb do msb?


Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 maja 2014, o 17:24 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 10 maja 2014
Posty: 24
Pomógł: 1

DORD data order w datasheet


SPCR
• Bit 5 – DORD: Data Order

When the DORD bit is written to one, the LSB of the data word is transmitted first.
When the DORD bit is written to zero, the MSB of the data word is transmitted first

_________________
Kawczynski



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 maja 2014, o 18:00 
Offline
Użytkownik

Dołączył(a): 19 kwi 2013
Posty: 33
Pomógł: 0

Kawczynski napisał(a):
DORD data order w datasheet


SPCR
• Bit 5 – DORD: Data Order

When the DORD bit is written to one, the LSB of the data word is transmitted first.
When the DORD bit is written to zero, the MSB of the data word is transmitted first


chyba nie zrozumiałeś o co mi chodzi

Z mastera wysyłam 2 bajty po kolei jeden po drugim
i teraz gdy zresetuje slave to z zależności który bajt akórat leci z mastera ten trafia jako pierwszy do slave.
Raz jest to pierwszy wysłany, a po następnym resecie trafić może jako pierwszy drugi wysłany



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 maja 2014, o 18:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Musiałbyś oznaczać bajty zrobić coś na wzór znacznika na pierwszym bicie,
o ile jest możliwa u Ciebie komunikacja siedmio-bitowa , mam na myśli że dana
przesłana do Slave jest siedmiobitowa i wystarczająca dla Twojego projektu .

Drugi pomysł to wykorzystanie dodatkowej nóżki uC do informowania co wysyłasz.

Jeszcze można by resetowanie Slave zlecić tylko Master-owi.

Takie moje luźne pomysły :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 maja 2014, o 18:41 
Offline
Użytkownik

Dołączył(a): 19 kwi 2013
Posty: 33
Pomógł: 0

Zaba napisał(a):
Musiałbyś oznaczać bajty zrobić coś na wzór znacznika na pierwszym bicie,
o ile jest możliwa u Ciebie komunikacja siedmio-bitowa , mam na myśli że dana
przesłana do Slave jest siedmiobitowa i wystarczająca dla Twojego projektu .

Drugi pomysł to wykorzystanie dodatkowej nóżki uC do informowania co wysyłasz.

Jeszcze można by resetowanie Slave zlecić tylko Master-owi.

Takie moje luźne pomysły :)


7 bitów dobry pomysł, też coś tak kombinowałem, ale lsb nie stety musi miec 8bitow
w sumie przesyłam 10bitów, z przetwornika ADC.
w msb mam 2 najstarsze bity z przetwornika + na początku adres odbiornika danej coś ala jak w i2c
i do msb można by znacznik wstawiać ale lsb bedzie 8 bit i bedzie i tak sie chrzaniło
chyba ze by przeniść 3 bity do msb, pokombinuje



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 maja 2014, o 18:47 
Offline
Moderator
Avatar użytkownika

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

Jeśli uzależniłeś kolejność bitów od zmiennej cnt, to pomyśl - skąd ten niezresetowany procek może wiedzieć - że w drugim nastąpił reset ? ... i jaki jest stan cnt ?

1. można "umówić" procki że dane (czyli np dane 16 bitowe) będą wysyłać dopiero po uprzednim przesłaniu jakiegoś 8-bitowego rozkazu, aby odbiorca mógł sobie ustawić cnt na 0 (to taki przykład)

2. można zorganizować to tak, że procek po resecie wysyła do drugiego rozkaz 8-bitowy informujący "Uwaga! przewróciłem się (czyli zresetowałem), proszę wysyłać dane od nowa, albo od bajty x czy y czy z

3. można jeszcze milion takich zasad utworzyć ... i będzie ok ;)

_________________
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  
PostNapisane: 11 maja 2014, o 18:54 
Offline
Użytkownik

Dołączył(a): 19 kwi 2013
Posty: 33
Pomógł: 0

mirekk36 napisał(a):
Jeśli uzależniłeś kolejność bitów od zmiennej cnt, to pomyśl - skąd ten niezresetowany procek może wiedzieć - że w drugim nastąpił reset ? ... i jaki jest stan cnt ?

1. można "umówić" procki że dane (czyli np dane 16 bitowe) będą wysyłać dopiero po uprzednim przesłaniu jakiegoś 8-bitowego rozkazu, aby odbiorca mógł sobie ustawić cnt na 0 (to taki przykład)

2. można zorganizować to tak, że procek po resecie wysyła do drugiego rozkaz 8-bitowy informujący "Uwaga! przewróciłem się (czyli zresetowałem), proszę wysyłać dane od nowa, albo od bajty x czy y czy z

3. można jeszcze milion takich zasad utworzyć ... i będzie ok ;)


akurat wszystkie te kwestie obmyślałem :), ale doszłem do wniesku ze jednak 7bitowe bedą najlepiej i pasowały

i msb bedzie miał najstarszy bit zawsze 0, a lsb 1 i nie bedzie potrzebny żaden cnt

zastanawiam sie tylko jak przesunąć 3 najstarsze bity z tych 10bitow (16bitowy uint) do msb?
może ktoś podpowie?

chyba sobie poradziłem

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


pozdrawiam



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 8 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