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.
Diff: main.cpp
- Revision:
- 0:96794c9fc5a3
- Child:
- 1:fc72e0bdb693
diff -r 000000000000 -r 96794c9fc5a3 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Mar 02 20:46:57 2011 +0000
@@ -0,0 +1,143 @@
+#include "mbed.h"
+
+#include "TextLCD.h"
+
+TextLCD lcd(p30, p29, p28, p27, p26, p25, TextLCD::LCD16x2); // rs, e, d0-d3
+
+#include "eth_comfort.h"
+#include "rfm.h"
+#include "rfm12b.h"
+
+rfm12b rfm12b_spi(p11, p12, p13, p14, p18); // mosi, miso, sclk, cs, rxdata
+
+
+Serial pc(USBTX, USBRX); // tx, rx
+
+// mbed LEDs
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+
+
+
+//---------------------------------------------------------------------
+
+void init(void)
+{
+
+
+ rbyte=0;
+ bit_cnt=0;
+ buffer_cnt=0;
+
+ decode=0;
+
+ pack_ok=0; // this will be set by ISR, when byte was received
+
+
+ // init the eth_receiver
+ eth_init();
+
+ // Interrupt on every bit-change
+ rfm12b_spi.attachISR(&ISR);
+
+ // Init the RFM12B
+ rfm12b_spi.RFM_init();
+
+}
+
+//---------------------------------------------------------------------
+//
+//---------------------------------------------------------------------
+
+int main()
+{
+uint8_t blocklength=0;
+unsigned int i,j=0,k;
+unsigned long timeout=0;
+unsigned long tick=0;
+uint16_t crc, swapped;
+bool crc_ok = false;
+
+ pc.baud(115200);
+
+ pc.printf("\n\rConnected to mbed\n\r");
+ lcd.printf("Hello!\n");
+
+ init();
+
+ // state =start
+ startbit=0;
+ do{
+
+ if (pack_ok==1){
+ timeout=0;
+ pack_ok=0;
+ j=0;
+ };
+ if(timeout<10000){
+ timeout++;
+ }
+ else if(timeout==10000){
+ if(buffer_cnt>8){
+ if (buf[2]==0x10) blocklength=10;
+ else if(buf[2]==0x20) blocklength=9;
+ else blocklength=99;
+ j=0;
+ crc_ok = false;
+ for(i=0;i<=buffer_cnt;i++){
+ pc.printf("%02X ",buf[i]);
+ j++;
+ if(j==blocklength){
+ //check crc
+ if(blocklength==9){
+ crc=0xbdb7;
+ for(k=0;k<7;k++){ // crc over first 7 byte
+ crc=calcCRC16r(buf[k],crc,0x8408);
+ }
+ //swap the two crc-bytes
+ swapped = ((crc >> 8) & 0xff) | ((crc << 8) & 0xff00);
+ pc.printf("CRC: %04X ",swapped);
+ if (((buf[7]<<8) | buf[8]) == swapped) crc_ok = true;
+ else crc_ok = false;
+ pc.printf("%s", (crc_ok==true) ? "OK" : "Not OK");
+ if (crc_ok) {
+ pc.printf("\n\rCounter: %02X\n\r",buf[1]);
+ pc.printf( " Dev-ID: %02X %02X %02X\n\r",buf[3],buf[4],buf[5]);
+ //pc.printf( "Battery: %s\n\r", (buf[6]&0x80 != 0x00) ? "WEAK" : "GOOD");
+ pc.printf( "Window : %s\n\r\n\r", (buf[6]&0x01 != 0x00) ? "OPEN" : "CLOSE");
+ lcd.cls();
+ lcd.printf("#:%02X ID: %02X%02X%02X\n",buf[1],buf[3],buf[4],buf[5]);
+ lcd.printf("Window : %s\n", (buf[6]&0x01 != 0x00) ? "OPEN" : "CLOSE");
+ }
+ }
+ pc.printf("\n\r");
+ }
+ }
+
+
+ //start receive from beginning
+ buffer_cnt=0;
+ bit_cnt=0;
+ timeout++;
+ startbit=0;
+ state=0;
+
+ pc.printf("\n\r-----------------------------\n\r");
+ for(i=0;i<1023;i++)buf[i]=0;
+ };
+ timeout = 0;
+ };
+ tick++;
+ //delay_ms(100);
+ if(tick>=2000000){
+ tick=0;
+ led1= !led1;
+ led3=0; // reset receive-led
+ };
+}while(1==1);
+
+}
+
+