Test program to send MAX!-Messages with a RFM22-Module

Dependencies:   RF22 TextLCD TextLCDScroll mbed RF22Max

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?

UserRevisionLine numberNew 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