Witam
Zestawiłem następujący układ: Dwie Atmegi32, wyjścia portów A,B,C podpięte do diodek. Atmega jest połączona poprzez MAX232 z porem COM komputera. Kwarc 16MHz, zmierzone napięcia są idealne (5V), całość na płytce stykowej.
Problem jest następujący: Podczas wysyłania kolejnych 16-bajtowych ramek danych przez komputer, po jakimś czasie (czasem po jednej sekundzie czasem po 30 sekundach) rozjeżdża się ramka danych. Dodam, że taki sam problem miałem wcześniej z inną atmegą32 kiedy komunikacja odbywała się ze sterownikiem PLC bez MAXa.
Podłączyłem u kolegi wyjście z maxa (w kierunku RXa mikrokontrolera) do oscyloskopu. Gdy przewód od maxa do procka jest odłączony widzimy ładny prawidłowy przebieg. Jednak gdy podłącze przewód chociażby do jednego z procesorów widzę, że podczas wysyłania danych linia prawie wogóle nie jest ściągana do masy (napięcie opada najwyżej o kilka %). Całość zachowuje się tak, jakby był włączony jakiś mocny pull-up.
W pierwszej kolejności myślałem, że źle ustawiony jest port D, jednak to nie prawda. Poniżej wklejam kod źródłowy:
Bardzo proszę o pomoc, z problemem zmagam się już od miesiąca.
Zestawiłem następujący układ: Dwie Atmegi32, wyjścia portów A,B,C podpięte do diodek. Atmega jest połączona poprzez MAX232 z porem COM komputera. Kwarc 16MHz, zmierzone napięcia są idealne (5V), całość na płytce stykowej.
Problem jest następujący: Podczas wysyłania kolejnych 16-bajtowych ramek danych przez komputer, po jakimś czasie (czasem po jednej sekundzie czasem po 30 sekundach) rozjeżdża się ramka danych. Dodam, że taki sam problem miałem wcześniej z inną atmegą32 kiedy komunikacja odbywała się ze sterownikiem PLC bez MAXa.
Podłączyłem u kolegi wyjście z maxa (w kierunku RXa mikrokontrolera) do oscyloskopu. Gdy przewód od maxa do procka jest odłączony widzimy ładny prawidłowy przebieg. Jednak gdy podłącze przewód chociażby do jednego z procesorów widzę, że podczas wysyłania danych linia prawie wogóle nie jest ściągana do masy (napięcie opada najwyżej o kilka %). Całość zachowuje się tak, jakby był włączony jakiś mocny pull-up.
W pierwszej kolejności myślałem, że źle ustawiony jest port D, jednak to nie prawda. Poniżej wklejam kod źródłowy:
Kod: C / C++
Bardzo proszę o pomoc, z problemem zmagam się już od miesiąca.