Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Raspberry Pi - Arduino - Freebasic Projekte

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Linux-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 21.12.2014, 20:42    Titel: Raspberry Pi - Arduino - Freebasic Projekte Antworten mit Zitat

Hi! Schon lange nicht mehr da gewesen, hab nu aber mal wieder ne Frage... lächeln

Ich setzte für verschiedene Projekte gerne einen Raspberry-Pi mit einem Arduino-Micro per USB angeschlossen ein.

Auf dem Raspberry-Pi läuft Raspbian mit einem Freebasic-Programm, dass die Steuerung und Kommunikation mit dem Arduino übernimmt.

Nur immer wenn ich versuche binäre Daten hin- und zurückzuschicken kommt es zu (für mich) unerklärlichen Hängern, die sich erst durch einen Reset des Arduinos wieder beheben lassen - bis die nächsten paar Bytes übertragen sind und wieder hängen bleibt.

Nun habe ich mir damit geholfen, dass ich Daten im Klartext zwischen dem Freebasic-Programm und Arduino Seriell übertrage. D.h. ich übertrage bei einer 32-Bit Zahl nicht die 4-Bytes sondern die Ziffern der Zahl einzeln.

Das Funktioniert zwar sehr gut, ist aber eher unprofessionell und braucht unnötig Bandbreite und damit auch Übertragungszeit.

Jetzt habe ich den Verdacht, dass der Serielle-Port (/dev/ttyACM0) irgendwie bestimmte Bytes als Steuerkommandos versteht und irgendwas macht, dass sich meinem Wissen entzieht.

Per Zufall bin ich auf die Seite http://playground.arduino.cc/Interfacing/LinuxTTY gestoßen und habe den Befehl stty -a < /dev/ttyUSB0 angepasst und ausgeführt:

Code:
root@raspberrypi:/home/pi# stty -a < /dev/ttyACM0
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;
min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke


Bis auf "speed 9600 baut" habe ich keine Ahnung was diese kryptisch-anmutende Ausgabe zu sagen hat .. allerdings lässt sie mich vermuten, dass der Com-Port auf bestimmte Bytes reagiert.

Kann mir da einer etwas Licht ins Dunkel bringen?

Vielen Dank schon mal lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1749
Wohnort: [JN58JR] DeltaLabs.de

BeitragVerfasst am: 21.12.2014, 23:11    Titel: Antworten mit Zitat

nun ... ein ACM ist regulär ein "modem"

das heist, das du Daten mit steuerkomandos übertragen bekommst ... sogenannte ESCAPE-SEQUENZEN (sind durch das ^ zu erkennen).

Wenn du einen Physische Schnitstelle nutzt (RS232), dann kannst du den Port auch anders öffnen (Open Com).

Wenn es ein USB-RS232 Adapter is, solltest du nach einem ttyUSB... suchen.

Das sind RAW Schnitstellen, die nicht von linux interpretiert werden.

ACM terminals sind steuerkommandobehaftete Terminals, mit deren Hilfe du z.B. ein 56K Modem steuern kannst (Auflegen, abheben, nr. wählen, daten übertragen usw.)

PS: Die Physische Serielle Schnitstelle unter Linux benennt sich mit ttyS...


MfG
TPM
_________________
[ WebFBC ][ OPS ][ DeltaLab's ][ ToOFlo ][ BGB-Movie ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 22.12.2014, 00:40    Titel: Antworten mit Zitat

Hi! Vielen Dank für die schnelle Antwort lächeln

Ein Modem wird aber doch über eine serielle "RAW" Schnittstelle gesteuert. Die Interpretation von AT-Kommandos werden doch im Modem vorgenommen und nicht von der Schnittstelle oder dem Schnittstellen-Treiber, oder hab ich da etwas Grundsätzliches nicht verstanden?

ein Device welches mit ttyS beginnt wird leider nicht gelistet:

Code:
root@raspberrypi:/home/pi# ls /dev
autofs           fb0      loop1         mapper              ppp    ram14  ram9     stdin   tty14  tty22  tty30  tty39  tty47  tty55  tty63      vc-cma  vcs6    xconsole
block            fd       loop2         mem                 ptmx   ram15  random   stdout  tty15  tty23  tty31  tty4   tty48  tty56  tty7       vchiq   vcsa    zero
btrfs-control    full     loop3         mmcblk0             pts    ram2   raw      tty     tty16  tty24  tty32  tty40  tty49  tty57  tty8       vc-mem  vcsa1
bus              fuse     loop4         mmcblk0p1           ram0   ram3   root     tty0    tty17  tty25  tty33  tty41  tty5   tty58  tty9       vcs     vcsa2
cachefiles       hidraw0  loop5         mmcblk0p2           ram1   ram4   serial   tty1    tty18  tty26  tty34  tty42  tty50  tty59  ttyACM0    vcs1    vcsa3
char             input    loop6         net                 ram10  ram5   shm      tty10   tty19  tty27  tty35  tty43  tty51  tty6   ttyAMA0    vcs2    vcsa4
console          kmsg     loop7         network_latency     ram11  ram6   snd      tty11   tty2   tty28  tty36  tty44  tty52  tty60  ttyprintk  vcs3    vcsa5
cpu_dma_latency  log      loop-control  network_throughput  ram12  ram7   sndstat  tty12   tty20  tty29  tty37  tty45  tty53  tty61  uinput     vcs4    vcsa6
disk             loop0    MAKEDEV       null                ram13  ram8   stderr   tty13   tty21  tty3   tty38  tty46  tty54  tty62  urandom    vcs5    video0


ttyAMA0 kommt nicht in Frage - das ist die serielle Schnittstelle an der GPIO-Leiste des Raspberry PI.

Es gibt allerdings unter /dev/serial/.../usb-Arduino_LLC_Arduino_Micro-if00 noch SymLinks auf die ttyACM0 - was mir leider nicht weiterhilft traurig

dmesg gibt beim Anstöpseln vom Arduino folgende Ausgabe:

Code:
[    3.577791] usb 1-1.3: new full-speed USB device number 5 using dwc_otg
[    3.720289] usb 1-1.3: New USB device found, idVendor=2341, idProduct=0037
[    3.737640] usb 1-1.3: New USB device strings: Mfr=2, Product=1, SerialNumber=0
[    3.746533] usb 1-1.3: Product: Arduino Micro
[    3.767644] usb 1-1.3: Manufacturer: Arduino LLC
[    4.047637] udevd[156]: starting version 175
[    5.854516] cdc_acm 1-1.3:1.0: ttyACM0: USB ACM device
[    6.155383] usbcore: registered new interface driver cdc_acm
[    6.307946] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[    6.444008] usb 1-1.3: USB disconnect, device number 5
[    6.697773] usb 1-1.3: new full-speed USB device number 6 using dwc_otg
[    6.842802] usb 1-1.3: New USB device found, idVendor=2341, idProduct=8037
[    6.857665] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    6.866567] usb 1-1.3: Product: Arduino Micro
[    6.887841] usb 1-1.3: Manufacturer: Arduino LLC
[    6.904655] cdc_acm 1-1.3:1.0: This device cannot do calls on its own. It is not a modem.
[    6.927032] cdc_acm 1-1.3:1.0: ttyACM0: USB ACM device
[    6.960627] input: Arduino LLC Arduino Micro    as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.2/input/input0
[    6.990981] hid-generic 0003:2341:8037.0001: input,hidraw0: USB HID v1.01 Mouse [Arduino LLC Arduino Micro   ] on usb-bcm2708_usb-1.3/input2


Kann man die Steuerkommandos dieses ACM-Device nicht irgendwie ausschalten, damit ich komplett Binär übertragen kann?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1749
Wohnort: [JN58JR] DeltaLabs.de

BeitragVerfasst am: 22.12.2014, 00:56    Titel: Antworten mit Zitat

maybe ... http://www.irrational.net/2012/04/19/using-the-raspberry-pis-serial-port/

MfG
TPM
_________________
[ WebFBC ][ OPS ][ DeltaLab's ][ ToOFlo ][ BGB-Movie ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 22.12.2014, 10:46    Titel: Antworten mit Zitat

Sry, ich glaub da hast du was falsch verstanden.. Ich möchte den Port des Arduino benutzen, NICHT den seriellen Port des raspberry Pi .. Kann man das ACM device irgendwie so umstellen, dass es keine steuerkommandos interpretiert? Oder kann man ein anderes Kernel Modul laden dass ein RAW fähiges Gerät zur Verfügung stellt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Linux-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz