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