logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATmega128 - Jak przekierować dane z USART0 do USART1 na PC?

kasprzak 16 Sty 2013 21:13 1329 5
REKLAMA
  • #1 11798900
    kasprzak
    Poziom 10  
    Witam,
    Zmierzam się z problemem odnośnie mostka pomiędzy dwoma USARTami.

    Mam urządzenie, niech to będzie 'black box' które ma wyjścia RX,TX,GND. Dane z tego 'black boxa' trafiają na porty uC (USART0). Natomiast do komunikacji z PC używany jest USART1. Jak najlepiej zrealizować przepisanie tego co otrzyma uC na PC?
  • REKLAMA
  • Pomocny post
    #2 11798994
    piotrva
    VIP Zasłużony dla elektroda
    1. Jakie prędkości masz po obu stronach?
    2. Nie możesz tego zrobić sprzętowo?
    3. Programowo robisz odbiór i nadawanie na przerwaniach i przepisujesz z jednego bufora dane do drugiego...
    4. Jakie funkcje ma pełnić Atmega? Czy ma to być tylko monitor połączenia czy co?
  • REKLAMA
  • #3 11799016
    kasprzak
    Poziom 10  
    1. W obu przypadkach takie same, 9600, bez parzystości, 8 bitów, 1 stop bit.
    2. Niestety nie, płytka jest gotowa, muszę dodać taką funkcjonalność.
    3. Z logicznego punktu widzenia to wiadomo, że to co zostanie odebrane na USART0, musi być wysłane na USART1, a to co zostanie odebrane na USART1, musi być wysłane na USART0. Czyli wystarczy tylko w przerwaniach przypisywać bufory, ok, spróbuję tak zrobić.
    4. Normalnie wykorzystuje dane przesyłane przez 'black box', ale 'black box' wymaga też komunikacji z aplikacją która jest pod PC, stąd chęć wprowadzenia takiego trybu bridge.
  • REKLAMA
  • #4 11799031
    piotrva
    VIP Zasłużony dla elektroda
    Szkoda, że masz płytkę, bo takto najlepiej było wpiąć RX obu usartów na linie komunikacji między urządzeniem a PC i nie byłoby problemu z przepisywaniem danych i ewentualnymi opóźnieniami.
    A takto rozwiązanie to tylko przepisywanie rejestrów.
  • REKLAMA
  • #5 11799573
    BlueDraco
    Specjalista - Mikrokontrolery
    Przecież wystarczy pętla kopiująca stan linii RX0 do TX1 i TX0 do RX1, bez programowania UART. Całkiem poważnie da się to zrobić w ten sposób:) W dodatku w pewnych sytuacjach będzie to działało lepiej, niż kopiowanie przez UART - dokładnie to przy rozjeździe częstotliwości i ciągłej transmisji.
  • #6 11799715
    piotrva
    VIP Zasłużony dla elektroda
    Niby tak, tylko, że wtedy trzeba wyłączyć moduł UART, bo z tego co wiem to wtedy on przejmuje kontrolę nad tymi pinami i machanie PORTnX nic nie da. A Koledze chyba zależy na tym, żeby dane sprzętowo odebrać. Poza tym wtedy polling trzeba robić odpowiednio często.
    Ale tak jak piszesz - w moim rozwiązaniu będą opóźnienia i rozminięcia czasowa
REKLAMA