Sczytaniu wartości z przetwornika (http://www.wobit.com.pl/download/pdf/pr ... /MAK50.pdf), konwersji z kodu Gray`a na kod binarny oraz przesłaniu za pomocą rs232 na PC. Wszystko to na przerwanaich.
Co do samego sczytania wartości to wiem,że przetwornik jest enkoderem 10-bitowym. Postanowiłem, że wykorzystam port C i D uC. Do portu C podłącze 6 przewodów (mam wszystkie 6 do dyspozycji), a do portu D 4. Mniej więcej wiem jak tego dokonać. Potrzebuje do tego zmiennej 10-bitowej (16 bitów wystarczy), by "upakować" 6 bit i 4 bit w int.
Kod: Zaznacz cały
cala_liczba = (bity_bardziej_znaczace<<4) | bity_mniej_znaczace;Przesuwamy po prostu bity bardziej znaczące o 4 miejsca w lewo, a później dołączamy (operacja or na bitach) bity mniej znaczące. Wcześniej trzeba by skonwertować zmienną z bitami bardziej znaczącymi do long long int tak żeby po przesunięciu o 4 miejsca nie 'przekręciła' się.
W bardziej ogólnym przypadku gdy każdy z bitów jest w innej zmiennej można napisać:
Kod: Zaznacz cały
wynik=0;
for (int i=0;i<ilosc_bitow;i++) {
wynik=wynik<<1;
wynik=wynik | tablica_bitow[i];
}
Edit: Proszę używać znacznika CODE. Ddevil