Witam serdecznie, potrzebuje pomocy w napisaniu programu dla atmega8.
Chodzi mi o pomoc w jego napisaniu. Z programowania nie jestem najlepszy. Problem polega na:Sczytaniu wartości z przetwornika (http://www.wobit.com.pl/download/pdf/przetworniki/MAK50.pdf), konwersji z kodu Gray`a na kod binarny oraz przesłaniu za pomocą rs232 na PC. Wszystko to na przerwaniach.
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.
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ć:
wynik=0;
for (int i=0;i<ilosc_bitow;i++) {
wynik=wynik<<1;
wynik=wynik | tablica_bitow[i];
}
Kolejno wiem, że mam dokonać konwersji z kodu Gray`a na binarny. Wiem jak tego doknać na kartce papieru, natomast gorzej zaimplementować to w programie. Do tego wszystkiego ma to być dokonane na przerwanaich,których zupełnie nie rozumiem. Prosze o pomoc. pozdrawiam
Chodzi mi o pomoc w jego napisaniu. Z programowania nie jestem najlepszy. Problem polega na:Sczytaniu wartości z przetwornika (http://www.wobit.com.pl/download/pdf/przetworniki/MAK50.pdf), konwersji z kodu Gray`a na kod binarny oraz przesłaniu za pomocą rs232 na PC. Wszystko to na przerwaniach.
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.
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ć:
wynik=0;
for (int i=0;i<ilosc_bitow;i++) {
wynik=wynik<<1;
wynik=wynik | tablica_bitow[i];
}
Kolejno wiem, że mam dokonać konwersji z kodu Gray`a na binarny. Wiem jak tego doknać na kartce papieru, natomast gorzej zaimplementować to w programie. Do tego wszystkiego ma to być dokonane na przerwanaich,których zupełnie nie rozumiem. Prosze o pomoc. pozdrawiam