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

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

klops_mops 21 Gru 2008 21:47 3735 5
REKLAMA
  • #1 5887639
    klops_mops
    Poziom 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
  • REKLAMA
  • #2 5887698
    mirekk36
    Poziom 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
  • REKLAMA
  • #3 5887741
    klops_mops
    Poziom 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.
  • REKLAMA
  • #4 5888153
    dawid512
    Poziom 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.
  • REKLAMA
  • Pomocny post
    #5 5888219
    mirekk36
    Poziom 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 5888337
    klops_mops
    Poziom 17  
    Ok. Bardzo dziękuję za odpowiedzi. Teraz sobie na pewno poradzę :) Jeszcze raz dziękuję i wesołych świąt ;)
REKLAMA