Elektroda.pl
Elektroda.pl
X
Sklep HeluKabel
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Rozwiązano] Atmega Bascom RS232 trzy urządzenia

huzzar.ts 24 Wrz 2018 08:07 534 53
  • #31 24 Wrz 2018 08:07
    3227441
    Użytkownik usunął konto  
  • Sklep HeluKabel
  • #32 24 Wrz 2018 08:16
    huzzar.ts
    Poziom 13  

    No to i sprawdziłem, jest tak jak się obawiałem. Wstawienie części kodu z obsługą RS485 zerwało mi połączenie z PC.

  • #33 24 Wrz 2018 08:26
    3227441
    Użytkownik usunął konto  
  • #34 24 Wrz 2018 11:22
    tmf
    Moderator Mikrokontrolery Projektowanie

    @huzzar.ts Jeśłi to Arduino ma robić jako konwerter USB-RS485 to istotnie lepiej jest po prostu kupić gotowy konwerter. Dwa procki są na płytce, bo jeden robi jako konwerter USB-RS232 i programator dla drugiego procesora, który programujesz. Ten drugi powinien mieć co najmniej dwa UARTy - jeden do podłączenia z prockiem robiącym jako konwerter USB-RS232, drugi do podłączenia do twojej sieci RS485. Przy poprawnie napisanym programie nie ma siły, aby jeden wpływał na drugi. Pokaż schemat tego co stworzyłeś, zasilanie itd. Poza tym, osobiście uważam, że tego typu projekty w C to kilkadziesiąt linii kodu i o ile od biedy można wykorzystać hardware Arduino, to ładowanie w to całego arduinowego frameworka jest bez sensu i niepotrzebnie komplikuje proste sprawy.
    Moim zdaniem twój problem wynika z tego, że zamiast zacząć od założeń iprzemyślenia jak to ma działać, wziąłeś byle co, co narzuca ci ograniczenia i teraz dzielnie walczysz z problemami, które normalnie by nie wystąpiły. Do tego przekazujesz skąpe informacje, co też nie ułatwia prób pomocy.

  • Sklep HeluKabel
  • #35 24 Wrz 2018 13:09
    huzzar.ts
    Poziom 13  

    Schemat jest prosty
    Jedno Arduino podłączone do pc przez usb i dwa Arduino podłączone jako slave do tego pierwszego.
    Na linii mam kabel 2x4 pary.
    Informacje muszą płynąć z slave przez mastera do pc i w drugą stronę.
    W kodach tak już namieszałem że są bezużyteczne. Jedno co działa to komunikacja pc - master przez usb.

  • #36 24 Wrz 2018 13:16
    khoam
    Poziom 20  

    huzzar.ts napisał:
    Schemat jest prosty
    Jedno Arduino podłączone do pc przez usb i dwa Arduino podłączone jako slave do tego pierwszego.
    Na linii mam kabel 2x4 pary.
    Informacje muszą płynąć z slave przez mastera do pc i w drugą stronę.
    W kodach tak już namieszałem że są bezużyteczne. Jedno co działa to komunikacja pc - master przez usb.


    Jeżeli są to Arduino Uno, to tylko będzie działała komunikacja pc - "master" przez USB i nic ponadto.
    ATmega 328 dysponuje tylko jednym UART-em - próby podpinania do pinów TX/RX czegokolwiek, przy aktywnym porcie USB (podłączonym do PC) w Uno są z góry skazane na porażkę.

  • #37 24 Wrz 2018 13:16
    huzzar.ts
    Poziom 13  

    Wydaje mi się że gdybym zmodyfikował kod w masterze a dokładnie w tym atmega16 na komunikację po RS485 i on był by masterem w tym całym układzie to wszystko by działało.
    Czyli on by był odpowiedzialny za komunikację a sleve były by wtedy trzy licząc z tym co mikrokontrolerem co jest w Arduino jako master.

  • #38 24 Wrz 2018 13:31
    khoam
    Poziom 20  

    huzzar.ts napisał:
    Wydaje mi się że gdybym zmodyfikował kod w masterze a dokładnie w tym atmega16 na komunikację po RS485 i on był by masterem w tym całym układzie to wszystko by działało.
    Czyli on by był odpowiedzialny za komunikację a sleve były by wtedy trzy licząc z tym co mikrokontrolerem co jest w Arduino jako master.


    Możesz modyfikować kod w ATmega16 (do tego są specjalne piny), ale wtedy też musiałbyś odciąć fizycznie połączenia TX/RX pomiędzy Atmega16 od ATmega328 (schemat w załączeniu). ATmega16 został użyty w Uno do pełnienia roli DFU bootlader'a, a nie dodatkowego UART.
    Przy tego rodzaju koniecznych zmianach, to lepiej chyba wybrać inną platformę sprzętową.

  • #39 24 Wrz 2018 13:46
    3227441
    Użytkownik usunął konto  
  • #40 24 Wrz 2018 13:48
    khoam
    Poziom 20  

    Pinczaiewicz napisał:
    tmf napisał:
    Ten drugi powinien mieć co najmniej dwa UARTy - jeden do podłączenia z prockiem robiącym jako konwerter USB-RS232, drugi do podłączenia do twojej sieci RS485.

    Nie musi mieć dwóch UART. Można użyć mostka USB-SPI/I2C CH3xx lub FT22x, FT20x.
    Można też użyć uC ze sprzętowym USB.


    Albo od razu użyć I2C z buforami linii, bez zbędnych dalszych komplikacji :)

  • #41 24 Wrz 2018 13:50
    3227441
    Użytkownik usunął konto  
  • #42 24 Wrz 2018 14:11
    huzzar.ts
    Poziom 13  

    Dobra, dzięki za pomoc
    Nie widzę sensu kontynuowania tematu skoro wszystko można było itd... może i można było ale jest inaczej.
    Jak nie da się skomunikować tego tak jak to wygląda to będę szukał innego rozwiązania.

  • #43 24 Wrz 2018 14:20
    3227441
    Użytkownik usunął konto  
  • #44 24 Wrz 2018 14:50
    huzzar.ts
    Poziom 13  

    Ale co tu ma kod do rzeczy skoro już tu stwierdzono że to nie zadziała bo ATmega328 ma tylko jedno UART
    To co można z tym zrobić skoro po TX/RX to nie pójdzie, a transmisja SPI jest do mniejszych odległości.

    khoam napisał:
    ATmega 328 dysponuje tylko jednym UART-em - próby podpinania do pinów TX/RX czegokolwiek, przy aktywnym porcie USB (podłączonym do PC) w Uno są z góry skazane na porażkę.

    Dokładanie jakichkolwiek innych rzeczy nie wchodzi w grę.
    Czyli sprzętowo nie da się tego zrobić, master żeby komunikował się przez USB zajmuję sobie wewnętrznie pomiędzy mega16 a mega328 piny TX/RX. czyli cała transmisja RSxxx nie pójdzie.

  • #45 24 Wrz 2018 14:58
    kamyczek
    Poziom 34  

    Możes użyć atmegi 328 PB ta ma dwa uarty .... Poza tym możesz użyć uarta sprzętowego i programowego to też załatwia sprawę . Musisz się zdecydować czego w zasadzie chcesz . Propozycji masz już kilka tylko się na coś zdecyduj .

  • #46 24 Wrz 2018 15:15
    3227441
    Użytkownik usunął konto  
  • #47 24 Wrz 2018 17:21
    khoam
    Poziom 20  

    Pinczaiewicz napisał:
    kamyczek napisał:
    Możes użyć atmegi 328 PB ta ma dwa uarty

    Nawet nie wiedziałem o nim. Wygląda obiecująco, dwa USART, dwa SPI, dwa I2C (to chyba jedyny AVR z dwoma I2C) niestety nadal mało RAM. Przydało by się min 4 najlepiej 8k. Z pewnością wielu Arduinowców się ucieszy o ile są już biblioteki obsługujące dodatkowe peryferia.


    Od prawie dwóch lat jest wsparcie Arduino dla ATmega 328PB. Są też dostępne klony Arduino Mini z tym procesorem.

    Dodano po 13 [minuty]:

    kamyczek napisał:
    Poza tym możesz użyć uarta sprzętowego i programowego to też załatwia sprawę .


    Programowy UART na Uno będzie miał ograniczenie do 57600bps, o ile nie mniejsze.

  • #48 24 Wrz 2018 17:24
    3227441
    Użytkownik usunął konto  
  • #49 24 Wrz 2018 18:28
    huzzar.ts
    Poziom 13  

    kamyczek napisał:
    Poza tym możesz użyć uarta sprzętowego i programowego to też załatwia sprawę

    No to wstępnie to jest najlepsze rozwiązanie. Ale ATmega 328PB też zamówię chyba że znajdę we Wrocławiu.

    No ok, a jak zrobić ten dodatkowy UART w programie?
    Poszukam na necie, jak byście coś mogli pomóc gdzie tego szukać to był bym wdzięczny.

    khoam napisał:
    Programowy UART na Uno będzie miał ograniczenie do 57600bps, o ile nie mniejsze.

    Mi naprawdę nie zależy na prędkości, to będzie max 5 komend lub wyników na s.

  • #51 24 Wrz 2018 19:41
    3227441
    Użytkownik usunął konto  
  • #52 24 Wrz 2018 21:49
    huzzar.ts
    Poziom 13  

    Pinczaiewicz napisał:
    Raczej wybierasz złe rozwiązanie. Pewnie znów stracisz czas a efektów nie będzie.


    Docelowo zastosuję ATmega 328PB jak proponowaliście ale nie wiem czy w tym tygodniu będę miał czas zerwać się z roboty i poszukać w sklepach we Wrocławiu. Ewentualnie zamówię przez neta. Alę muszę oddać projekt do... tydzień temu ;) więc muszę jakoś to rozwiązać tak żeby pokazać jak ma wszystko działać a poprawki zrobię później.

    Dodano po 43 [minuty]:

    Ok, wstępie napisałem takie tam wypociny żeby sprawdzić czy cokolwiek przechodzi z mastera do slave

    master
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    slave
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    To co jest wysyłane komendą Print dochodzi a to co jest wysyłane Print #1 już nie dochodzi. Pierwsze pytanie jak to ma być podłączone (programowy UART) bo nie widziałem nigdzie config xxxx, czyli rozumiem że to idzie po tych samych pinach. Czy źle myślę?

    Dodano po 40 [minuty]:

    kamyczek napisał:
    Możes użyć atmegi 328 PB ta ma dwa uarty

    Pinczaiewicz napisał:
    Nawet nie wiedziałem o nim.

    Jak popatrzeć po sklepach to nie tylko Ty o nim nie wiedziałeś. Nawet nie wiem gdzie takie coś można kupić. Jak gdzieś jest to w obudowie na SMD więc nie wypnę tego i na jego miejsce nie wstawię nowego.

  • #53 25 Wrz 2018 06:29
    3227441
    Użytkownik usunął konto  
  • #54 25 Wrz 2018 08:08
    huzzar.ts
    Poziom 13  

    " zażyczyłbym sobie", to nie jest koncert życzeń, ewentualnie z mikołajem pogadaj.
    Po elokwentnych wypowiedziach i dacie dodania konta można wywnioskować że proza 15 już pewnie je zakładałeś bo nikt z tobą pisać nie chce.
    Co poradzić.

    Tematy odbiegają całkowicie od tematu podstawowego więc czas zamknąć ten post.
    Dzięki większości za pomoc.