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

[Atmega8] Połączenie dwóch Atmeg RS232.

klops_mops 28 Gru 2008 22:05 6103 17
  • #1 5915904
    klops_mops
    Poziom 17  
    Witam!

    Chciałbym połączyć dwie Atmegi16, w taki sposób:

    NADAJNIK ------> ODBIORNIK

    Związku z tym mam kilka pytań:

    1. TxD nadaje, a RxD odbiera, tak? Czy w takim razie poprawnie schematy wykonałem?

    2. Prędkość transmisji. Kiedyś gdzieś na elektrodzie wyczytałem, że przy prędkości transmisji należy zastosować zewnetrzny kwarc (eliminuje to błędy transmisji). Czy to prawda?

    Zakładając, że chcę by komunikacja działała na prędkości 57600bps, zastosuję zewnętrzny kwarc 16mHz, to czy będzie możliwe osiągnięcie tej prędkości, bez błędów transmisji?

    3. W przypadku, gdy jeden procesor ma służyć za nadajnik, a drugi za odbiornik (jednostronna komunikacja) to czy muszę podłączać obydwie linie (RxD, TxD) ?

    Powoli zaczyna mi się wszystko "rozjaśniać""..

    Z góry dziękuję za odpowiedzi.

    Pozdrawiam, Wojtek.
  • Pomocny post
    #2 5916055
    dawid512
    Poziom 32  
    1.Tak ale podłącz obydwie linie, masa również wspólna.
    2. Prawda ale da się kalibrować oscylator.
  • #3 5916114
    elektryk
    Poziom 42  
    klops_mops napisał:
    Zakładając, że chcę by komunikacja działała na prędkości 57600bps, zastosuję zewnętrzny kwarc 16mHz, to czy będzie możliwe osiągnięcie tej prędkości, bez błędów transmisji?
    Ja bym nie zakładał takiego "okrągłej" prędkości, jak używasz w obu urządzeniach takich samych kwarców to czy zaprogramujesz na 57601bps czy 57599bps to będzie działać idealnie (bo oba urządzenia mają tak samo ustawiony podzielnik częstotliwości do transmisji). Dokładną prędkość z "okrągłą" wartością jest ciężko ustawić, z reguły wybiera się najbliższą wartość gwarantującą że jedno urządzenie będzie się mieścić w tolerancji drugiego (w przypadku jeśli jedno urządzenie nie jest tak bardzo elastyczne jeśli chodzi o baudrate, np PC).
  • #4 5916175
    klops_mops
    Poziom 17  
    Dziękuję za odpowiedzi.

    1.Tak ale podłącz obydwie linie, masa również wspólna.

    Jeśli, Atmegi zasilane są osobnych źródeł zasilania to obie masy połączyć, tak?


    Dokładną prędkość z "okrągłą" wartością jest ciężko ustawić, z reguły wybiera się najbliższą wartość gwarantującą że jedno urządzenie będzie się mieścić w tolerancji drugiego (w przypadku jeśli jedno urządzenie nie jest tak bardzo elastyczne jeśli chodzi o baudrate, np PC).

    Jak "dojść" do odpowiedniej prędkości, metodą "prób i błędów"?

    PS. A takie pytanie poza tematem - czy ktoś z Was używał kiedyś modułów radiowych Telecontrolli?
  • Pomocny post
    #5 5916200
    dawid512
    Poziom 32  
    Cytat:
    Jeśli, Atmegi zasilane są osobnych źródeł zasilania to obie masy połączyć, tak?
    Tak. Jeśli chodzi o prędkość to wydaje mi się że obydwa uc powinny być taktowane takim samym zegarem a z prędkością nie należy przesadzać.
  • #6 5916387
    klops_mops
    Poziom 17  
    Ok. Dziękuję za odp. Jutro wykonam sobie płytki testowe do rs232.

    W razie pytań będę pisał.
  • #7 8937382
    crawe
    Poziom 11  
    A czy da się połączyć 2 atmegi8-ki po UART-cie programowym. Chodzi o transmisje w jednym kierunku. Czyli tak jak by z programowego TxD---> sprzętowego RxD. Tak naprawdę chodzi mi tylko o wysyłanie danych bez odbioru. Zabrakło mi pamięci do mmc i chce rozwiązać to poprzez dorzucenie dodatkowego klocka bez zamiany głównego.

    Schemat:
    [Atmega8] Połączenie dwóch Atmeg RS232.
  • #8 8937508
    Fredy
    Poziom 27  
    Oczywiście że da się zrobić transmisję RS232 programową.
    Nie wiem w czym piszesz, ale w Bascomie jest to banał a w C to trochę zabawy ale śmiga też pięknie.
  • #9 8937651
    crawe
    Poziom 11  
    W bascomie to tylko jedna linijka. Chodzi o to że cały czas się zastanawiam czy aby na pewno nie zmienić głównego klocka na np. ATmega164P-20AU. W sumie ma wszystko co potrzebuje. RxD i TxD do GSM-u, RxD1 do GPS-u, więcej pamięci i dla MMC wystarczy. Boje się trochę wchodzić w takie bardziej skomplikowane klocki no ale mniej miejsca jednak na płytce i nie trzeba się męczyć z programowaniem 2.
  • #10 8937988
    Eagle
    Poziom 24  
    Przemyśl jeszcze aby całość taktować jednym kwarcem, drugi uC niech będzie karmiony clk'iem z pierwszego. Pozwoli to zaoszczędzić jeden kwarc. Nie wiem czy dobrze zrozumiałem chcesz zrezygnować z sprzętowego UART'a na rzecz programowego ? Przecież to nie logiczne. Co do prędkości przesyłania to w tym wypadku będzie uzależnione od odległości między uC, wg mnie przy małej odległości nie obliczał bym prędkości tylko ustawił na maksymalną wartość UART, bo prędkość nie ma znaczenia przy tym samym taktowaniu i niewielkiej odległości.

    Eagle
  • #11 8940494
    kubus_puchatek
    Poziom 18  
    Jeśli jest mała odległość to tak jak sugeruje "Pierzasty" jeden niech ma kwarc a drugi niech ciągnie clocka z tego pierwszego. Jeśli zaś odległość jest większa niż jakieś 0.5 m to warto się zastanowić choć nad zwrotnym potwierdzeniem czy poprawnie przeszła transmisja.
  • #12 8944609
    crawe
    Poziom 11  
    Eagle napisał:
    Nie wiem czy dobrze zrozumiałem chcesz zrezygnować z sprzętowego UART'a na rzecz programowego ? Przecież to nie logiczne.
    Eagle

    Mam wykorzystany już sprzętowy dla gsm i jeden programowy dla gps no i potrzebuje jeszcze jeden programowy dla mmc. Teraz jasne ?
  • #13 8947385
    kubus_puchatek
    Poziom 18  
    Po pierwsze MMC dołącza się po SPI a nie UART. Po drugie. na moje oko użycie dwóch kontrolerów daje taki sam koszt co użycie jednego kontrolera. Za mało wiem o założeniach żeby się wypowiadać, ale dziwne założenie aby dwie mega16 łączyć.
  • #14 8950178
    crawe
    Poziom 11  
    kubus_puchatek napisał:
    Po pierwsze MMC dołącza się po SPI a nie UART.


    Nie napisałem nic o tym żeby podłączyć MMC do UARTU. Wkleiłem nawet schemat.

    kubus_puchatek napisał:
    Po drugie. na moje oko użycie dwóch kontrolerów daje taki sam koszt co użycie jednego kontrolera. Za mało wiem o założeniach żeby się wypowiadać, ale dziwne założenie aby dwie mega16 łączyć.


    Temat odnosi się do [Atmega8], a co do 16 to była polemika nt. zmiany klocka z 8 na 16. :)

    Założeniem było połączenie dwóch ósemek ze sobą ponieważ brakuje już pamięci na obsługę mmc przez jednego klocka. Dla jasności jeden ma wysyłać w locie dane zebrane z GPS-u po UARTcie drugi odpowiednio je sformatować i zapisać do mmc.
    Zaznaczę jeszcze dla jasności że GSM zajął mi trochę pamięci i dlatego zastanawiam się żeby zmienić go na ATMEGA162-16AU. Wtedy nie trzeba będzie kombinować z dwoma UARTami i pamięcią.
  • #15 8950290
    klops_mops
    Poziom 17  
    Zmień uc na ten z większą ilością pamięci flash (różnica w cenie bardzo mała). Takie rozwiązanie jest bardziej "eleganckie" od stosowania jeszcze jednego procesora. To tylko moja opinia.
  • #16 8951433
    kubus_puchatek
    Poziom 18  
    [quote="crawe"]
    Eagle napisał:

    Mam wykorzystany już sprzętowy dla gsm i jeden programowy dla gps no i potrzebuje jeszcze jeden programowy dla mmc. Teraz jasne ?



    Sorki ale to zdanie sugeruje właśnie próbę podłączenia MMC do UART.
  • #17 8954785
    crawe
    Poziom 11  
    A tak z ciekawości dla jakich odległości między uC połączenie przez UART jest możliwe ?
REKLAMA