Joaquin Verastegui / jro

Dependents:   JRO_CR2 frdm_test

Fork of jro by Miguel Urco

Committer:
miguelcordero191
Date:
Thu Feb 05 19:01:42 2015 +0000
Revision:
2:3d8d52e9751c
serial and ethernet working with threads.; serial baudrate = 1000000; dhcp is working well but static ip is not.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
miguelcordero191 2:3d8d52e9751c 1 #include "JroSerial.h"
miguelcordero191 2:3d8d52e9751c 2
miguelcordero191 2:3d8d52e9751c 3 JroSerial::JroSerial(PinName tx, PinName rx, SerialDriver *screen) : SerialDriver(tx,rx)
miguelcordero191 2:3d8d52e9751c 4 {
miguelcordero191 2:3d8d52e9751c 5 //;
miguelcordero191 2:3d8d52e9751c 6 this->device_irqn = UART3_RX_TX_IRQn;
miguelcordero191 2:3d8d52e9751c 7 this->screen = screen;
miguelcordero191 2:3d8d52e9751c 8 // attach the interrupts
miguelcordero191 2:3d8d52e9751c 9 }
miguelcordero191 2:3d8d52e9751c 10
miguelcordero191 2:3d8d52e9751c 11 int JroSerial::Init(int baudrate)
miguelcordero191 2:3d8d52e9751c 12 {
miguelcordero191 2:3d8d52e9751c 13 this->baud(baudrate);
miguelcordero191 2:3d8d52e9751c 14 //this->screen->baud(baudrate);
miguelcordero191 2:3d8d52e9751c 15
miguelcordero191 2:3d8d52e9751c 16 //attach(this, &JroSerial::Rx_interrupt, RxIrq);
miguelcordero191 2:3d8d52e9751c 17 //NVIC_DisableIRQ(this->device_irqn);
miguelcordero191 2:3d8d52e9751c 18 //disableRxInterrupt();
miguelcordero191 2:3d8d52e9751c 19
miguelcordero191 2:3d8d52e9751c 20 return 1;
miguelcordero191 2:3d8d52e9751c 21 }
miguelcordero191 2:3d8d52e9751c 22
miguelcordero191 2:3d8d52e9751c 23
miguelcordero191 2:3d8d52e9751c 24 // This function is called when a character goes into the RX buffer.
miguelcordero191 2:3d8d52e9751c 25
miguelcordero191 2:3d8d52e9751c 26 void JroSerial::Rx_interrupt() {
miguelcordero191 2:3d8d52e9751c 27
miguelcordero191 2:3d8d52e9751c 28 disableRxInterrupt();
miguelcordero191 2:3d8d52e9751c 29 //NVIC_DisableIRQ(this->device_irqn);
miguelcordero191 2:3d8d52e9751c 30 //uart.attach(NULL, Serial::RxIrq);
miguelcordero191 2:3d8d52e9751c 31 //uint32_t IRR3 = UART3->IIR;
miguelcordero191 2:3d8d52e9751c 32 //UART_3_RBR = K64F_UART3->RBR;
miguelcordero191 2:3d8d52e9751c 33
miguelcordero191 2:3d8d52e9751c 34 //ser_thread_ptr->signal_set(0x01);
miguelcordero191 2:3d8d52e9751c 35 //this->rx_sem.release();
miguelcordero191 2:3d8d52e9751c 36 return;
miguelcordero191 2:3d8d52e9751c 37 }
miguelcordero191 2:3d8d52e9751c 38 int JroSerial::ReadData(char* rx_buffer)
miguelcordero191 2:3d8d52e9751c 39 {
miguelcordero191 2:3d8d52e9751c 40 int tmp;
miguelcordero191 2:3d8d52e9751c 41 unsigned short i=0;
miguelcordero191 2:3d8d52e9751c 42 unsigned short time_counter=0;
miguelcordero191 2:3d8d52e9751c 43
miguelcordero191 2:3d8d52e9751c 44 //NVIC_EnableIRQ(this->device_irqn);
miguelcordero191 2:3d8d52e9751c 45 //enableRxInterrupt();
miguelcordero191 2:3d8d52e9751c 46 this->screen->putc(0x34);
miguelcordero191 2:3d8d52e9751c 47 this->screen->putc(0x31);
miguelcordero191 2:3d8d52e9751c 48 //this->rx_sem.wait();
miguelcordero191 2:3d8d52e9751c 49 this->screen->putc(0x34);
miguelcordero191 2:3d8d52e9751c 50 this->screen->putc(0x32);
miguelcordero191 2:3d8d52e9751c 51 while(true){
miguelcordero191 2:3d8d52e9751c 52 /*
miguelcordero191 2:3d8d52e9751c 53 if(this->readable()==0){
miguelcordero191 2:3d8d52e9751c 54 time_counter++;
miguelcordero191 2:3d8d52e9751c 55 if (time_counter > 3)
miguelcordero191 2:3d8d52e9751c 56 break;
miguelcordero191 2:3d8d52e9751c 57 Thread::wait(300);
miguelcordero191 2:3d8d52e9751c 58 continue;
miguelcordero191 2:3d8d52e9751c 59 }
miguelcordero191 2:3d8d52e9751c 60 */
miguelcordero191 2:3d8d52e9751c 61
miguelcordero191 2:3d8d52e9751c 62 tmp = this->getc(200);
miguelcordero191 2:3d8d52e9751c 63 if (tmp == -1)
miguelcordero191 2:3d8d52e9751c 64 break;
miguelcordero191 2:3d8d52e9751c 65
miguelcordero191 2:3d8d52e9751c 66 rx_buffer[i] = (unsigned char) tmp;
miguelcordero191 2:3d8d52e9751c 67
miguelcordero191 2:3d8d52e9751c 68 //Don't delete the next line screen.putc();
miguelcordero191 2:3d8d52e9751c 69 this->screen->putc(0x34);
miguelcordero191 2:3d8d52e9751c 70 this->screen->putc(0x33);
miguelcordero191 2:3d8d52e9751c 71 this->screen->putc(rx_buffer[i]);
miguelcordero191 2:3d8d52e9751c 72
miguelcordero191 2:3d8d52e9751c 73 i++;
miguelcordero191 2:3d8d52e9751c 74 time_counter = 0;
miguelcordero191 2:3d8d52e9751c 75 }
miguelcordero191 2:3d8d52e9751c 76
miguelcordero191 2:3d8d52e9751c 77 this->putc(i);
miguelcordero191 2:3d8d52e9751c 78
miguelcordero191 2:3d8d52e9751c 79 this->screen->putc(0x34);
miguelcordero191 2:3d8d52e9751c 80 this->screen->putc(0x34);
miguelcordero191 2:3d8d52e9751c 81
miguelcordero191 2:3d8d52e9751c 82 if (i==0x28){
miguelcordero191 2:3d8d52e9751c 83 this->putc(0x37);
miguelcordero191 2:3d8d52e9751c 84 this->putc(0x37);
miguelcordero191 2:3d8d52e9751c 85 }
miguelcordero191 2:3d8d52e9751c 86 this->putc(0x10);
miguelcordero191 2:3d8d52e9751c 87 this->putc(0x13);
miguelcordero191 2:3d8d52e9751c 88
miguelcordero191 2:3d8d52e9751c 89 return i;
miguelcordero191 2:3d8d52e9751c 90 }