Program to control an accelerometer, motors and a rangefinder using the ScmRTOS ported to mbed. (Work in progress and buggy)
Hexacopter/serial.h
- Committer:
- jberry
- Date:
- 2010-11-01
- Revision:
- 0:9b057566f9ee
File content as of revision 0:9b057566f9ee:
#ifndef SERIAL_H #define SERIAL_H #include <channels.h> #include <Mutexes.h> #include <processes.h> #define UART1TX p9 #define UART1RX p10 Serial USB(USBTX, USBRX); // tx, rx Serial XB(UART1TX, UART1RX); // tx, rx Serial *OUT = &USB; //intially set to USB extern BusOut leds; void USB_serial() //signal RTOS event that RXinterrupt has been asserted { OS::TISRW ISRW; leds = 0x7; //char count = 0; //led3 = !led3; char temp = 0; //leds = 0xa; if(true)//!Serial_Mutex.IsLocked()) { //leds = 0xb; //Serial_Mutex.Lock(); leds = 0xc; if(USB.readable()) { temp = USB.getc(); leds = 0xd; if(RX_channel.get_free_size() >0 ) //only push a character onto the channel if there is free space { //OUT = &USB; if(temp != '\n') { RX_channel.push(temp); leds = 0xe; } else if(temp == '\n') { RX_channel.push('\0'); } } else USB.getc(); //start discarding characters!*/ leds = 0xf; leds = 0xa; } leds = 0xb; //Serial_Mutex.Unlock(); //Serial_Mutex.Lock(); //if(USB.writeable()) //USB.putc(temp); //Serial_Mutex.Unlock(); leds = 0x1; } else USB.getc(); //start discarding characters! leds = 0x9; } /*void XB_serial() { //led4 = !led4; char temp = 0; OS::TISRW ISRW; if(!XB_Mutex.IsLocked()) { XB_Mutex.Lock(); while(XB.readable()) { temp = XB.getc(); if(RX_channel.get_free_size() >0 ) //only push a character onto the channel if there is free space { OUT = &XB; if(temp != '\n') { RX_channel.push(temp); } else if(temp == '\n') { OUT = &XB; RX_channel.push('\0'); } } else temp = XB.getc(); //otherwise, wait until another character is sent and try then } XB_Mutex.Unlock(); } }*/ #endif