Problem wygląda następująco: korzystam z 4 linii danych portu LPT. Według mojego założenia, atmega powinna rozpoznawać następujące stany:
0001
0010
0011
0100
0101
0110
0111
1000
i na ich podstawie (w czasie ich wystąpienia) realizować pewne zadania (w moim przypadku jest to sterowanie silnikami krokowymi). Aby sprawdzić stan najpierw do zmiennych zapisuję stan portu w danym momencie, a potem sprawdzając wartości zmiennych realizuję pewne zadania. Wygląda to mniej więcej tak:
Jeżeli z portu lpt atmega odczyta np. taki stan :0001 to wszystko jest ok, ale jeżeli zostaje odczytany stan 0011 to silnik, który powinien się kręcić po odczytaniu przez atmegę stanu 0011 pracuje poprawnie, ale czasami występują drgania czy pojedyńcze skoki silnika, który powinien pracować przy stanie 0001. Jest jakaś możliwość pozbycia się tego błędu w inny sposób, niż zwiększenia linii danych?
0001
0010
0011
0100
0101
0110
0111
1000
i na ich podstawie (w czasie ich wystąpienia) realizować pewne zadania (w moim przypadku jest to sterowanie silnikami krokowymi). Aby sprawdzić stan najpierw do zmiennych zapisuję stan portu w danym momencie, a potem sprawdzając wartości zmiennych realizuję pewne zadania. Wygląda to mniej więcej tak:
Kod: C / C++
Jeżeli z portu lpt atmega odczyta np. taki stan :0001 to wszystko jest ok, ale jeżeli zostaje odczytany stan 0011 to silnik, który powinien się kręcić po odczytaniu przez atmegę stanu 0011 pracuje poprawnie, ale czasami występują drgania czy pojedyńcze skoki silnika, który powinien pracować przy stanie 0001. Jest jakaś możliwość pozbycia się tego błędu w inny sposób, niż zwiększenia linii danych?
