Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@1:05e9a83b721c, 2013-05-26 (annotated)
- Committer:
- MRSa
- Date:
- Sun May 26 13:25:39 2013 +0000
- Revision:
- 1:05e9a83b721c
- Parent:
- 0:516a9e85a3fb
- Child:
- 2:691ccdef6f1e
add LED
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MRSa | 0:516a9e85a3fb | 1 | #include "mbed.h" |
| MRSa | 0:516a9e85a3fb | 2 | #include "bc_ant.h" |
| MRSa | 0:516a9e85a3fb | 3 | |
| MRSa | 0:516a9e85a3fb | 4 | /** USBTX - Tranmit on USB USBRX - receive on USB **/ |
| MRSa | 0:516a9e85a3fb | 5 | Serial pc(USBTX, USBRX); |
| MRSa | 0:516a9e85a3fb | 6 | |
| MRSa | 0:516a9e85a3fb | 7 | /** LPC1768 LEDs **/ |
| MRSa | 0:516a9e85a3fb | 8 | BusOut myLeds(LED1, LED2, LED3, LED4); |
| MRSa | 0:516a9e85a3fb | 9 | |
| MRSa | 0:516a9e85a3fb | 10 | /** for BC-ANT-SERIAL (LPC1768) **/ |
| MRSa | 0:516a9e85a3fb | 11 | bc_ant antPort(p13, p14, p15, 9600); |
| MRSa | 0:516a9e85a3fb | 12 | |
| MRSa | 0:516a9e85a3fb | 13 | /** DIP-SW (for NODE SHARED ADDRESS) **/ |
| MRSa | 0:516a9e85a3fb | 14 | DigitalIn dip1(p20); // DIP-SW1 |
| MRSa | 0:516a9e85a3fb | 15 | DigitalIn dip2(p19); // DIP-SW2 |
| MRSa | 0:516a9e85a3fb | 16 | |
| MRSa | 0:516a9e85a3fb | 17 | /** OUTPUT DEVICES **/ |
| MRSa | 0:516a9e85a3fb | 18 | DigitalOut led0(p21); |
| MRSa | 1:05e9a83b721c | 19 | DigitalOut led1(p22); |
| MRSa | 0:516a9e85a3fb | 20 | |
| MRSa | 0:516a9e85a3fb | 21 | /** ANT DEFINES **/ |
| MRSa | 0:516a9e85a3fb | 22 | #define MAX_BUFSIZE 64 |
| MRSa | 0:516a9e85a3fb | 23 | #define ANT_CH 0 |
| MRSa | 0:516a9e85a3fb | 24 | #define DEVICE_NUMBER 65 |
| MRSa | 0:516a9e85a3fb | 25 | #define ANT_NETWORK_NUMBER 0 // Network Number |
| MRSa | 0:516a9e85a3fb | 26 | #define TRANS_TYPE_WILDCARD 0 // Wild Card |
| MRSa | 0:516a9e85a3fb | 27 | #define TRANS_TYPE_INDEPENDENT 1 // Independent Channel |
| MRSa | 0:516a9e85a3fb | 28 | #define TRANS_TYPE_SHARED_2BYTES 3 // Shared Channel using 2byte address |
| MRSa | 0:516a9e85a3fb | 29 | #define DEVICE_TYPE_WILDCARD 0 |
| MRSa | 0:516a9e85a3fb | 30 | #define DEVICE_TYPE_ID 3 // Device Type ID |
| MRSa | 0:516a9e85a3fb | 31 | |
| MRSa | 0:516a9e85a3fb | 32 | /** DIP-SWITCH ASSIGN **/ |
| MRSa | 0:516a9e85a3fb | 33 | #define ID_1 0x00001 // 1:off, 2:off |
| MRSa | 0:516a9e85a3fb | 34 | #define ID_2 0x00002 // 1:on, 2:off |
| MRSa | 0:516a9e85a3fb | 35 | #define ID_3 0x00004 // 1:off, 2:on |
| MRSa | 0:516a9e85a3fb | 36 | #define ID_4 0x00008 // 1:on, 2:on |
| MRSa | 0:516a9e85a3fb | 37 | |
| MRSa | 0:516a9e85a3fb | 38 | |
| MRSa | 0:516a9e85a3fb | 39 | /** |
| MRSa | 0:516a9e85a3fb | 40 | * CHECK DIP-SW STATUS |
| MRSa | 0:516a9e85a3fb | 41 | */ |
| MRSa | 0:516a9e85a3fb | 42 | int check_DipSw() |
| MRSa | 0:516a9e85a3fb | 43 | { |
| MRSa | 0:516a9e85a3fb | 44 | if (dip1 == 0) |
| MRSa | 0:516a9e85a3fb | 45 | { |
| MRSa | 0:516a9e85a3fb | 46 | return ((dip2 == 0) ? 4 : 2); |
| MRSa | 0:516a9e85a3fb | 47 | } |
| MRSa | 0:516a9e85a3fb | 48 | return ((dip2 == 0) ? 3 : 1); |
| MRSa | 0:516a9e85a3fb | 49 | } |
| MRSa | 0:516a9e85a3fb | 50 | |
| MRSa | 0:516a9e85a3fb | 51 | /** |
| MRSa | 0:516a9e85a3fb | 52 | * GET LED LAMP ID |
| MRSa | 0:516a9e85a3fb | 53 | */ |
| MRSa | 0:516a9e85a3fb | 54 | int getLampId(int id) |
| MRSa | 0:516a9e85a3fb | 55 | { |
| MRSa | 0:516a9e85a3fb | 56 | int lampId = ID_1; |
| MRSa | 0:516a9e85a3fb | 57 | switch (id) |
| MRSa | 0:516a9e85a3fb | 58 | { |
| MRSa | 0:516a9e85a3fb | 59 | case 4: |
| MRSa | 0:516a9e85a3fb | 60 | lampId = ID_4; |
| MRSa | 0:516a9e85a3fb | 61 | break; |
| MRSa | 0:516a9e85a3fb | 62 | case 3: |
| MRSa | 0:516a9e85a3fb | 63 | lampId = ID_3; |
| MRSa | 0:516a9e85a3fb | 64 | break; |
| MRSa | 0:516a9e85a3fb | 65 | case 2: |
| MRSa | 0:516a9e85a3fb | 66 | lampId = ID_2; |
| MRSa | 0:516a9e85a3fb | 67 | break; |
| MRSa | 0:516a9e85a3fb | 68 | case 1: |
| MRSa | 0:516a9e85a3fb | 69 | default: |
| MRSa | 0:516a9e85a3fb | 70 | lampId = ID_1; |
| MRSa | 0:516a9e85a3fb | 71 | break; |
| MRSa | 0:516a9e85a3fb | 72 | } |
| MRSa | 0:516a9e85a3fb | 73 | return (lampId); |
| MRSa | 0:516a9e85a3fb | 74 | } |
| MRSa | 0:516a9e85a3fb | 75 | |
| MRSa | 0:516a9e85a3fb | 76 | /** |
| MRSa | 0:516a9e85a3fb | 77 | * Recieved a message from ANT port. |
| MRSa | 0:516a9e85a3fb | 78 | */ |
| MRSa | 0:516a9e85a3fb | 79 | void receivedFromAnt() |
| MRSa | 0:516a9e85a3fb | 80 | { |
| MRSa | 0:516a9e85a3fb | 81 | uint8_t receivedLength = 0; |
| MRSa | 0:516a9e85a3fb | 82 | uint8_t receivedBuffer[MAX_BUFSIZE]; |
| MRSa | 0:516a9e85a3fb | 83 | receivedLength = antPort.BC_ANT_RecvPacket(receivedBuffer, MAX_BUFSIZE); |
| MRSa | 0:516a9e85a3fb | 84 | |
| MRSa | 0:516a9e85a3fb | 85 | printf("RX(%3d):", receivedLength); |
| MRSa | 0:516a9e85a3fb | 86 | for (int index = 0; index < receivedLength; index++) |
| MRSa | 0:516a9e85a3fb | 87 | { |
| MRSa | 0:516a9e85a3fb | 88 | printf("%02x ", receivedBuffer[index]); |
| MRSa | 0:516a9e85a3fb | 89 | } |
| MRSa | 0:516a9e85a3fb | 90 | printf("\r\n"); |
| MRSa | 0:516a9e85a3fb | 91 | } |
| MRSa | 0:516a9e85a3fb | 92 | |
| MRSa | 0:516a9e85a3fb | 93 | /** |
| MRSa | 0:516a9e85a3fb | 94 | * Moving command received from HOST |
| MRSa | 0:516a9e85a3fb | 95 | */ |
| MRSa | 0:516a9e85a3fb | 96 | void sendToAnt(uint8_t *buffer) |
| MRSa | 0:516a9e85a3fb | 97 | { |
| MRSa | 0:516a9e85a3fb | 98 | antPort.ANT_SendAcknowledgedData(ANT_CH, buffer); |
| MRSa | 0:516a9e85a3fb | 99 | } |
| MRSa | 0:516a9e85a3fb | 100 | |
| MRSa | 0:516a9e85a3fb | 101 | /** |
| MRSa | 0:516a9e85a3fb | 102 | * initializes ANT port |
| MRSa | 0:516a9e85a3fb | 103 | */ |
| MRSa | 0:516a9e85a3fb | 104 | int initialize_ANTport(bool isReceive) |
| MRSa | 0:516a9e85a3fb | 105 | { |
| MRSa | 0:516a9e85a3fb | 106 | antPort.ANT_ResetSystem(); |
| MRSa | 0:516a9e85a3fb | 107 | antPort.ANT_AssignChannel(ANT_CH, ANT_Shared_Bidirectional_Slave, ANT_NETWORK_NUMBER); |
| MRSa | 0:516a9e85a3fb | 108 | antPort.ANT_SetChannelId(ANT_CH, DEVICE_NUMBER, DEVICE_TYPE_ID, TRANS_TYPE_SHARED_2BYTES); |
| MRSa | 0:516a9e85a3fb | 109 | antPort.ANT_SetChannelPeriod_Hz(ANT_CH, 16); // 16Hz : 32768/16 = 2048 |
| MRSa | 0:516a9e85a3fb | 110 | antPort.ANT_SetChannelRFFreq(ANT_CH, 4); // 2404 MHz |
| MRSa | 0:516a9e85a3fb | 111 | antPort.ANT_OpenChannel(ANT_CH); // |
| MRSa | 0:516a9e85a3fb | 112 | antPort.attach(&receivedFromAnt); // callback function |
| MRSa | 0:516a9e85a3fb | 113 | |
| MRSa | 0:516a9e85a3fb | 114 | // set device's shared address |
| MRSa | 0:516a9e85a3fb | 115 | uint8_t buffer[MAX_BUFSIZE] = |
| MRSa | 0:516a9e85a3fb | 116 | { |
| MRSa | 0:516a9e85a3fb | 117 | 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff |
| MRSa | 0:516a9e85a3fb | 118 | }; |
| MRSa | 0:516a9e85a3fb | 119 | buffer[0] = check_DipSw(); |
| MRSa | 0:516a9e85a3fb | 120 | antPort.ANT_SendBroadcastData(ANT_CH, buffer); |
| MRSa | 0:516a9e85a3fb | 121 | return (0); |
| MRSa | 0:516a9e85a3fb | 122 | } |
| MRSa | 0:516a9e85a3fb | 123 | |
| MRSa | 0:516a9e85a3fb | 124 | /** |
| MRSa | 0:516a9e85a3fb | 125 | * Main Routine |
| MRSa | 0:516a9e85a3fb | 126 | */ |
| MRSa | 0:516a9e85a3fb | 127 | int main() |
| MRSa | 0:516a9e85a3fb | 128 | { |
| MRSa | 0:516a9e85a3fb | 129 | printf("--- INITIALIZE (ID:%d) ----\r\n", check_DipSw()); |
| MRSa | 0:516a9e85a3fb | 130 | int statusLamp = getLampId(check_DipSw()); |
| MRSa | 0:516a9e85a3fb | 131 | pc.baud(9600); // set serial speed between PC and mbed. |
| MRSa | 0:516a9e85a3fb | 132 | initialize_ANTport(true); // initialize BC-ANT-SERIAL |
| MRSa | 0:516a9e85a3fb | 133 | printf("--- READY ----\r\n"); |
| MRSa | 0:516a9e85a3fb | 134 | |
| MRSa | 0:516a9e85a3fb | 135 | while(1) |
| MRSa | 0:516a9e85a3fb | 136 | { |
| MRSa | 0:516a9e85a3fb | 137 | myLeds = statusLamp; |
| MRSa | 1:05e9a83b721c | 138 | led0 = 1; |
| MRSa | 1:05e9a83b721c | 139 | led1 = 1; |
| MRSa | 0:516a9e85a3fb | 140 | wait(0.5); |
| MRSa | 0:516a9e85a3fb | 141 | myLeds = 0; |
| MRSa | 1:05e9a83b721c | 142 | led0 = 0; |
| MRSa | 1:05e9a83b721c | 143 | led1 = 0; |
| MRSa | 0:516a9e85a3fb | 144 | wait(0.5); |
| MRSa | 0:516a9e85a3fb | 145 | } |
| MRSa | 0:516a9e85a3fb | 146 | } |