Eli Hughes
/
RobotPowerLogger-V2
For Terrance
Code/Serial.c@0:085749c8446f, 2012-06-13 (annotated)
- Committer:
- emh203
- Date:
- Wed Jun 13 15:10:06 2012 +0000
- Revision:
- 0:085749c8446f
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emh203 | 0:085749c8446f | 1 | #include "System.h" |
emh203 | 0:085749c8446f | 2 | |
emh203 | 0:085749c8446f | 3 | ByteQueue PCBackDoorTx,PCBackDoorRx; |
emh203 | 0:085749c8446f | 4 | BYTE PCBackDoorTx_Queue_Storage[PC_BACKDOOR_TX_QUEUE_SIZE]; |
emh203 | 0:085749c8446f | 5 | BYTE PCBackDoorRx_Queue_Storage[PC_BACKDOOR_RX_QUEUE_SIZE]; |
emh203 | 0:085749c8446f | 6 | |
emh203 | 0:085749c8446f | 7 | Serial PCBackDoor(USBTX, USBRX); |
emh203 | 0:085749c8446f | 8 | Ticker PCBackDoorTxQueueCheck; |
emh203 | 0:085749c8446f | 9 | |
emh203 | 0:085749c8446f | 10 | //IRQ for when data is received |
emh203 | 0:085749c8446f | 11 | void PCBackDoorRxIRQ(); |
emh203 | 0:085749c8446f | 12 | void PCBackDoorMoveTxQueue(); |
emh203 | 0:085749c8446f | 13 | |
emh203 | 0:085749c8446f | 14 | void InitPCBackDoor() |
emh203 | 0:085749c8446f | 15 | { |
emh203 | 0:085749c8446f | 16 | InitByteQueue(&PCBackDoorTx,PC_BACKDOOR_TX_QUEUE_SIZE,&PCBackDoorTx_Queue_Storage[0]); |
emh203 | 0:085749c8446f | 17 | InitByteQueue(&PCBackDoorRx,PC_BACKDOOR_RX_QUEUE_SIZE,&PCBackDoorRx_Queue_Storage[0]); |
emh203 | 0:085749c8446f | 18 | |
emh203 | 0:085749c8446f | 19 | PCBackDoor.baud(57600); |
emh203 | 0:085749c8446f | 20 | PCBackDoor.format(8,Serial::None,1); |
emh203 | 0:085749c8446f | 21 | |
emh203 | 0:085749c8446f | 22 | |
emh203 | 0:085749c8446f | 23 | //The Rx IRQ wil fill up my big software Rx Queue |
emh203 | 0:085749c8446f | 24 | PCBackDoor.attach(&PCBackDoorRxIRQ); |
emh203 | 0:085749c8446f | 25 | |
emh203 | 0:085749c8446f | 26 | //Periodicically check my outgoing Tx Queue (every 1 mS) |
emh203 | 0:085749c8446f | 27 | PCBackDoorTxQueueCheck.attach_us(&PCBackDoorMoveTxQueue,500); |
emh203 | 0:085749c8446f | 28 | } |
emh203 | 0:085749c8446f | 29 | |
emh203 | 0:085749c8446f | 30 | void PCBackDoorMoveTxQueue() |
emh203 | 0:085749c8446f | 31 | { |
emh203 | 0:085749c8446f | 32 | BYTE Temp; |
emh203 | 0:085749c8446f | 33 | |
emh203 | 0:085749c8446f | 34 | while(PCBackDoor.writeable()) |
emh203 | 0:085749c8446f | 35 | { |
emh203 | 0:085749c8446f | 36 | if(BytesInQueue(&PCBackDoorTx) == 0) |
emh203 | 0:085749c8446f | 37 | { |
emh203 | 0:085749c8446f | 38 | break; |
emh203 | 0:085749c8446f | 39 | } |
emh203 | 0:085749c8446f | 40 | else |
emh203 | 0:085749c8446f | 41 | { |
emh203 | 0:085749c8446f | 42 | ByteDequeue(&PCBackDoorTx,&Temp); |
emh203 | 0:085749c8446f | 43 | PCBackDoor.putc(Temp); |
emh203 | 0:085749c8446f | 44 | } |
emh203 | 0:085749c8446f | 45 | } |
emh203 | 0:085749c8446f | 46 | |
emh203 | 0:085749c8446f | 47 | } |
emh203 | 0:085749c8446f | 48 | |
emh203 | 0:085749c8446f | 49 | void PCBackDoorRxIRQ() |
emh203 | 0:085749c8446f | 50 | { |
emh203 | 0:085749c8446f | 51 | while(PCBackDoor.readable()) |
emh203 | 0:085749c8446f | 52 | { |
emh203 | 0:085749c8446f | 53 | ByteEnqueue(&PCBackDoorRx,(BYTE)PCBackDoor.getc()); |
emh203 | 0:085749c8446f | 54 | } |
emh203 | 0:085749c8446f | 55 | } |