Pages: [1] 2   Go Down
Author Topic: Dati seriali  (Read 1335 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti, rieccomi al galoppo.
Sto interfacciando Arduino UNO con un software per pc.
Ho, però, problemi con i dati seriali.
La configurazione è:
- Arduino UNO e Serial Monitor;
- pin 0 ed 1 su cavo adattatore seriale/usb TTL;
- emulatore porta seriale su pc.

Usando Serial.print("1"), sul Serial Monitor dell'IDE, visualizzo 1.
Ma, e quì l'amara scoperta, l'emulatore che gira sul pc riceve una "g" (67 hex, 103 dec).

Infatti, provando al posto dell'emulatore, il software a cui si interfaccerà Arduino, non ottengo nessuna reazione.
Dove mi sto incartando?
Perchè l'emulatore non riceve il numero 1 che gli ho mandato ma una g?

Grazie anticipatamente,
Mimmo.
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sicuro che l'emulatore comunichi alla stessa velocità della seriale?
che si aspetti dei bytes e non dell'ascii?
che la massa del convertitore usb-seriale sia collegata con quella di arduino?
di aver collegato Tx di arduino con Rx del convertitore e viceversa?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sicuro che l'emulatore comunichi alla stessa velocità della seriale?
Si, entrambi a 9600.

Quote
che si aspetti dei bytes e non dell'ascii?
.... il comando completo da inviare è ZZAU02... ma escono i pupazzetti se visualizzati in ascii...
Precisamente A9 A9 55 7D 9B 00 hex.

Quote
che la massa del convertitore usb-seriale sia collegata con quella di arduino?
Si, sul pin accanto ad AREF (GND)

Quote
di aver collegato Tx di arduino con Rx del convertitore e viceversa?
Si, infatti i dati escono, ma arrivano sballati sull'emulatore, mentre il serial monitor dell'IDE me li visualizza corretti.
[/quote]

Questo il codice:
Code:
void setup()
{
  Serial.begin(9600);
}

void loop() {
 Serial.print("ZZAU02");
 delay(1000);
  }

L'emulatore è Advance Serial Port Monitor, un software semplicissimo che di solito uso come sniffer.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21657
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Prova a spedire con Serial.write i singoli byte e vedi se vengono interpretati correttamente.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Niente da fare. Temo sia il cavo adattatore.
Ho provato a mettere l'emulatore sulla stessa porta di Arduino UNO (com 15) e riceve i dati correttamente.
La cosa che mi lascia perplesso è che collegando il software che devo pilotare, sulla stessa porta della UNO, non accade nulla.

Sono stanco, è da questa mattina che ci sbatto la testa, ora mi riposo un po e poi si vede.

Intanto grazie per le risposte.

Mimmo.
Logged

Selvazzano Dentro - Padova
Offline Offline
God Member
*****
Karma: 28
Posts: 933
"Chi sa fa, chi non sa insegna"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

L'emulatore seriale com'è configurato?

Dovrebbe essere 9600, no parity, data 8 bit, 1 stop bit, no handshaking.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buongiorno a tutti, eccomi dopo un bel riposo.

Tanto per non fare il pirlone, ho controllato i livelli dell'adattatore seriale/usb all'oscilloscopio per accertarmi ancora una volta che fosse TTL.
Confermato, i valori sono 0-5V.

La cosa particolare, facendo delle prove è risultata come sotto:
INVIATO        RICEVUTO (decimanle)
A                 95
B                 47
C                 94
D                 46
E                 93

Questo, aprendo la COM dell'adattatore e visualizzandola con Advance Serial Port Monitor (COM 19).
Se con Advance Serial Port Monitor apro la porta di Arduino UNO, la COM 15, visualizzo correttamente i caratteri inviati tramite la sua usb.
Il Serial Monitor dell'IDE, da i valori corretti.
Notate come i valori alternati vadano a scalare. Che stranezza, non me ne faccio una ragione.In Windows, la porta del cavetto è settata bene, 9600 8N1, nessun controllo di flusso.

Dedurrei che il cavetto funziona ma qualcosa non pareggia i conti...

Mimmo.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Rieccomi.
Assodato che è il cavo convertitore.

Ho provato a scambiare dati tra la porta seriale hardware ed una creata apposta, software.
Ebbene, il cavetto convertitore restituisce valori differenti dalla tabella ascii sia in ricezione che in trasmissione.

Potrebbe imputarsi al fatto che è cinese e che il driver installato effettui una qualche operazione di conversione dei dati per adattarli ad una tabella ascii per tastiere cinesi?
L'ho buttata lì tanto per farmene una ragione  smiley-roll-blue

Mimmo.
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

perchè non provi a fare un loopback?
cioè sul cavetto collega tx con rx d apri un terminale, se tutto funziona correttamente, qalsiasi cosa scrivi sul terminale dovrebbe tornarti indietro così come l'hai scritta.
e così ti levi i dubbi sul cavetto smiley
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

perchè non provi a fare un loopback?
cioè sul cavetto collega tx con rx d apri un terminale, se tutto funziona correttamente, qalsiasi cosa scrivi sul terminale dovrebbe tornarti indietro così come l'hai scritta.
e così ti levi i dubbi sul cavetto smiley

Stavolta divento scemo.
Grazie della dritta. Il cavo funziona regolarmente in loopback. Mando 1 e ricevo 1 ecc.

Lo collego all'Arduino uno e faccio uno scambio di dati tra il cavetto su seriale software e la seriale hardware e.... scrivo 1 e ricevo g. La cosa è bidirezionale, quindi sia se mando da seriale hardware che da software.

Ma allora, la colpa di chi è?
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

prova con putty e dimmi se hai gli stessi risultati
http://www.putty.org/
Logged

Selvazzano Dentro - Padova
Offline Offline
God Member
*****
Karma: 28
Posts: 933
"Chi sa fa, chi non sa insegna"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi sembra del tutto evidente che la "colpa" ricade sul software di emulazione.

Forse viene influenzato in qualche modo dall'emulatore dell'IDE.

Perché non provi ricaricare i driver dell'Advance Serial Port Monitor o addirittura tutto il programma?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sarà che non è molto intuitivo per me o forse è un passo avanti ma non vede altro che la Com1 (fisica) del pc e non capisco come usarlo.

Ora metto Arduino sotto oscilloscopio e controllo i valori di tensione della porta seriale.
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

seleziona serial come protocollo e poi basta che scrivi il nome della porta com e clikki sul tasto open
« Last Edit: September 19, 2012, 10:11:06 am by BrainBooster » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Svelato l'arcano, l'oscilloscopio non mente.

I segnali TTL del cavetto sono opposti a quelli di Arduino.
In trasmissione, Arduino ha lo stato logico alto sul pin TX e modula basso.

In trasmissione, il cavetto ha lo stato logico basso sul pin TX e modula alto.

Ecco svelato il perchè dei dati a pene di segugio. Vedo se ho un integrato inverter nel cassetto e dovrei risolvere.

Mimmo.
Logged

Pages: [1] 2   Go Up
Jump to: