Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Atmega16] [BASCOM] Komunikacja rs232 między dwoma Atmegami.

klops_mops 21 Dec 2008 21:47 3645 5
  • #1
    klops_mops
    Level 17  
    Witam!

    Prosiłbym, by wyjaśnił mi ktoś w jaki sposób mogę wysyłać sobie wartości zmiennych miedzy dwoma Atmegami. Np. Pierwsze uC nadaje zmienną wyjscie1 = 1 oraz wyjscie2 = 0 - po czym druga Atmega ustawi np. Portb.0 = 1 oraz Portb.1 = 0.. I tak dalej.

    Nie mam kompletnie pomysłu na taką komunikację..
    Z góry dziękuję za odpowiedź.

    Pozdrawiam, Wojtek
  • #2
    mirekk36
    Level 42  
    tzn nie masz pomysłu na co dokładniej mówiąc?

    o jakich ty wyjściach piszesz - nie wiesz jeszcze co to RS232 ??? czy jak???

    bo jak nie wiesz co to RS232 - to chyba najpierw będzie trzeba troszkę zaczytać na ten tamat - choćby helpa z bascoma i tamtejszych przykładów, ale w necie pełno informacji znajdziesz
  • #3
    klops_mops
    Level 17  
    Nie. Wiem co to jest. Umiem zrobić komunikację między nimi i wysłać np. tekst na LCD drugie Atmegi.

    Nie wiem tylko w jaki sposób zrealizować wysyłanie kilku zmiennych przez rs232.
  • #4
    dawid512
    Level 32  
    Wysyłając je po kolei a w uc slave dodanie sobie pomocniczej zmiennej żeby uc wiedział która zmienna za co odpowiada. Istnieją także bity kontrolne etc.
  • Helpful post
    #5
    mirekk36
    Level 42  
    skoro umiesz wysłać tekst do drugiej atmegi to jak możesz nie umieć wysłać sobie jakichś zmiennych - oj chyba przegrzało przy ubieraniu choinki więc podpowiem ;)

    .... można to zrobić na milion sposóbów oczywiście i wszystko zależy od tego jakie to są zmienne, ale np załóżmy że masz zmienną typu Byte.

    1. dokonujesz konwersji tej zmiennej na postać String
    2. wysyłasz przez RS232 zwykły tekst np:
    twoja zmienna ZM = 123 - zamieniasz ZM na tekst za pomocą polecenia STR
    i wysyłasz "zm1=123"

    jeśli masz dwie zmienne np ZM1=75 oraz ZM2=233
    to wysyłasz tekst: "zm1=75,zm2=233"

    3. po drugiej stronie odbieraz pierwszy albo drugi tekst i go analizujesz parsując cały odebrany string. W wyniku czego otrzymasz w tym deugim przypadku tekstowo "75" co zamienisz na liczbę za pomocą polecenia VAL i przypiszesz sobie do odpowiedniej zmiennej być może też ZM1, podobnie z drugim tekstowym przekazem "233"

    trzeba tylko napisać sobie procedurkę parsującą czyli sprawdzającą po kolei parametry w odebranym ciągu znaków. Jak widzisz jako separatora użyłem przecinka. Tak więc najpierw za pomocą funkcji MID, LEF czy Right itp pobierasz pierwszą część która ma na początku zm1= wtedy wycinasz znak = i to co pozostało już wiesz do jakiej zmiennej wstawić

    oczywiście to taki bardzo prosty i łopatologiczny sposób ale pozwala bezpiecznie i pewnie przesyłać dane. Ja to opanujesz to sam wpadniesz na jeszcze 100 różnych innych pomysłów jak to można inaczej robić ;)
  • #6
    klops_mops
    Level 17  
    Ok. Bardzo dziękuję za odpowiedzi. Teraz sobie na pewno poradzę :) Jeszcze raz dziękuję i wesołych świąt ;)