Na wstępie dodam, że po prostu nie miałem pojęcia jak nazwać temat. Nie jest on też problemem samym w sobie, a jedynie pytaniem, czy ktoś się z tym spotkał, jak nazywa się takie zjawisko i kiedy należy na nie zwracać uwagę. Czym dokładnie?
Aktualnie próbuję swoich sił w obsłudze klawiatury matrycowej 2R x 4K na ATMedze 328p. Połączenia:
- PC1:0 to rzędy, ustawione na wyjścia
- PC5:2 to kolumny, ustawione na wejścia z podpięciem do Vcc
- PD7:0 to katody 7-segmentowego wyświetlacza ze wspólną anodą
Kod obsługi klawiatury:
Otóż, z powyższym kodem (nie oceniajcie go, czy nadaje się do obsługi klawiatury, czy nie - dopiero wchodzę w zagadnienie i końcowo na pewno będzie to wyglądało inaczej) kiedy nacisnę przycisk odpowiedzialny za wyświetlenie pierwszego segmentu, wyświetla mi się segment piąty. Jeśli nacisnę przycisk odpowiedzialny za segment piąty, wyświetli mi się segment pierwszy. Jest tak tylko z tymi przyciskami. Po dłuższej rozkminie doszedłem do wniosku, że może pomiędzy przypisaniem do portu C nowej wartości, a pierwszym ifem jest hmm.. Za mało czasu? Dałem więc delaya na 5ms i nie do wiary, zadziałało.
Czy ktoś jest w stanie wyjaśnić mi o co tu chodzi? Dlaczego tak się dzieje? Zapis do rejestru zajmuje więcej czasu niż wykonanie następnej linijki kodu? Czy, bądź co bądź, procedury w uC nie wykonywane są jedna po drugiej? No po prostu, że tak powiem, jestem zbity z tropu
Aktualnie próbuję swoich sił w obsłudze klawiatury matrycowej 2R x 4K na ATMedze 328p. Połączenia:
- PC1:0 to rzędy, ustawione na wyjścia
- PC5:2 to kolumny, ustawione na wejścia z podpięciem do Vcc
- PD7:0 to katody 7-segmentowego wyświetlacza ze wspólną anodą
Kod obsługi klawiatury:
Kod: C / C++
Otóż, z powyższym kodem (nie oceniajcie go, czy nadaje się do obsługi klawiatury, czy nie - dopiero wchodzę w zagadnienie i końcowo na pewno będzie to wyglądało inaczej) kiedy nacisnę przycisk odpowiedzialny za wyświetlenie pierwszego segmentu, wyświetla mi się segment piąty. Jeśli nacisnę przycisk odpowiedzialny za segment piąty, wyświetli mi się segment pierwszy. Jest tak tylko z tymi przyciskami. Po dłuższej rozkminie doszedłem do wniosku, że może pomiędzy przypisaniem do portu C nowej wartości, a pierwszym ifem jest hmm.. Za mało czasu? Dałem więc delaya na 5ms i nie do wiary, zadziałało.
Czy ktoś jest w stanie wyjaśnić mi o co tu chodzi? Dlaczego tak się dzieje? Zapis do rejestru zajmuje więcej czasu niż wykonanie następnej linijki kodu? Czy, bądź co bądź, procedury w uC nie wykonywane są jedna po drugiej? No po prostu, że tak powiem, jestem zbity z tropu