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

bascom avr - przesyłanie danych z PC

wabikboy 31 Jul 2012 21:34 2363 21
  • #1
    wabikboy
    Level 16  
    Witam!
    Mam kłopot z odbiorem danych z PC.
    Podłączam uC do PC + terminal i wpisuje ciąg danych r:122.g:144.b:125 i enter no i wszystko super bo diody przygasają, ale jest problem jak Podepnę pod linuxa i chcę wysłać w ten sposób echo "r:122.g:144.b:125" > /dev/ttyUSB1 i nic sie nie dzieje, wiec moje pytanie w jaki sposób wysyłać dane lub co zmienić w kodzie aby je tak odebrać.

    Code: vbnet
    Log in, to see the code
  • #2
    xdf0r
    Level 13  
    Czyli podłączasz przez przejściówkę która jest w systemie widziana jako COM. Nie powinieneś zatem podać numeru portu com a nie usb? Nie wiem co to za przejściówka i jakie ma sterowniki ale jeśli działa pod win to pod linuxem powinno działać tak samo. Spróbuj coś wysłać pod linuxem przez przejściówkę chociażby przez echo i zobacz czy działa.
  • #3
    wabikboy
    Level 16  
    W linuxie jest widziana jako /dev/ttyUSB1 i chcę wysłać do tego urządzenia dane czyli echo "r:123.g:120.b:100" > /dev/ttyUSB1 i wciskam enter i nic sie nie dzieje.
    W putty jak się połączę to wpisuje j.w. wciskam enter i działa, wiec co można zmienić w komendzie lub w kodzie ??
  • #4
    LordBlick
    VIP Meritorious for electroda.pl
    Pod linuksa to polecam cutecom do takiej zabawy. putty pewnie też się znajdzie...
    Każdy serial port musi mieć właściwie ustawione prawa na pliku urządzenia do zapisu i odczytu (w nowszych systemach na linuksie robi się to regułami udev) oraz ustawione parametry transmisji(program setserial), jak chcesz echo-sondować temat. ;)
  • #5
    wabikboy
    Level 16  
    może inaczej zapytam.
    W jaki sposób wysłać dane w skrypcie aby uC odebrał to tak jak powinien
  • #6
    LordBlick
    VIP Meritorious for electroda.pl
    Masz na myśli skrypt powłoki ? bash ?
    Użyj setserial przed wysłaniem.
    Konkrety to mogę podać, jak opiszesz dokładnie rodzaj przejściówki, np. na ftdi nie można zmienić baud_base, tylko divisor
    Code: bash
    Log in, to see the code
    Jak widać zmieniłem baudrate na 24000000/1250=19200
  • #7
    wabikboy
    Level 16  
    Więc tak.

    w w/w kodzie przy połączeniu w konsoli "putty" wpisuje dane np: r:122.g:122.b:120 i nawet enter jest nie potrzebny bo po chwili wskakuje to co trzeba i pwm zmienia wartość, ale mam podłączoną tą samą przejściówkę pod system z linuxem to chcę wysłać tą samą komendę w ten sposób: echo "r:122.g:122.b:120" > /dev/ttyUSB1 ale nic się nie dzieje.
    przejściówka to ch341-uart podpięta pod max232
  • #8
    LordBlick
    VIP Meritorious for electroda.pl
    Pokaż wyniki poleceń:
    Code: bash
    Log in, to see the code
    Code: bash
    Log in, to see the code
    Code: bash
    Log in, to see the code
    Code: bash
    Log in, to see the code
  • #9
    wabikboy
    Level 16  
    Konkretnie jest to system OpenWrt (Unix) ale zasada jest ta sama

    root@Gargoyle:~$ id
    uid=0(root) gid=0(root)
    root@Gargoyle:~$  ls -l /dev/ttyUSB1
    crw-rw-rw-    1 root     root     188,   1 Jul 31 23:53 /dev/ttyUSB1
    root@Gargoyle:~$ setserial -a /dev/ttyUSB1
    Cannot get serial info: Invalid argument
    root@Gargoyle:~$
    
  • #13
    wabikboy
    Level 16  
    root@Gargoyle:~$ dmesg | grep -E "usbserial|ttyUSB"
    usb 1-1.2.1: ch341-uart converter now attached to ttyUSB1
  • #15
    wabikboy
    Level 16  
    root@Gargoyle:~$ lsusb
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 002: ID 1a40:0101 TERMINUS TECHNOLOGY INC. USB-2.0 4-Port HUB
    Bus 001 Device 003: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
    Bus 001 Device 039: ID 1a40:0101 TERMINUS TECHNOLOGY INC. USB-2.0 4-Port HUB
    Bus 001 Device 005: ID 1bcf:0c31 Sunplus Innovation Technology Inc.
    Bus 001 Device 006: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
    Bus 001 Device 040: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
    Bus 001 Device 041: ID 16c0:05dc VOTI shared ID for use with libusb
    Bus 001 Device 009: ID 0403:c630 Future Technology Devices International, Ltd lcd2usb interface
    Bus 001 Device 010: ID 0bc7:0006 X10 Wireless Technology, Inc. Wireless Transceiver (ACPI-compliant)
    Bus 001 Device 011: ID 0c76:160b JMTek, LLC.
  • #16
    LordBlick
    VIP Meritorious for electroda.pl
    1. Coś nie ładuje się usbserial. U mnie jest normalnie :
    Code: bash
    Log in, to see the code

    2. Widzę 2 urządzenia FTDI w lsusb, nie mogę się dopatrzyć za to ch341-uart, na czym w końcu jest ta przejściówka ? Co się zmienia po wyjęciu ?
  • #17
    wabikboy
    Level 16  
    Bus 001 Device 040: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
  • #18
    LordBlick
    VIP Meritorious for electroda.pl
    Póki co pomysły mi się wyczerpały - nie miałem do czynienia z taką przejściówką, do tej pory tylko PL2303 i FT2232L i nie miałem żadnych problemów na desktopowym Linuksie. Sporo wiedzy dotyczącej wrt jest na http://eko.one.pl/ i http://openrouter.info/forum
    Wygóglałem także:
    http://rooter.kyberian.net/?p=42
    http://tiagovaz.wordpress.com/2008/01/04/usin...usb-serial-adapter-against-2623-linux-kernel/
  • #19
    wabikboy
    Level 16  
    A może jakiś alternatywny wsad do komunikacji przez pc rs232 z 3 x PWM obojętnie co aby można było wysłać informację do uC o stanie każdego PWM osobno, sterowaniem zajmie sie skrypt wiec jest to obojętne jaka forma kodu będzie.
  • #21
    wabikboy
    Level 16  
    A masz jakiś prosty kod który może sprawdzić czy w ogóle uC wysyła jakieś dane przez rs232 przy wpisaniu np: cat /dev/ttyUSB1 lub read /dev/ttyUSB1

    Dodano po 2 [godziny] 43 [minuty]:

    Zauważyłem mały problem z programem bascom a mianowicie jak dodam gdzieś w kodzie aby wyświetlało mi jaka jest wartość wpisana do zmiennej czyli print zmienna; to program się kompiluje i zapisuje do uC ale procek nie reaguje na komendy a jeśli niema funkcji print to działa. O co tu może chodzić ??

    Dodano po 1 [godziny] 14 [minuty]:

    Ok po wielkich bojach wstawiam poprawny kod który działa z pod terminala w Windowsie w ten sposób r:xxx g:xxx b:xxx Enter :) , ale nie testowany czy działa z konkretnym zamiarem w linuxie czyli echo "dane" > /dev/ttyUSB1
    Wieczorem sprawdzę i dam znać.
    Code: vbnet
    Log in, to see the code
  • #22
    wabikboy
    Level 16  
    Niestety nie działa i wina leży prawdopodobnie po stronie przejściówki USB<->RS232 na sterowniku ch-341 < pod Lnuxem. Zamówiłem na Ftdi zobaczymy jak pójdzie. Jeśli zadziała to dam znać