teste de publish
Dependencies: DS1820 HighSpeedAnalogIn devices mbed
serialModem.cpp@30:8a06a85d8807, 2018-05-25 (annotated)
- Committer:
- brunofgc
- Date:
- Fri May 25 23:46:10 2018 +0000
- Revision:
- 30:8a06a85d8807
- Parent:
- 21:b9315cdd9275
- Child:
- 34:348991c54ff3
Concertado ROM e RAM para n?o resetar.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
brunofgc | 0:1c0a769988ee | 1 | #include "serialModem.h" |
brunofgc | 0:1c0a769988ee | 2 | #include "modem.h" |
brunofgc | 0:1c0a769988ee | 3 | |
brunofgc | 0:1c0a769988ee | 4 | //extern Serial pc(USBTX, USBRX); //Instancia de recurso Serial uart pc |
brunofgc | 0:1c0a769988ee | 5 | //extern Serial modem(P0_10, P0_11); //Instancia de recurso Serial uart Modem |
brunofgc | 0:1c0a769988ee | 6 | |
brunofgc | 0:1c0a769988ee | 7 | |
brunofgc | 0:1c0a769988ee | 8 | |
brunofgc | 0:1c0a769988ee | 9 | osTimerId serialModem::timer_pacote; |
brunofgc | 0:1c0a769988ee | 10 | bool serialModem::startTimer_pacote; |
brunofgc | 4:13ff9c81dc10 | 11 | bool serialModem::processarPacote; |
brunofgc | 0:1c0a769988ee | 12 | |
brunofgc | 0:1c0a769988ee | 13 | /*Timers*/ |
brunofgc | 0:1c0a769988ee | 14 | //osTimerDef( "nomeDoTimer", "Função chamada pelo timer when match") |
brunofgc | 0:1c0a769988ee | 15 | osTimerDef(timerProcessaPacoteModem,serialModem::chamaProcessaPacote); |
brunofgc | 0:1c0a769988ee | 16 | /*Timers*/ |
brunofgc | 0:1c0a769988ee | 17 | |
brunofgc | 0:1c0a769988ee | 18 | void serialModem::chamaProcessaPacote(void const *args){ |
brunofgc | 4:13ff9c81dc10 | 19 | osSignalSet(idThreadProcessaPacote,0x1); |
brunofgc | 4:13ff9c81dc10 | 20 | serialModem::processarPacote = true; |
brunofgc | 0:1c0a769988ee | 21 | } |
brunofgc | 0:1c0a769988ee | 22 | |
brunofgc | 0:1c0a769988ee | 23 | void serialModem::configBaud(){ |
brunofgc | 0:1c0a769988ee | 24 | uint32_t baud = 9600; |
brunofgc | 0:1c0a769988ee | 25 | modem.baud(baud); |
brunofgc | 30:8a06a85d8807 | 26 | while((!modemCom::sendToModem("ATE0\r\n",1,&modemCom::status.OK,NULL,100,2,1))&&(baud <= 230400)){ |
brunofgc | 0:1c0a769988ee | 27 | baud += 9600; |
brunofgc | 0:1c0a769988ee | 28 | pc.printf("\r\n Tentando %lu.\r\n",baud); |
brunofgc | 0:1c0a769988ee | 29 | modem.baud(baud); |
brunofgc | 0:1c0a769988ee | 30 | } |
brunofgc | 0:1c0a769988ee | 31 | if(baud<=230400){ |
brunofgc | 7:ae9c47f62946 | 32 | pc.printf("\r\n Conectado a %lu baud/s.\r\n",baud); |
brunofgc | 0:1c0a769988ee | 33 | }else{ |
brunofgc | 0:1c0a769988ee | 34 | pc.printf("Modem inacessivel.\r\n"); |
brunofgc | 0:1c0a769988ee | 35 | } |
brunofgc | 0:1c0a769988ee | 36 | } |
brunofgc | 0:1c0a769988ee | 37 | |
brunofgc | 0:1c0a769988ee | 38 | void serialModem::serial_init(){ |
brunofgc | 0:1c0a769988ee | 39 | //Instnciando o timer de processamento de pacotes entrantes na serial PC |
brunofgc | 0:1c0a769988ee | 40 | //Criando timer_pacote |
brunofgc | 0:1c0a769988ee | 41 | serialModem::timer_pacote = osTimerCreate(osTimer(timerProcessaPacoteModem),osTimerOnce,NULL); |
brunofgc | 0:1c0a769988ee | 42 | //Associando função a ISR da serial PC |
brunofgc | 0:1c0a769988ee | 43 | modem.attach(&serialModem::isr_serial); //Setando uma função para ISR Serial 2 (Serial modem) |
brunofgc | 0:1c0a769988ee | 44 | } |
brunofgc | 0:1c0a769988ee | 45 | void serialModem::isr_serial(){ |
brunofgc | 0:1c0a769988ee | 46 | uint32_t RBR = LPC_UART2->RBR; //Reset RBR interrupt flag e captura o caractere entrante |
brunofgc | 0:1c0a769988ee | 47 | bufModem.putc(RBR); |
brunofgc | 0:1c0a769988ee | 48 | //pc.putc(RBR); |
brunofgc | 0:1c0a769988ee | 49 | serialModem::startTimer_pacote=true; //Agenda o inicio do timer na thread de manipulação de timers |
brunofgc | 0:1c0a769988ee | 50 | osSignalSet(idThreadTimers, 0x1); //Envia sinal para a thread de manipulação dos timers para ativar os timers agendados |
brunofgc | 0:1c0a769988ee | 51 | //timeOutModem.attach(&chamaProcessaPacotePeloTimeOut, 0.1); |
brunofgc | 0:1c0a769988ee | 52 | } |