Test program to send MAX!-Messages with a RFM22-Module
Dependencies: RF22 TextLCD TextLCDScroll mbed RF22Max
main.cpp@1:b71f9a293c54, 2012-01-18 (annotated)
- Committer:
- charly
- Date:
- Wed Jan 18 20:09:21 2012 +0000
- Revision:
- 1:b71f9a293c54
- Parent:
- 0:94dd393bd9bb
- Child:
- 2:941c46d37d7e
Added RotaryEncoder for changing frequence, AFC-Tests
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
charly |
0:94dd393bd9bb | 1 | |
charly |
0:94dd393bd9bb | 2 | // Test code used during library development, showing how |
charly |
0:94dd393bd9bb | 3 | // to do various things, and how to call various functions |
charly |
0:94dd393bd9bb | 4 | // ported to mbed by Karl Zweimueller |
charly |
0:94dd393bd9bb | 5 | |
charly |
0:94dd393bd9bb | 6 | #include "mbed.h" |
charly |
0:94dd393bd9bb | 7 | |
charly |
0:94dd393bd9bb | 8 | #include <RF22.h> |
charly |
1:b71f9a293c54 | 9 | #include "TextLCD.h" |
charly |
1:b71f9a293c54 | 10 | #include "mRotaryEncoder.h" |
charly |
0:94dd393bd9bb | 11 | |
charly |
0:94dd393bd9bb | 12 | Serial pc(USBTX, USBRX); |
charly |
0:94dd393bd9bb | 13 | |
charly |
1:b71f9a293c54 | 14 | TextLCD lcd(p30, p29, p28, p27, p26, p25, TextLCD::LCD16x2); // rs, e, d4-d7 |
charly |
1:b71f9a293c54 | 15 | |
charly |
1:b71f9a293c54 | 16 | //mRotaryEncoder(PinName pinA, PinName pinB, PinName pinSW, PinMode pullMode=PullUp, int debounceTime_us=1500) |
charly |
1:b71f9a293c54 | 17 | mRotaryEncoder wheel(p21, p22, p23, PullUp, 1500); |
charly |
1:b71f9a293c54 | 18 | |
charly |
1:b71f9a293c54 | 19 | volatile bool enc_pressed = false; // Button of rotaryencoder was pressed |
charly |
1:b71f9a293c54 | 20 | volatile bool enc_rotated = false; // rotary encoder was totaded left or right |
charly |
1:b71f9a293c54 | 21 | |
charly |
0:94dd393bd9bb | 22 | // mbed LEDs |
charly |
0:94dd393bd9bb | 23 | //DigitalOut led1(LED1); |
charly |
0:94dd393bd9bb | 24 | //DigitalOut led2(LED2); |
charly |
0:94dd393bd9bb | 25 | //DigitalOut led3(LED3); |
charly |
0:94dd393bd9bb | 26 | //DigitalOut led4(LED4); |
charly |
0:94dd393bd9bb | 27 | |
charly |
0:94dd393bd9bb | 28 | |
charly |
0:94dd393bd9bb | 29 | // Singleton instance of the radio |
charly |
0:94dd393bd9bb | 30 | //rf22(PinName slaveSelectPin , PinName mosi, PinName miso, PinName sclk, PinName interrupt ); |
charly |
0:94dd393bd9bb | 31 | RF22 rf22(p14,p11,p12,p13,p15); |
charly |
0:94dd393bd9bb | 32 | |
charly |
1:b71f9a293c54 | 33 | int counter = 1; |
charly |
1:b71f9a293c54 | 34 | |
charly |
1:b71f9a293c54 | 35 | float frequence = 869.50; // frequence for sender |
charly |
1:b71f9a293c54 | 36 | const float f_offset = -0.01; // frequence-offset for receiver |
charly |
1:b71f9a293c54 | 37 | |
charly |
1:b71f9a293c54 | 38 | |
charly |
1:b71f9a293c54 | 39 | //interrup-Handler for button on rotary-encoder - no function |
charly |
1:b71f9a293c54 | 40 | void trigger_sw() { |
charly |
1:b71f9a293c54 | 41 | enc_pressed = true; // just set the flag, rest is done outside isr |
charly |
1:b71f9a293c54 | 42 | } |
charly |
1:b71f9a293c54 | 43 | |
charly |
1:b71f9a293c54 | 44 | //interrup-Handler for rotary-encoder rotation - change frequence |
charly |
1:b71f9a293c54 | 45 | void trigger_rotated() { |
charly |
1:b71f9a293c54 | 46 | frequence = wheel.Get()/1000.0; |
charly |
1:b71f9a293c54 | 47 | lcd.locate(0,1); |
charly |
1:b71f9a293c54 | 48 | lcd.printf("%4.3fMHz ",frequence); |
charly |
1:b71f9a293c54 | 49 | if (!rf22.setFrequency(frequence)) // set the new frequence |
charly |
1:b71f9a293c54 | 50 | pc.printf("setFrequency failed"); |
charly |
1:b71f9a293c54 | 51 | } |
charly |
1:b71f9a293c54 | 52 | |
charly |
0:94dd393bd9bb | 53 | void setup() { |
charly |
0:94dd393bd9bb | 54 | |
charly |
0:94dd393bd9bb | 55 | if (!rf22.init()) |
charly |
0:94dd393bd9bb | 56 | pc.printf("RF22 init failed\n\r"); |
charly |
0:94dd393bd9bb | 57 | } |
charly |
0:94dd393bd9bb | 58 | |
charly |
0:94dd393bd9bb | 59 | void |
charly |
0:94dd393bd9bb | 60 | test_read_write() { |
charly |
0:94dd393bd9bb | 61 | uint8_t val; |
charly |
0:94dd393bd9bb | 62 | rf22.spiWrite(RF22_REG_42_CHECK_HEADER0, 10); |
charly |
0:94dd393bd9bb | 63 | val = rf22.spiRead(RF22_REG_42_CHECK_HEADER0); |
charly |
0:94dd393bd9bb | 64 | pc.printf("%n\r\n",val); |
charly |
0:94dd393bd9bb | 65 | |
charly |
0:94dd393bd9bb | 66 | rf22.spiWrite(RF22_REG_42_CHECK_HEADER0, 5); |
charly |
0:94dd393bd9bb | 67 | val = rf22.spiRead(RF22_REG_42_CHECK_HEADER0); |
charly |
0:94dd393bd9bb | 68 | pc.printf("%n\r\n", val); |
charly |
0:94dd393bd9bb | 69 | pc.printf("-----"); |
charly |
0:94dd393bd9bb | 70 | } |
charly |
0:94dd393bd9bb | 71 | |
charly |
0:94dd393bd9bb | 72 | void |
charly |
0:94dd393bd9bb | 73 | test_adc() { |
charly |
0:94dd393bd9bb | 74 | uint8_t val = rf22.adcRead(RF22_ADCSEL_GND); |
charly |
0:94dd393bd9bb | 75 | pc.printf("%n\r\n", val); |
charly |
0:94dd393bd9bb | 76 | } |
charly |
0:94dd393bd9bb | 77 | |
charly |
0:94dd393bd9bb | 78 | void test_temp() { |
charly |
0:94dd393bd9bb | 79 | float val = rf22.temperatureRead(); |
charly |
0:94dd393bd9bb | 80 | pc.printf("%3.1f\r\n", (val/2)-64); |
charly |
0:94dd393bd9bb | 81 | } |
charly |
0:94dd393bd9bb | 82 | |
charly |
0:94dd393bd9bb | 83 | void |
charly |
0:94dd393bd9bb | 84 | test_burst_read() { |
charly |
0:94dd393bd9bb | 85 | uint8_t buf[127]; |
charly |
0:94dd393bd9bb | 86 | rf22.spiBurstRead(0, buf, sizeof(buf)); |
charly |
0:94dd393bd9bb | 87 | uint8_t i; |
charly |
0:94dd393bd9bb | 88 | for (i = 0; i < 127; i++) { |
charly |
0:94dd393bd9bb | 89 | pc.printf("%x : %x\n\r",i,buf[i]); |
charly |
0:94dd393bd9bb | 90 | } |
charly |
0:94dd393bd9bb | 91 | } |
charly |
0:94dd393bd9bb | 92 | |
charly |
0:94dd393bd9bb | 93 | void test_burst_write() { |
charly |
0:94dd393bd9bb | 94 | uint8_t buf[] = "Hello"; |
charly |
0:94dd393bd9bb | 95 | rf22.spiBurstWrite(RF22_REG_7F_FIFO_ACCESS, buf, sizeof(buf)); |
charly |
0:94dd393bd9bb | 96 | } |
charly |
0:94dd393bd9bb | 97 | |
charly |
0:94dd393bd9bb | 98 | void |
charly |
0:94dd393bd9bb | 99 | test_wut() { |
charly |
0:94dd393bd9bb | 100 | pc.printf("WUT Start"); |
charly |
0:94dd393bd9bb | 101 | rf22.setWutPeriod(10000); // 10000, 0, 0 -> 1 secs |
charly |
0:94dd393bd9bb | 102 | rf22.spiWrite(RF22_REG_07_OPERATING_MODE1, RF22_ENWT); |
charly |
0:94dd393bd9bb | 103 | // Wait for the interrupt to occur |
charly |
0:94dd393bd9bb | 104 | while (1) { |
charly |
0:94dd393bd9bb | 105 | uint8_t val = rf22.spiRead(RF22_REG_04_INTERRUPT_STATUS2); |
charly |
0:94dd393bd9bb | 106 | if (val & RF22_IWUT) |
charly |
0:94dd393bd9bb | 107 | break; |
charly |
0:94dd393bd9bb | 108 | } |
charly |
0:94dd393bd9bb | 109 | rf22.spiWrite(RF22_REG_07_OPERATING_MODE1, 0); |
charly |
0:94dd393bd9bb | 110 | |
charly |
0:94dd393bd9bb | 111 | pc.printf("WUT Interrupt bit detected OK"); |
charly |
0:94dd393bd9bb | 112 | } |
charly |
0:94dd393bd9bb | 113 | |
charly |
0:94dd393bd9bb | 114 | void |
charly |
0:94dd393bd9bb | 115 | test_set_frequency() { |
charly |
0:94dd393bd9bb | 116 | if (!rf22.setFHStepSize(0)) |
charly |
0:94dd393bd9bb | 117 | pc.printf("setFHStepSize 1 Fail"); |
charly |
0:94dd393bd9bb | 118 | if (!rf22.setFHChannel(0)) |
charly |
0:94dd393bd9bb | 119 | pc.printf("setFHChannel 1 Fail"); |
charly |
0:94dd393bd9bb | 120 | if (!rf22.setFrequency(434.0)) |
charly |
0:94dd393bd9bb | 121 | pc.printf("setFrequency 1 Fail"); |
charly |
0:94dd393bd9bb | 122 | if (!rf22.setFrequency(240.0)) |
charly |
0:94dd393bd9bb | 123 | pc.printf("setFrequency 2 Fail"); |
charly |
0:94dd393bd9bb | 124 | if (!rf22.setFrequency(929.9999)) // Higher than this produces FREQERR on my 06 silicon |
charly |
0:94dd393bd9bb | 125 | pc.printf("setFrequency 3 Fail"); |
charly |
0:94dd393bd9bb | 126 | if (rf22.setFrequency(960.1)) // Should fail |
charly |
0:94dd393bd9bb | 127 | pc.printf("setFrequency 4 Fail"); |
charly |
0:94dd393bd9bb | 128 | |
charly |
0:94dd393bd9bb | 129 | pc.printf("-------------"); |
charly |
0:94dd393bd9bb | 130 | } |
charly |
0:94dd393bd9bb | 131 | |
charly |
0:94dd393bd9bb | 132 | void |
charly |
0:94dd393bd9bb | 133 | test_rssi() { |
charly |
0:94dd393bd9bb | 134 | rf22.setModeRx(); |
charly |
0:94dd393bd9bb | 135 | pc.printf("Start\n\r"); |
charly |
0:94dd393bd9bb | 136 | float f = 848.0; |
charly |
0:94dd393bd9bb | 137 | while (f < 888.0) { |
charly |
0:94dd393bd9bb | 138 | rf22.setFrequency(f); |
charly |
0:94dd393bd9bb | 139 | wait_ms(200); // Wait for freq to settle |
charly |
0:94dd393bd9bb | 140 | uint8_t rssi = rf22.rssiRead(); |
charly |
0:94dd393bd9bb | 141 | |
charly |
0:94dd393bd9bb | 142 | pc.printf("%f: %i\n\r",f,rssi); |
charly |
0:94dd393bd9bb | 143 | f += 1.0; |
charly |
0:94dd393bd9bb | 144 | } |
charly |
0:94dd393bd9bb | 145 | pc.printf("End\n\r"); |
charly |
0:94dd393bd9bb | 146 | rf22.setModeIdle(); |
charly |
0:94dd393bd9bb | 147 | pc.printf("\n\r-------------\n\r"); |
charly |
0:94dd393bd9bb | 148 | } |
charly |
0:94dd393bd9bb | 149 | |
charly |
0:94dd393bd9bb | 150 | // Sends 0.5 secs of PN9 modulated with with GFSK at full power |
charly |
0:94dd393bd9bb | 151 | void test_tx_pn9() { |
charly |
0:94dd393bd9bb | 152 | rf22.setFrequency(434.0); |
charly |
0:94dd393bd9bb | 153 | rf22.setTxPower(RF22_TXPOW_17DBM); |
charly |
0:94dd393bd9bb | 154 | rf22.setModeRx(); |
charly |
0:94dd393bd9bb | 155 | // Takes a little while to start |
charly |
0:94dd393bd9bb | 156 | wait(1); |
charly |
0:94dd393bd9bb | 157 | pc.printf("%x \n\r",rf22.statusRead()); |
charly |
0:94dd393bd9bb | 158 | rf22.setModemConfig(RF22::FSK_PN9_Rb2Fd5); |
charly |
0:94dd393bd9bb | 159 | // rf22.setModemConfig(RF22::UnmodulatedCarrier); |
charly |
0:94dd393bd9bb | 160 | rf22.setModeTx(); // Turns off Rx |
charly |
0:94dd393bd9bb | 161 | // Takes a little while to start |
charly |
0:94dd393bd9bb | 162 | wait(1); |
charly |
0:94dd393bd9bb | 163 | pc.printf("%x \n\r",rf22.statusRead()); |
charly |
0:94dd393bd9bb | 164 | wait_ms(500); |
charly |
0:94dd393bd9bb | 165 | rf22.setModeIdle(); |
charly |
0:94dd393bd9bb | 166 | // Takes a little while to turn off the transmitter |
charly |
0:94dd393bd9bb | 167 | wait_ms(10); |
charly |
0:94dd393bd9bb | 168 | pc.printf("%x \n\r",rf22.statusRead()); |
charly |
0:94dd393bd9bb | 169 | pc.printf("-------------"); |
charly |
0:94dd393bd9bb | 170 | wait_ms(500); |
charly |
0:94dd393bd9bb | 171 | } |
charly |
0:94dd393bd9bb | 172 | |
charly |
0:94dd393bd9bb | 173 | // Connect analog test points to GPIO1 and GPIO2 |
charly |
0:94dd393bd9bb | 174 | void test_analog_gpio() { |
charly |
0:94dd393bd9bb | 175 | rf22.setFrequency(434.0); |
charly |
0:94dd393bd9bb | 176 | rf22.setModeRx(); |
charly |
0:94dd393bd9bb | 177 | // GPIO1 for Test N output |
charly |
0:94dd393bd9bb | 178 | rf22.spiWrite(RF22_REG_0C_GPIO_CONFIGURATION1, 0x0c); |
charly |
0:94dd393bd9bb | 179 | // GPIO2 for Test P output |
charly |
0:94dd393bd9bb | 180 | rf22.spiWrite(RF22_REG_0D_GPIO_CONFIGURATION2, 0x0d); |
charly |
0:94dd393bd9bb | 181 | rf22.spiWrite(RF22_REG_50_ANALOG_TEST_BUS_SELECT, 15); // Detector? |
charly |
0:94dd393bd9bb | 182 | while (1); |
charly |
0:94dd393bd9bb | 183 | } |
charly |
0:94dd393bd9bb | 184 | |
charly |
0:94dd393bd9bb | 185 | void test_modem_config() { |
charly |
0:94dd393bd9bb | 186 | if (rf22.setModemConfig((RF22::ModemConfigChoice)255)) // Should fail |
charly |
0:94dd393bd9bb | 187 | pc.printf("setModemConfig 1 failed"); |
charly |
0:94dd393bd9bb | 188 | if (!rf22.setModemConfig(RF22::FSK_Rb2Fd5)) |
charly |
0:94dd393bd9bb | 189 | pc.printf("setModemConfig 2 failed"); |
charly |
0:94dd393bd9bb | 190 | if (!rf22.setModemConfig(RF22::FSK_Rb2_4Fd36)) |
charly |
0:94dd393bd9bb | 191 | pc.printf("setModemConfig 3 failed"); |
charly |
0:94dd393bd9bb | 192 | if (!rf22.setModemConfig(RF22::GFSK_Rb2_4Fd36)) |
charly |
0:94dd393bd9bb | 193 | pc.printf("setModemConfig 3 failed"); |
charly |
0:94dd393bd9bb | 194 | if (!rf22.setModemConfig(RF22::OOK_Rb40Bw335)) |
charly |
0:94dd393bd9bb | 195 | pc.printf("setModemConfig 4 failed"); |
charly |
0:94dd393bd9bb | 196 | |
charly |
0:94dd393bd9bb | 197 | pc.printf("-------------"); |
charly |
0:94dd393bd9bb | 198 | } |
charly |
0:94dd393bd9bb | 199 | |
charly |
0:94dd393bd9bb | 200 | // This works with test_rx below |
charly |
0:94dd393bd9bb | 201 | void test_tx() { |
charly |
0:94dd393bd9bb | 202 | pc.printf("Start Send...\n\r"); |
charly |
0:94dd393bd9bb | 203 | if (!rf22.setFrequency(869.50)) |
charly |
0:94dd393bd9bb | 204 | pc.printf("setFrequency failed"); |
charly |
0:94dd393bd9bb | 205 | if (!rf22.setModemConfig(RF22::GFSK_Rb2Fd5)) |
charly |
0:94dd393bd9bb | 206 | pc.printf("setModemConfig failed"); |
charly |
0:94dd393bd9bb | 207 | //uint8_t data[] = "hello"; |
charly |
0:94dd393bd9bb | 208 | // 255 octets: |
charly |
1:b71f9a293c54 | 209 | //uint8_t data[] = "12345678901234567890123456789012345678901234567890123456789012312345678901234567890123456789012345678901234567890123456789012312345678901234567890123456789012345678901234567890123456789012312345678901234567890123456789012345678901234567890123456789012345"; |
charly |
1:b71f9a293c54 | 210 | uint8_t data[32] = ""; |
charly |
1:b71f9a293c54 | 211 | sprintf((char*)data,"Message-Nr: %d",counter); |
charly |
0:94dd393bd9bb | 212 | rf22.send(data, sizeof(data)); |
charly |
0:94dd393bd9bb | 213 | rf22.waitPacketSent(); |
charly |
0:94dd393bd9bb | 214 | pc.printf("Send OK\n\r"); |
charly |
0:94dd393bd9bb | 215 | |
charly |
0:94dd393bd9bb | 216 | } |
charly |
0:94dd393bd9bb | 217 | |
charly |
0:94dd393bd9bb | 218 | // This works with test_tx above |
charly |
0:94dd393bd9bb | 219 | void test_rx() { |
charly |
0:94dd393bd9bb | 220 | pc.printf("Start Receive...\n\r"); |
charly |
0:94dd393bd9bb | 221 | //if (!rf22.setFrequency(869.50)) |
charly |
1:b71f9a293c54 | 222 | if (!rf22.setFrequency(869.49)) // sending frequence doesn't work!!! Offset! Seems to be a problem if combining RFM22B-S1 with -S2 |
charly |
0:94dd393bd9bb | 223 | pc.printf("setFrequency failed\n\r"); |
charly |
0:94dd393bd9bb | 224 | if (!rf22.setModemConfig(RF22::GFSK_Rb2Fd5)) |
charly |
0:94dd393bd9bb | 225 | pc.printf("setModemConfig failed\n\r"); |
charly |
0:94dd393bd9bb | 226 | |
charly |
0:94dd393bd9bb | 227 | //while (1) { |
charly |
1:b71f9a293c54 | 228 | uint8_t buf[RF22_MAX_MESSAGE_LEN]; |
charly |
1:b71f9a293c54 | 229 | uint8_t len = sizeof(buf); |
charly |
1:b71f9a293c54 | 230 | if (rf22.recv(buf, &len)) // Should fail, no message available |
charly |
1:b71f9a293c54 | 231 | pc.printf("recv 1 failed\n\r"); |
charly |
0:94dd393bd9bb | 232 | |
charly |
1:b71f9a293c54 | 233 | //rf22.waitAvailable(); |
charly |
1:b71f9a293c54 | 234 | if (rf22.waitAvailableTimeout(6000)) { |
charly |
1:b71f9a293c54 | 235 | if (rf22.recv(buf, &len)) { |
charly |
1:b71f9a293c54 | 236 | pc.printf("got one in user: >%s<\n\r",(char*)buf); |
charly |
1:b71f9a293c54 | 237 | lcd.locate(0,0); |
charly |
1:b71f9a293c54 | 238 | lcd.printf("%16s",(char*)buf); |
charly |
0:94dd393bd9bb | 239 | } else |
charly |
1:b71f9a293c54 | 240 | pc.printf("recv 2 failed\n\r"); |
charly |
1:b71f9a293c54 | 241 | } else |
charly |
1:b71f9a293c54 | 242 | pc.printf("recv timeout\n\r"); |
charly |
0:94dd393bd9bb | 243 | |
charly |
0:94dd393bd9bb | 244 | //} |
charly |
0:94dd393bd9bb | 245 | } |
charly |
0:94dd393bd9bb | 246 | |
charly |
0:94dd393bd9bb | 247 | void loop() { |
charly |
0:94dd393bd9bb | 248 | // test_read_write(); |
charly |
0:94dd393bd9bb | 249 | // test_adc(); |
charly |
0:94dd393bd9bb | 250 | // test_temp(); |
charly |
0:94dd393bd9bb | 251 | // test_burst_read(); |
charly |
0:94dd393bd9bb | 252 | // test_burst_write(); |
charly |
0:94dd393bd9bb | 253 | // test_wut(); |
charly |
0:94dd393bd9bb | 254 | // test_set_frequency(); |
charly |
0:94dd393bd9bb | 255 | // test_rssi(); |
charly |
0:94dd393bd9bb | 256 | test_tx_pn9(); |
charly |
0:94dd393bd9bb | 257 | // test_analog_gpio(); |
charly |
0:94dd393bd9bb | 258 | // test_modem_config(); |
charly |
0:94dd393bd9bb | 259 | // test_tx(); |
charly |
0:94dd393bd9bb | 260 | // test_rx(); |
charly |
0:94dd393bd9bb | 261 | |
charly |
0:94dd393bd9bb | 262 | // while (1); |
charly |
0:94dd393bd9bb | 263 | wait_ms(1000); |
charly |
0:94dd393bd9bb | 264 | } |
charly |
0:94dd393bd9bb | 265 | |
charly |
0:94dd393bd9bb | 266 | /*float start = 868.0; |
charly |
0:94dd393bd9bb | 267 | float end = 868.8; |
charly |
0:94dd393bd9bb | 268 | */ |
charly |
0:94dd393bd9bb | 269 | //869,40 - 869,65 Allgemein |
charly |
0:94dd393bd9bb | 270 | float start = 869.4; |
charly |
0:94dd393bd9bb | 271 | float end = 869.65; |
charly |
0:94dd393bd9bb | 272 | float step = 0.02; |
charly |
0:94dd393bd9bb | 273 | |
charly |
1:b71f9a293c54 | 274 | |
charly |
1:b71f9a293c54 | 275 | |
charly |
0:94dd393bd9bb | 276 | void spec() { |
charly |
0:94dd393bd9bb | 277 | rf22.setModeRx(); |
charly |
0:94dd393bd9bb | 278 | float freq; |
charly |
0:94dd393bd9bb | 279 | pc.printf("\033[H"); // Home |
charly |
0:94dd393bd9bb | 280 | pc.printf("\033[2J"); // Clear Screen |
charly |
0:94dd393bd9bb | 281 | for (freq = start; freq < end; freq += step) { |
charly |
0:94dd393bd9bb | 282 | rf22.setFrequency(freq); |
charly |
0:94dd393bd9bb | 283 | wait_ms(10); // Let the freq settle |
charly |
0:94dd393bd9bb | 284 | uint8_t rssi = rf22.rssiRead(); |
charly |
0:94dd393bd9bb | 285 | uint8_t stars = rssi / 8; |
charly |
0:94dd393bd9bb | 286 | |
charly |
0:94dd393bd9bb | 287 | pc.printf("%f: ",freq); |
charly |
0:94dd393bd9bb | 288 | |
charly |
0:94dd393bd9bb | 289 | // Serial.print(rssi, DEC); |
charly |
0:94dd393bd9bb | 290 | uint8_t i; |
charly |
0:94dd393bd9bb | 291 | for (i = 0; i < stars; i++) |
charly |
0:94dd393bd9bb | 292 | pc.putc('*'); |
charly |
0:94dd393bd9bb | 293 | pc.printf("\033[K\n\r"); // DElete to EOL |
charly |
0:94dd393bd9bb | 294 | |
charly |
0:94dd393bd9bb | 295 | } |
charly |
0:94dd393bd9bb | 296 | pc.printf("------------------\n\r"); |
charly |
0:94dd393bd9bb | 297 | } |
charly |
0:94dd393bd9bb | 298 | |
charly |
1:b71f9a293c54 | 299 | void send_loop() { |
charly |
1:b71f9a293c54 | 300 | uint8_t data[32] = ""; |
charly |
1:b71f9a293c54 | 301 | |
charly |
1:b71f9a293c54 | 302 | while (1) { |
charly |
1:b71f9a293c54 | 303 | //uint8_t data[] = "hello"; |
charly |
1:b71f9a293c54 | 304 | // 255 octets: |
charly |
1:b71f9a293c54 | 305 | //uint8_t data[] = "12345678901234567890123456789012345678901234567890123456789012312345678901234567890123456789012345678901234567890123456789012312345678901234567890123456789012345678901234567890123456789012312345678901234567890123456789012345678901234567890123456789012345"; |
charly |
1:b71f9a293c54 | 306 | |
charly |
1:b71f9a293c54 | 307 | sprintf((char*)data,"Message-Nr: %d",counter++); |
charly |
1:b71f9a293c54 | 308 | rf22.send(data, sizeof(data)); |
charly |
1:b71f9a293c54 | 309 | rf22.waitPacketSent(); |
charly |
1:b71f9a293c54 | 310 | pc.printf("Send OK: %s\n\r",(char*)data); |
charly |
1:b71f9a293c54 | 311 | |
charly |
1:b71f9a293c54 | 312 | wait(2); // Wait 2 Seconds |
charly |
1:b71f9a293c54 | 313 | } |
charly |
1:b71f9a293c54 | 314 | } |
charly |
1:b71f9a293c54 | 315 | |
charly |
1:b71f9a293c54 | 316 | void receive_loop() { |
charly |
1:b71f9a293c54 | 317 | while (1) { |
charly |
1:b71f9a293c54 | 318 | uint8_t buf[RF22_MAX_MESSAGE_LEN]; |
charly |
1:b71f9a293c54 | 319 | uint8_t len = sizeof(buf); |
charly |
1:b71f9a293c54 | 320 | |
charly |
1:b71f9a293c54 | 321 | rf22.waitAvailable(); |
charly |
1:b71f9a293c54 | 322 | if (rf22.recv(buf, &len)) { |
charly |
1:b71f9a293c54 | 323 | pc.printf("got one in user: >%s<\n\r",(char*)buf); |
charly |
1:b71f9a293c54 | 324 | lcd.cls(); |
charly |
1:b71f9a293c54 | 325 | lcd.locate(0,0); |
charly |
1:b71f9a293c54 | 326 | lcd.printf("%16s",(char*)buf); |
charly |
1:b71f9a293c54 | 327 | } else { |
charly |
1:b71f9a293c54 | 328 | lcd.printf("recv failed"); |
charly |
1:b71f9a293c54 | 329 | pc.printf("recv failed\n\r"); |
charly |
1:b71f9a293c54 | 330 | } |
charly |
1:b71f9a293c54 | 331 | } |
charly |
1:b71f9a293c54 | 332 | } |
charly |
0:94dd393bd9bb | 333 | |
charly |
0:94dd393bd9bb | 334 | int main() { |
charly |
1:b71f9a293c54 | 335 | |
charly |
1:b71f9a293c54 | 336 | //#define sender; // are we sender? |
charly |
1:b71f9a293c54 | 337 | |
charly |
0:94dd393bd9bb | 338 | pc.baud(115200); |
charly |
0:94dd393bd9bb | 339 | |
charly |
0:94dd393bd9bb | 340 | pc.printf("\n\rConnected to mbed\n\r"); |
charly |
0:94dd393bd9bb | 341 | |
charly |
1:b71f9a293c54 | 342 | lcd.locate(0,0); // 2nd cls needed, as otherwise it doesn't init correctly!!??? |
charly |
1:b71f9a293c54 | 343 | lcd.printf("RF22-Test-V1.0"); |
charly |
1:b71f9a293c54 | 344 | |
charly |
0:94dd393bd9bb | 345 | pc.printf("Pre-setup|"); |
charly |
0:94dd393bd9bb | 346 | setup(); |
charly |
0:94dd393bd9bb | 347 | pc.printf("Post-setup\n\r"); |
charly |
1:b71f9a293c54 | 348 | |
charly |
0:94dd393bd9bb | 349 | |
charly |
0:94dd393bd9bb | 350 | //pc.printf("Pre-test_temp|"); |
charly |
0:94dd393bd9bb | 351 | //test_temp(); |
charly |
0:94dd393bd9bb | 352 | //pc.printf("Post-test_temp\n\r"); |
charly |
0:94dd393bd9bb | 353 | |
charly |
0:94dd393bd9bb | 354 | //pc.printf("Pre-test_set_frequency|"); |
charly |
0:94dd393bd9bb | 355 | //test_set_frequency(); |
charly |
0:94dd393bd9bb | 356 | //pc.printf("Post-test_set_frequency\n\r"); |
charly |
0:94dd393bd9bb | 357 | |
charly |
0:94dd393bd9bb | 358 | /* while (1){ |
charly |
0:94dd393bd9bb | 359 | pc.printf("Pre-test_rssi|"); |
charly |
0:94dd393bd9bb | 360 | test_rssi(); |
charly |
0:94dd393bd9bb | 361 | pc.printf("Post-test_rssi\n\r"); |
charly |
0:94dd393bd9bb | 362 | } |
charly |
1:b71f9a293c54 | 363 | |
charly |
0:94dd393bd9bb | 364 | while (1) { |
charly |
0:94dd393bd9bb | 365 | spec(); |
charly |
0:94dd393bd9bb | 366 | } |
charly |
0:94dd393bd9bb | 367 | */ |
charly |
1:b71f9a293c54 | 368 | /* |
charly |
0:94dd393bd9bb | 369 | while (1) { |
charly |
1:b71f9a293c54 | 370 | lcd.cls(); |
charly |
0:94dd393bd9bb | 371 | test_tx(); |
charly |
0:94dd393bd9bb | 372 | rf22.setModeRx(); |
charly |
0:94dd393bd9bb | 373 | wait(0.5); |
charly |
0:94dd393bd9bb | 374 | test_rx(); |
charly |
0:94dd393bd9bb | 375 | wait(2); |
charly |
0:94dd393bd9bb | 376 | spec(); |
charly |
0:94dd393bd9bb | 377 | } |
charly |
1:b71f9a293c54 | 378 | */ |
charly |
1:b71f9a293c54 | 379 | |
charly |
1:b71f9a293c54 | 380 | if (!rf22.setModemConfig(RF22::GFSK_Rb19_2Fd9_6)) |
charly |
1:b71f9a293c54 | 381 | pc.printf("setModemConfig failed"); |
charly |
1:b71f9a293c54 | 382 | |
charly |
1:b71f9a293c54 | 383 | |
charly |
1:b71f9a293c54 | 384 | // Test activation of AFC: not enough for combination -S1/-S2 Modules! |
charly |
1:b71f9a293c54 | 385 | |
charly |
1:b71f9a293c54 | 386 | // RF22_REG_1D_AFC_LOOP_GEARSHIFT_OVERRIDE 0x1d |
charly |
1:b71f9a293c54 | 387 | // RF22_AFC_EN 0x40 |
charly |
1:b71f9a293c54 | 388 | rf22.spiWrite(RF22_REG_1D_AFC_LOOP_GEARSHIFT_OVERRIDE, RF22_AFC_EN); |
charly |
1:b71f9a293c54 | 389 | |
charly |
1:b71f9a293c54 | 390 | |
charly |
1:b71f9a293c54 | 391 | // Reg RF22_REG_1E_AFC_TIMING_CONTROL 0x1e |
charly |
1:b71f9a293c54 | 392 | // RF22_AFC_TC 0x0a |
charly |
1:b71f9a293c54 | 393 | rf22.spiWrite(RF22_REG_1E_AFC_TIMING_CONTROL, RF22_AFC_TC ); |
charly |
1:b71f9a293c54 | 394 | |
charly |
1:b71f9a293c54 | 395 | // Reg RF22_REG_2A_AFC_LIMITER 0x2a |
charly |
1:b71f9a293c54 | 396 | // RF22_AFC_LIMIT 0x50 |
charly |
1:b71f9a293c54 | 397 | rf22.spiWrite(RF22_REG_2A_AFC_LIMITER, RF22_AFC_LIMIT); |
charly |
1:b71f9a293c54 | 398 | |
charly |
1:b71f9a293c54 | 399 | #ifndef sender |
charly |
1:b71f9a293c54 | 400 | frequence+=f_offset; |
charly |
1:b71f9a293c54 | 401 | #endif |
charly |
1:b71f9a293c54 | 402 | |
charly |
1:b71f9a293c54 | 403 | wheel.Set(frequence*1000); // 3 digits after period |
charly |
1:b71f9a293c54 | 404 | |
charly |
1:b71f9a293c54 | 405 | // call trigger_rot() when the shaft is rotaded left or right - change frequence |
charly |
1:b71f9a293c54 | 406 | wheel.attachROT(&trigger_rotated); |
charly |
1:b71f9a293c54 | 407 | |
charly |
1:b71f9a293c54 | 408 | lcd.locate(0,1); |
charly |
1:b71f9a293c54 | 409 | lcd.printf("%fMHz",frequence); |
charly |
1:b71f9a293c54 | 410 | wait(10); |
charly |
1:b71f9a293c54 | 411 | lcd.cls(); |
charly |
1:b71f9a293c54 | 412 | |
charly |
1:b71f9a293c54 | 413 | if (!rf22.setFrequency(frequence)) |
charly |
1:b71f9a293c54 | 414 | pc.printf("setFrequency failed"); |
charly |
1:b71f9a293c54 | 415 | |
charly |
1:b71f9a293c54 | 416 | |
charly |
1:b71f9a293c54 | 417 | #ifdef sender |
charly |
1:b71f9a293c54 | 418 | // Code for sending |
charly |
1:b71f9a293c54 | 419 | |
charly |
1:b71f9a293c54 | 420 | |
charly |
1:b71f9a293c54 | 421 | send_loop(); // start sending |
charly |
1:b71f9a293c54 | 422 | #endif |
charly |
1:b71f9a293c54 | 423 | |
charly |
1:b71f9a293c54 | 424 | #ifndef sender |
charly |
1:b71f9a293c54 | 425 | // Code for receiving |
charly |
1:b71f9a293c54 | 426 | |
charly |
1:b71f9a293c54 | 427 | receive_loop(); // start receiving |
charly |
1:b71f9a293c54 | 428 | |
charly |
1:b71f9a293c54 | 429 | #endif |
charly |
1:b71f9a293c54 | 430 | |
charly |
0:94dd393bd9bb | 431 | //pc.printf("Ready.\n\r"); |
charly |
0:94dd393bd9bb | 432 | } |
charly |
0:94dd393bd9bb | 433 | |
charly |
0:94dd393bd9bb | 434 |