Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
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()
Generated on Wed Aug 3 2022 09:29:36 by
1.7.2