Cześć. Próbuję nawiązać komunikację pomiędzy Raspberry PI i ATmegą przy użyciu RS-485. Stan wysoki dla RPI to 3.3V, więc korzystam z układów scalonych MAX3485CPA+. Wszystko zasilam napięciem 3.3V.
Dla uproszczenia ustawiłem komunikację w jednym kierunku, tj. wymusiłem na sygnałach sterujących kierunkiem maxów (piny DE /RE), nadawanie dla ATmegi oraz odbieranie dla RPI. Prędkość 9600. Napisałem stosowny program dla ATmegi, ale RPI odbiera inny znak od wysłanego. Nie są to losowe dane, tylko zawsze dla 'a'->'0'(zero), 'Q'->'W' itd.
Całość wygląda tak:
Dodam jeszcze, że wcześniej zasilałem ATmegę napięciem 5V i po jej stronie korzystałem z MAX485 i występował identyczny problem. Łącząc ATmegę i RPI bezpośrednio przez UART (bez pośredniczących max-ów) całość działa poprawnie.
Postanowiłem wykonać test: stworzyłem pętlę komunikacyjną, tj. RPI ma sam do siebie wysyłać znak przy użyciu RS485, gdzie całość wygląda tak:
Układ zachowuje się identycznie. Wysyłam przez Putty 'a', wraca '0'. Dodam, że UART w RPI jest poprawnie skonfigurowany. Zwarte piny RXD i TXD (bez wykorzystywania RS485), powodują, że wracają poprawne dane.
Z moich rozważań wynika, że wina leży po stronie scalaków MAX3485.
Update: Po zmianie scalaków na MAX485 (zasilanych z 3.3V, jak i dla testu z 5V) problem jest identyczny.
Czy ktoś jest wstanie wskazać mi powód takiego zachowania?
Dla uproszczenia ustawiłem komunikację w jednym kierunku, tj. wymusiłem na sygnałach sterujących kierunkiem maxów (piny DE /RE), nadawanie dla ATmegi oraz odbieranie dla RPI. Prędkość 9600. Napisałem stosowny program dla ATmegi, ale RPI odbiera inny znak od wysłanego. Nie są to losowe dane, tylko zawsze dla 'a'->'0'(zero), 'Q'->'W' itd.
Całość wygląda tak:
Dodam jeszcze, że wcześniej zasilałem ATmegę napięciem 5V i po jej stronie korzystałem z MAX485 i występował identyczny problem. Łącząc ATmegę i RPI bezpośrednio przez UART (bez pośredniczących max-ów) całość działa poprawnie.
Postanowiłem wykonać test: stworzyłem pętlę komunikacyjną, tj. RPI ma sam do siebie wysyłać znak przy użyciu RS485, gdzie całość wygląda tak:
Układ zachowuje się identycznie. Wysyłam przez Putty 'a', wraca '0'. Dodam, że UART w RPI jest poprawnie skonfigurowany. Zwarte piny RXD i TXD (bez wykorzystywania RS485), powodują, że wracają poprawne dane.
Z moich rozważań wynika, że wina leży po stronie scalaków MAX3485.
Update: Po zmianie scalaków na MAX485 (zasilanych z 3.3V, jak i dla testu z 5V) problem jest identyczny.
Czy ktoś jest wstanie wskazać mi powód takiego zachowania?