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



Teraz jest 11 wrz 2025, o 17:29


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 16 lut 2015, o 23:48 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 02 paź 2013
Posty: 21
Pomógł: 0

Witajcie,

Męczę się z tym już dłuższy czas i wymiękam...
Robię testy z układem MCP3421 i o ile po poradnikach Mirka odczyt wyniku z rozdzielczością 16 bit nie mam problemów, to wymiękłem na rozdzielczości 18bit.
Zgodnie z DS dla 18 bitów zwracana wartość jest w 3 bajtach (tabelka na dole strony13). No więc odczytuję sobie po kolei te trzy bajty do buforów 0-2, zgodnie z poradnikiem Mirka - buf[0], buf[1], buf[2]. W buf[0] jest najstarsza część, w buf[2] najmłodsza. Zgodnie z DS w buf[0] ostanie 6 bitów odrzucam, 2 bit to bit znaku który mnie nie interesuje a maskuję tylko bit 1, bo zawiera on 17 bit wartości odczytywanej. Wobec tego piszę sobie taką oto linijkę kodu do wyłuskania wartości:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I otrzymuję ostrzeżenie, że:
Cytuj:
../main.c:50: warning: left shift count >= width of type


Program piszę w Eclipse Indigo z toolchainem WinAVR. No i zbaraniałem - no bo przecież zadeklarowana zmienna wynik ma 32bity, to jak mogę przekraczać zakres?
Ma ktoś pomysł?, bo ja wysiadam :)

Pozdrawiam
Benek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2015, o 00:30 
Offline
Użytkownik

Dołączył(a): 03 lis 2012
Posty: 43
Pomógł: 1

A co się dzieje, jeżeli zmienną wynik zadeklarujesz jako "unsigned long wynik"? Dołączyłeś bibliotekę <stdint.h>? Jeżeli to nie pomoże, to wtedy trzeba będzie zrobić rzutowanie zmiennej:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


EDIT
Chociaż w sumie kolejnych rzutować już nie trzeba, więc wystarczy po prostu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

A przynajmniej tak mi się wydaje ;).


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2015, o 22:22 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 02 paź 2013
Posty: 21
Pomógł: 0

Dzięki, działa!

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


Taka mała zmiana kodu, a tak wielka różnica w działaniu :)

Z drugiej strony - człowiek uczy się całe życie i głupim umiera :)

Benio



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: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Majestic-12 [Bot] i 1 gość


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO