![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
teste de publish
Dependencies: DS1820 HighSpeedAnalogIn devices mbed
serialModem.cpp
00001 #include "serialModem.h" 00002 #include "modem.h" 00003 00004 //extern Serial pc(USBTX, USBRX); //Instancia de recurso Serial uart pc 00005 //extern Serial modem(P0_10, P0_11); //Instancia de recurso Serial uart Modem 00006 00007 00008 00009 osTimerId serialModem::timer_pacote; 00010 bool serialModem::startTimer_pacote; 00011 bool serialModem::processarPacote; 00012 00013 /*Timers*/ 00014 //osTimerDef( "nomeDoTimer", "Função chamada pelo timer when match") 00015 osTimerDef(timerProcessaPacoteModem,serialModem::chamaProcessaPacote); 00016 /*Timers*/ 00017 00018 void serialModem::chamaProcessaPacote(void const *args){ 00019 osSignalSet(idThreadProcessaPacote,0x1); 00020 serialModem::processarPacote = true; 00021 } 00022 00023 void serialModem::configBaud(){ 00024 uint32_t baud = 9600; 00025 modem.baud(baud); 00026 while((!modemCom::sendToModem("ATE0\r\n",1,&modemCom::status.OK,NULL,50,1,50))&&(baud <= 230400)){ 00027 baud += 9600; 00028 pc.printf("\r\n Tentando %lu.\r\n",baud); 00029 modem.baud(baud); 00030 } 00031 if(baud<=230400){ 00032 pc.printf("\r\n Conectado a %lu baud/s.\r\n",baud); 00033 }else{ 00034 pc.printf("Modem inacessivel.\r\n"); 00035 } 00036 } 00037 00038 void serialModem::serial_init(){ 00039 //Instnciando o timer de processamento de pacotes entrantes na serial PC 00040 //Criando timer_pacote 00041 serialModem::timer_pacote = osTimerCreate(osTimer(timerProcessaPacoteModem),osTimerOnce,NULL); 00042 //Associando função a ISR da serial PC 00043 modem.attach(&serialModem::isr_serial); //Setando uma função para ISR Serial 2 (Serial modem) 00044 } 00045 void serialModem::isr_serial(){ 00046 uint32_t RBR = LPC_UART2->RBR; //Reset RBR interrupt flag e captura o caractere entrante 00047 bufModem.putc(RBR); 00048 //pc.putc(RBR); 00049 serialModem::startTimer_pacote=true; //Agenda o inicio do timer na thread de manipulação de timers 00050 osSignalSet(idThreadTimers, 0x1); //Envia sinal para a thread de manipulação dos timers para ativar os timers agendados 00051 //timeOutModem.attach(&chamaProcessaPacotePeloTimeOut, 0.1); 00052 }
Generated on Wed Jul 13 2022 12:46:24 by
![doxygen](doxygen.png)