Witam
Posiadam Atmega162. Piszę w AVR studio 4 - ASM. Programator to USBasp, programowanie za pomocą mkAVR
Programuję oba usarty tak samo aby przekazywał z RXD0 na TXD1 natomiast RXD1 na TXD0. Tak wiem że to bez sensu ale taki chcę omówić z wami przykład. Pytanie brzmi dlaczego dane przechodzą z RXD0 na TXD1 natomiast z RXD1 na RXD0 nie.
Jest to wykonane w przerwaniach - USART0 odebrał daną RXD0 więc wysyłam ją do TXD1 - to działa natomiast odwrotnie już nie.
Zastanawia mnie samo wyjście Portu PD1 które jest w stanie niskim mimo programowego ustawienia go jako wyjście w stanie wysokim oraz włączonym TXEN0. Po dwudniowym przestudiowaniu noty katalogowej jedyny trop jaki znalazłem to tabela nr 40 jednak nie rozumiem za bardzo czy to ma coś wspólnego i w którym miejscu blokuje sobie wyjście TXD0.
Dodam że mam dwa procki i oba reagują tak samo. Przy programowaniu fusebitów miałem znaczne problemy - zawieszał się mkAVR (może to coś znaczy).
Proszę o odpowiedz w tym prostym, ale jakże dziwnym problemie, ponieważ sam nie mogę sobie poradzić
Dodano po 2 [godziny] 48 [minuty]:
66 wyświetleń i nikt nie ma pomysłu?
Nie interesuje mnie czy w kodzie jest błąd i nie proszę o jego analizowanie.
Interesuje mnie informacja czy procesor fizycznie ma wewnątrz jaką blokadę, że np używam nie wiem INT0 czy Timera jakiegoś i czy jeżeli tam ustawie jakiś bit w rejestrach to automatycznie procesor blokuje mi funkcjonalność wyjścia PD1 (TXD0).
Np kruczek o którym dowiedziałem się na początku zabawy z ATmega8 że: Zapisanie UCSR0C muszę ustawić bit 7 ponieważ jak nie ustawisz to zapisze tą wartość do UBRR0H a nie UCSR0C. Akurat to jest opisane w nocie katalogowej ale o TXD0 nie działa i nie wiem dlaczego. Czy jest jakaś wewnętrzna zależność?

Posiadam Atmega162. Piszę w AVR studio 4 - ASM. Programator to USBasp, programowanie za pomocą mkAVR
Programuję oba usarty tak samo aby przekazywał z RXD0 na TXD1 natomiast RXD1 na TXD0. Tak wiem że to bez sensu ale taki chcę omówić z wami przykład. Pytanie brzmi dlaczego dane przechodzą z RXD0 na TXD1 natomiast z RXD1 na RXD0 nie.
Jest to wykonane w przerwaniach - USART0 odebrał daną RXD0 więc wysyłam ją do TXD1 - to działa natomiast odwrotnie już nie.
Zastanawia mnie samo wyjście Portu PD1 które jest w stanie niskim mimo programowego ustawienia go jako wyjście w stanie wysokim oraz włączonym TXEN0. Po dwudniowym przestudiowaniu noty katalogowej jedyny trop jaki znalazłem to tabela nr 40 jednak nie rozumiem za bardzo czy to ma coś wspólnego i w którym miejscu blokuje sobie wyjście TXD0.
Dodam że mam dwa procki i oba reagują tak samo. Przy programowaniu fusebitów miałem znaczne problemy - zawieszał się mkAVR (może to coś znaczy).
Proszę o odpowiedz w tym prostym, ale jakże dziwnym problemie, ponieważ sam nie mogę sobie poradzić
Dodano po 2 [godziny] 48 [minuty]:
66 wyświetleń i nikt nie ma pomysłu?
Nie interesuje mnie czy w kodzie jest błąd i nie proszę o jego analizowanie.
Interesuje mnie informacja czy procesor fizycznie ma wewnątrz jaką blokadę, że np używam nie wiem INT0 czy Timera jakiegoś i czy jeżeli tam ustawie jakiś bit w rejestrach to automatycznie procesor blokuje mi funkcjonalność wyjścia PD1 (TXD0).
Np kruczek o którym dowiedziałem się na początku zabawy z ATmega8 że: Zapisanie UCSR0C muszę ustawić bit 7 ponieważ jak nie ustawisz to zapisze tą wartość do UBRR0H a nie UCSR0C. Akurat to jest opisane w nocie katalogowej ale o TXD0 nie działa i nie wiem dlaczego. Czy jest jakaś wewnętrzna zależność?
