Witam
Próbowałem na zrobić komunikację przez UART (tak i programowy jak i sprzętowy) między mikrokontrolerami Atmega8-16PU (DIP28) i Atmega8A-AU (QFP32). Program jest wzorowany na programie z książki Pawła Borkowskiego AVR&ARM7. W książce interfejs UART jest przedstawiony na przykładzie programu który łączy ze sobą dwa mikrokontrolery. do każdego z nich jest podłączona dioda i przycisk. Naciśnięcie przycisku na pierwszym mikrokontrolerze powoduje zgaszenie diody na drugim i na odwrót. Dioda jest gaszona na czas przycisku. Żeby sobie poćwiczyć zabawę z UARTami spróbowałem dodać kolejne przyciski i diody. Jak się okazało mikrokontroler głupieje gdy w programie istnieją wicej niż dwa przyciski. Co ciekawe, nie może żaden z przycisków być podpięty do wejścia PC2-PC5 (UART jest na PD0, PD1).
Sprawdzałem analizatorem stanów (SALEAE) co się dzieje. Dopóki naciskam przycisk na lini PC0, PC1 jest wszystko w porządku. Naciśnięcie przycisku z którejkolwiek lini wywołuje dziwne zachowanie na liniach TXD/RXD. Ulegają one zawieszeniu i zapętleniu. Wysyłają cały czas impulsy prostokątne:
W obu mikrokontrolerach jest dokładnie taki sam kod.
Kod programu:
Próbowałem już różnych sposóbów i różnych konfiguracji portów. Zawsze działają maksymalnie dwa przyciski na mikrokontroler.
Próbowałem na zrobić komunikację przez UART (tak i programowy jak i sprzętowy) między mikrokontrolerami Atmega8-16PU (DIP28) i Atmega8A-AU (QFP32). Program jest wzorowany na programie z książki Pawła Borkowskiego AVR&ARM7. W książce interfejs UART jest przedstawiony na przykładzie programu który łączy ze sobą dwa mikrokontrolery. do każdego z nich jest podłączona dioda i przycisk. Naciśnięcie przycisku na pierwszym mikrokontrolerze powoduje zgaszenie diody na drugim i na odwrót. Dioda jest gaszona na czas przycisku. Żeby sobie poćwiczyć zabawę z UARTami spróbowałem dodać kolejne przyciski i diody. Jak się okazało mikrokontroler głupieje gdy w programie istnieją wicej niż dwa przyciski. Co ciekawe, nie może żaden z przycisków być podpięty do wejścia PC2-PC5 (UART jest na PD0, PD1).
Sprawdzałem analizatorem stanów (SALEAE) co się dzieje. Dopóki naciskam przycisk na lini PC0, PC1 jest wszystko w porządku. Naciśnięcie przycisku z którejkolwiek lini wywołuje dziwne zachowanie na liniach TXD/RXD. Ulegają one zawieszeniu i zapętleniu. Wysyłają cały czas impulsy prostokątne:
W obu mikrokontrolerach jest dokładnie taki sam kod.
Kod programu:
Kod: text
Próbowałem już różnych sposóbów i różnych konfiguracji portów. Zawsze działają maksymalnie dwa przyciski na mikrokontroler.