Vai al contenuto
PLC Forum


Comunicazione Seriale Tra Micro E Pc


madmax

Messaggi consigliati

Ciao a tutti,

ho realizzato un software in "C" per un microcontrollore atmel AVR ATmega8 che gestisce un dispositivo di visualizzazione dell'altezza di una colonna d'acqua.

Questo dispositivo acquisisce il segnale di un sensore di pressione sul fondo di un serbatoio e visualizza su un display l'altezza del liquido.

Ho sentito parlare di una periferica USART del microcontrollore che potrebbe permettermi, tramite un collegamento seriale, di far comunicare il dispositivo con un PC in modo da visualizzare sul monitor l'altezza della colonna, magari con una interfaccia grafica in visual basic.

In particolare vorrei sapere che tipo di routine software devo progettare per spedire dati dal micro al PC e viceversa e in che modo il PC può visualizzarli con il programma in visual basic. Vorrei che il PC visualizzasse in tempo reale lo stato del serbatoio (o di più serbatoi collegati al PC).

Inoltre avrei bisogno di qualche consiglio su come collegare il micro con il PC.

Grazie a chiunque vorrà darmi qualche informazione a riguardo.

Link al commento
Condividi su altri siti


ifachsoftware

Ti serve una seriale (io ti consiglio una RS485) in modo da evitare eventuali disturbi , e poter andare fino a 1200m , quello che devi fare e' inventarti un protocollo , gestendo in interrupt per la ricezione dei dati.

Per quello che riguarda il lato PC puoi usare il controllo MS-comm.

Ciao :)

Link al commento
Condividi su altri siti

Grazie mille per l'aiuto,

quindi se ho capito bene devo progettare una routine di interrupt che venga eseguita dal microcontrollore ogni volta che dal PC invio dei comandi (per esempio quando devo settare alcuni parametri del dispositivo).

Con il controllo MS-comm invece posso ricevere le informazioni relative all'altezza dell'acqua nel serbatoio e visualizzarle sul monitor, giusto?

Link al commento
Condividi su altri siti

  • 4 weeks later...

Dato che per il momento non posso collaudare il dispositivo, vorrei chiedervi un paio di cose, giusto per vedere se quello che ho fatto è corretto, almeno dal punto di vista concettuale.

Ho scritto le routine in C per la gestione dell'USART del microcontrollore, ho copiato quelle scritte nel datasheet del micro. Ad ogni ciclo di programma faccio un confronto: se il livello del liquido è cambiato, viene spedito il nuovo valore:

void USART_init ( unsigned int baud )

{

  UBRRH = ( unsigned char ) ( baud >> 8 );  //set del baudrate

  UBRRL = ( unsigned char ) baud;

  UCSRB = ( 1 << RXEN ) | ( 1 << TXEN );  //abilitazione ricezione e trasmissione

  UCRSC = ( 1 << URSEL ) | ( 1 << USBS ) | ( 3 << UCSZ0 );  //formato del frame (8 bit,niente parità,2 bit stop)

}

void USART_transmit ( unsigned char altezza )

{

  while ( ! ( UCSRA & ( 1 << UDRE ));  //aspetta finchè il buffer non è pieno

  UDR = "(" & altezza & ")";  //spedisce il dato

}

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...