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

bascom avr - przesyłanie danych z PC

wabikboy 31 Lip 2012 21:34 2084 21
  • #1 31 Lip 2012 21:34
    wabikboy
    Poziom 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ć.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0 21
  • #2 31 Lip 2012 22:05
    xdf0r
    Poziom 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.

    0
  • #3 31 Lip 2012 22:10
    wabikboy
    Poziom 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 ??

    0
  • #4 31 Lip 2012 22:47
    LordBlick
    VIP Zasłużony dla elektroda

    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. ;)

    0
  • #5 31 Lip 2012 22:53
    wabikboy
    Poziom 16  

    może inaczej zapytam.
    W jaki sposób wysłać dane w skrypcie aby uC odebrał to tak jak powinien

    0
  • #6 31 Lip 2012 23:28
    LordBlick
    VIP Zasłużony dla elektroda

    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

    Kod: bash
    Zaloguj się, aby zobaczyć kod
    Jak widać zmieniłem baudrate na 24000000/1250=19200

    0
  • #7 31 Lip 2012 23:40
    wabikboy
    Poziom 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

    0
  • #8 31 Lip 2012 23:49
    LordBlick
    VIP Zasłużony dla elektroda

    Pokaż wyniki poleceń:

    Kod: bash
    Zaloguj się, aby zobaczyć kod
    Kod: bash
    Zaloguj się, aby zobaczyć kod
    Kod: bash
    Zaloguj się, aby zobaczyć kod
    Kod: bash
    Zaloguj się, aby zobaczyć kod

    0
  • #9 31 Lip 2012 23:58
    wabikboy
    Poziom 16  

    Konkretnie jest to system OpenWrt (Unix) ale zasada jest ta sama

    Code:
    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:~$

    0
  • #10 01 Sie 2012 00:19
    LordBlick
    VIP Zasłużony dla elektroda

    wabikboy napisał:
    Kod: bash
    Zaloguj się, aby zobaczyć kod

    0
  • #12 01 Sie 2012 00:23
    LordBlick
    VIP Zasłużony dla elektroda

    wabikboy napisał:
    Kod: bash
    Zaloguj się, aby zobaczyć kod
    No to
    Kod: bash
    Zaloguj się, aby zobaczyć kod
    czy cokolwiek pokazuje ?

    0
  • #13 01 Sie 2012 00:31
    wabikboy
    Poziom 16  

    root@Gargoyle:~$ dmesg | grep -E "usbserial|ttyUSB"
    usb 1-1.2.1: ch341-uart converter now attached to ttyUSB1

    0
  • #14 01 Sie 2012 00:41
    LordBlick
    VIP Zasłużony dla elektroda

    lsusb ?

    0
  • #15 01 Sie 2012 00:41
    wabikboy
    Poziom 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.

    0
  • #16 01 Sie 2012 00:55
    LordBlick
    VIP Zasłużony dla elektroda

    1. Coś nie ładuje się usbserial. U mnie jest normalnie :

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    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 ?

    0
  • #17 01 Sie 2012 00:56
    wabikboy
    Poziom 16  

    Bus 001 Device 040: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

    0
  • #18 01 Sie 2012 11:27
    LordBlick
    VIP Zasłużony dla elektroda

    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/

    0
  • #19 01 Sie 2012 12:51
    wabikboy
    Poziom 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.

    0
  • #20 01 Sie 2012 12:59
    LordBlick
    VIP Zasłużony dla elektroda

    Problem jest z konfiguracją tej przejściówki pod wrt. Jeśli jest możliwość możną próbować innej, np. na FTDI.

    0
  • #21 01 Sie 2012 17:08
    wabikboy
    Poziom 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ć.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #22 02 Sie 2012 11:41
    wabikboy
    Poziom 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ć

    0