Space / Mbed 2 deprecated SITAEL-Comm

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SITAEL-Comm.cpp Source File

SITAEL-Comm.cpp

00001 #include "mbed.h"
00002 #include<stdlib.h>
00003 
00004 // dimensione massima del pacchetto ricevuto su seriale
00005 #define PACKETDIM   512
00006 
00007 
00008 // Definizione periferica USB seriale del PC
00009 Serial pc(USBTX, USBRX, 921600); // seriale di comunicazione con il PC. Associati a PA_11 e PA_12
00010 
00011 // Definizione periferica seriale del Modulo Seriale HC05
00012 Serial mySerial(PA_9, PA_10, 115200); //Tx, Rx, bps
00013 
00014 
00015 // User Button, LED  
00016 DigitalIn myButton(USER_BUTTON); // pulsante Blu sulla scheda. Associato a PC_13
00017 DigitalOut myLed(LED2); // LED verde sulla scheda. Associato a PA_5
00018 
00019 
00020 
00021 // array per la ricezione dei messaggi da Seriale
00022 volatile char caRxPacket[PACKETDIM]; 
00023 
00024 // contatore e indice di caratteri ricevuti da Seriale
00025 volatile char nRxCharCount; // Contatore dei caratteri ricevuti; Si aggiornerà modulo 256 a buffer circolare
00026 volatile char nRxCharIndex; // Indice dell'array dei caratteri ricevuti e già visualizzati sui LED; Si aggiornerà modulo 256 a buffer circolare
00027 
00028 /**********************************************/
00029 //          IRQ associata a Rx da PC 
00030 //**********************************************/
00031 void pcRxInterrupt(void)
00032 {
00033     // array per la ricezione dei messaggi da seriale
00034     char cReadChar; 
00035     
00036     // ricevi caratteri su seriale, se disponibili   
00037     while((pc.readable()))
00038     {
00039         // acquisice stringa in input e relativa dimensione
00040         cReadChar = pc.getc(); // read character from PC
00041         mySerial.putc(cReadChar); // Diagnostica: write char to Seriale
00042         pc.putc(cReadChar); // Diagnostica: write char to PC
00043         
00044         //pc.printf("W>: 0x%02x\n\r",cReadChar); // diagnostica
00045     }
00046 }
00047 
00048 //**********************************************/
00049 //          IRQ associata a Rx da Seriale 
00050 //**********************************************/
00051 void SerialeRxInterrupt(void)
00052 {
00053     
00054     // carattere ricevuto da Seriale
00055     char cReadChar; 
00056     
00057     while((mySerial.readable()))
00058     {
00059         // acquisice stringa in input e memorizza in array
00060         cReadChar = mySerial.getc(); // Read character
00061         nRxCharCount++; // incrementa il contatore dei caratteri ricevuti
00062         caRxPacket[nRxCharCount]=cReadChar;
00063         
00064         // visualizza l'ultimo carattere ricevuto
00065         pc.printf("> Rx: %c \r\n",cReadChar); // diagnostica
00066     }
00067  }
00068 
00069 /**********/
00070 /*  MAIN  */
00071 /**********/
00072 int main()
00073 {
00074     // indice per i cicli
00075     int nIndex;
00076     
00077     // LED su scheda inizialmente spento
00078     myLed = 0;
00079     
00080     
00081     // messaggio di benvenuto
00082     pc.printf("\r\n*****  Hallo ***** \r\n");
00083      
00084     
00085     // inizializza contatore e indice di caratteri ricevuti
00086     nRxCharCount = 0;
00087     nRxCharIndex =0;
00088         
00089     // inizializza array di caratteri ricevuti
00090     for(nIndex=0; nIndex<PACKETDIM; nIndex++)
00091     {
00092         caRxPacket[nIndex]=0;
00093     }
00094     
00095     // Attiva la IRQ per la RX su seriale   
00096     mySerial.attach(&SerialeRxInterrupt,Serial::RxIrq); // // entra in questa routine quando riceve un carattere dalla seriale del Seriale
00097     pc.attach(&pcRxInterrupt,Serial::RxIrq); // entra in questa routine quando riceve un carattere dalla USB del PC
00098     
00099     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00100     //++++++++++++++ INIZIO Test +++++++++++++++++++++++++++++++
00101     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00102        
00103            
00104     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00105     //++++++++++++++ FINE Test +++++++++++++++++++++++++++++++++
00106     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00107     
00108     
00109     
00110     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00111     //++++++++++++++ INIZIO Ciclo Principale +++++++++++++++++++    
00112     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00113     while(true)
00114     {
00115         //++++++++++++++++++++++++++ INIZIO Se premuto il myButton effettua un test  +++++++++++++++++++++++++++++
00116         if(myButton == 0)
00117         {
00118             myLed =1;
00119         }
00120         else
00121         {
00122             myLed =0;
00123         }
00124         //++++++++++++++++++++++++++ FINE Se premuto il myButton effettua test +++++++++++++++++++++++++++++
00125    
00126     } //while(true) Ciclo principale
00127     
00128     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00129     //++++++++++++++ FINE Ciclo Principale  +++++++++++++++++++    
00130     //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00131     
00132 } // main()