Witam
Od pewnego czasu zmagam się z problemem odbioru danych przez procesor ATmega32 w kodzie Menchester.
Opisze w skrócie jak działa poniższy układ.
W przerwaniu (tryb CTC) timera 0 znajduje się funkcja obsługująca trzy wyświetlacze LED (wspólna Anoda) oraz funkcja skanująca klawiaturę.
Katody wyświetlaczy podłączone są pod PORTB, anody pod piny PD5, PD6, PD7.
Pin PD4 jest wyjściem danych.
PIN PD2 jest wejściem danych.
Podczas odbioru danych z pinu PD2 ( funkcja zgłoszenie ) występuje błąd tylko wtedy gdy przerwanie z timera 0 jest aktywne. Gdy na czas odbioru danych zablokuję to przerwanie procesor ładnie odbiera wysyłane do niego dane. I moje pytanie brzmi: Co jest nie tak z przerwaniem? Czy jego obsługa wpływa jakoś na wejście PD2?
Dodam że zmiana pinów kluczy tranzystorowych na Port np C nie pomaga.
Obsługa odbioru danych w przerwaniu INT0 też nic nie daje.
[code]
Od pewnego czasu zmagam się z problemem odbioru danych przez procesor ATmega32 w kodzie Menchester.
Opisze w skrócie jak działa poniższy układ.
W przerwaniu (tryb CTC) timera 0 znajduje się funkcja obsługująca trzy wyświetlacze LED (wspólna Anoda) oraz funkcja skanująca klawiaturę.
Katody wyświetlaczy podłączone są pod PORTB, anody pod piny PD5, PD6, PD7.
Pin PD4 jest wyjściem danych.
PIN PD2 jest wejściem danych.
Podczas odbioru danych z pinu PD2 ( funkcja zgłoszenie ) występuje błąd tylko wtedy gdy przerwanie z timera 0 jest aktywne. Gdy na czas odbioru danych zablokuję to przerwanie procesor ładnie odbiera wysyłane do niego dane. I moje pytanie brzmi: Co jest nie tak z przerwaniem? Czy jego obsługa wpływa jakoś na wejście PD2?
Dodam że zmiana pinów kluczy tranzystorowych na Port np C nie pomaga.
Obsługa odbioru danych w przerwaniu INT0 też nic nie daje.
[code]
Kod: C / C++