Newsgroup: it.hobby.elettronica.digitale
Titolo: dialogare via com

Devo connettere un dispositivo elettronico (che devo progettare io) al
computer via com per poter scambiare i dati:
acquisire dei dati ed in funzione di questi eseguire delle operazioni sul
dispositivo.
Qualcuno mi sa dare 2 dritte?
Esiste qualche cosa in rete?
ciao
Rubens





Dipende molto dal tuo livello tecnico.


A grandi linee potresti realizzare un modulo con un 
micro ed un max232 collegarlo con la porta del PC ed inventarti di codici ai 
quali il modulo reagirebbe.


 


E' tipico inviare sulla seriale delle stringhe del 
tipo


 


STX+CODICE+ETX


 


Con il qbasic occorre aprire la com poi "stampare" 
sul n. di file assegnato all'apertura, per esempio:


 


PRINT#1, CHR$(2)+CODICE+CHR$(3);


 


Saluti.



Saluti.
Con questo mi riporti ai vecchi tempi quando ero bambino che programmavo in
basic (e successivi).
Pensavo di usare il C/C++ per il semplice fatto che vorrei avere la
possibilità di estendere il programma in Linux e quindi non usarlo solo su
Win.
Il pèrimo problema è questo:
come sono i segnali che viaggiano per la com?
Tensioni, correnti, massima frequenza, ecc, ecc?
Come sono le funzioni dei vari piedini, ecc, ecc?
Prima devo pensare a cosa mi offre il collegamento con la com, poi pensiamo
alla parte elettronica, infine vediamo di far dialogare il pc con la scheda.





Dunque andando per ordine:


 


Per comunicare sulla seriale, indipentemente dal 
linguaggio usato non è indispensabile conoscere la funzione di tutti i pin della 
porta, a grandi linee su una DB9 femmina che si trova sul retro del 90% dei PC 
(alla quale spesso e' connesso il mouse) i pin che ti interessano sono il 3 
(uscita dati o TX) e il 5 (GND massa). Gli altri segnali possono essere 
utilizzati o meno ma tutto dipende dai parametri che passi alla funzione di 
apertura della porta. Non conoscendo la funzione del C++ che si occupa di questo 
non ti posso aiutare, ma nell'help del tuo IDE per i C++ dovrebbe essere tutto 
spiegato. Naturalmente alcuni parametri fondamentali dovranno essere passati 
obbligatoriamente alla funzione già menzionata: quelli relativi al Baud Rate. In 
campo la combinazione che va per la maggiore è 9600,8,N,1 che vuol dire 9600 
baud, parole da 8 bit, nessuna parità, 1 bit di stop; questi parametri indicano 
all'hw che è nel PC come modulare il segnale ma a chi fa il sw non gli fa ne 
caldo ne freddo.


Se tu e il tuo amico non siete degli elettronici 
avrete qualche difficoltà a realizzare l'hw del sistema perchè ci sono 2 
alternative:


1) Conoscere bene l'elettronica ed il sistema 
seriale asincrono standard e ricevere il segnale seguendolo con un micro per 
interpretarlo


2) Conoscere bene l'elettronica ed utilizzare una 
UART o un micro con la UART a bordo.


 


Sul TX di una 232 avrai una tensione negativa a 
riposo (stato di IDLE) tipicamente -12V (può essere anche -9 o -10 massimo -25) 
ma dipende molto dalla seriale questa tensione negativa rappresenta l'1 logico. 
Avrai invece una tensione positiva quando viene trasmesso lo 0 logico. Gli 
integrati di interfacciamento tipo max232 convertono ed invertono questi livelli 
di tensione ad un più comodo TTL (0=0V 1=5V).


A 9600,8,N,1 se invio sulla seriale il dato 2 
(chr$(2)) con l'oscilloscopio vedrò sull'uscita del MAX:


prima un 5V


poi un bit di start 0V per 104us  (9600 
bit al secondo vuol dire che un bit impiega 104,16us)


quindi il n. 2 in binario considerando che per i 
primi 104us avro il val. del bit0 poi quello del bit1 ..fino al bit7 (avremo 
solo il bit1 a 1)


poi un bit di stop a 1 che rimane ad 1 perche 
abbiamo inviato solo un byte e quindi non c'è interruzione tra il bit di stop e 
lo stato di IDLE.


 


Le possibilità di una seriale dipendono molto dal 
Baud Rate. Naturalmente se intendete realizzare una linea domestica non è 
consigliabile utilizzare la 232 perchè non può andare molto distante se 
utilizzate alti Baud Rate (pochi metri). 


 


Saluti.