Re: Odczyt stanu wej?cia w ATmega8 i opó?nienie

Jun 26, 2010 Last reply: 16 years ago 1 Replies

A wiecie dlaczego o to pytałem. Bo wpadła mi do rąk książka "AVR i ARM7 programowanie mikrokontrolerów dla każdego" wyd. Helion i tam jest przykład odczytu klawiatury 4x4. Autor (dr inż.) wpisuje na PORTD.2 i 3 stany wysokie a odczytuje linię PIND.0 i 1 i przed odczytem pisze ze musi byc instrukcja nop. Pisze coś takiego "Dokumentacja ATmega8 podaje że stabilizacja stanu wejścia wymaga około jednego taktu zegara. chodzi o to że stany bitów PORTx są kopiowane do rejestru PINx a poprawne wykonanie tej operacji wymaga jednego taktu zegara."



Kompletnie nie wioem o co tu chodzi, nic nie wyjaśnił, jest tylko przykład jak podaem z odczytem klawiatury i ten cytowany krótki komentarz. Wytłumaczcie jak możecie co jest grane?


slawek7 pisze:

W uproszczeniu: Jak wystawiasz coś na port to najpierw jest ta wartość zapisywana do rejestru wyjściowego (PORTx). Na początku cyklu pracy stan wejść jest kopiowany do rejestru wejściowego (PINx) a wyjścia są ustawiane wg wartości z PORTx. Sam stan zmienia się równolegle z wykonywaniem kolejnej instrukcji.

Dlatego w przypadku klawiatury, gdzie jak rozumiem 0,1 to wiersze a 2,3 to kolumny, musisz poczekać aż wartość z PORTx.2 zostanie użyta do ustawienia wyjścia - prąd popłynie przez przycisk i zmieni stan na wejściu, który zostanie umieszczony w rejestrze PINx.0 na początku kolejnej instrukcji.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required