int main(void) { //Initialisieren der Komponenten led_init(); //LED Initialisieren td_init(); //Zeitbasis initialisieren script_init(); //Sriptengine initialisieren //Funkmodul initialisieren rf12_init(); rf12_setfreq(RF12FREQ(433.25)); // 433,92MHz rf12_setbandwidth(4, 1, 4); // 200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm rf12_setbaud(19200); // 19200 baud rf12_setpower(0, 6); // 1mW Ausgangangsleistung, 120kHz Frequenzshift sei(); //Interrupts aktivieren uint8_t buf_temp[10]; //Mainloop while(23) { //Zustandsmaschinen aktualisieren script_tick(); rgb_fade_tick(); //Prüfen ob ein neues Datenframe empfangen wurde. if (rf12_getStatus() == rf12_data_status_ready) { rf12_getData(buf_temp); //Daten abholen rf_data_reset(); //Empfangspuffer zurücksetzen command(buf_temp); //Empfangenes Kommando ausführen } } }
int main(void) { // engine ctrl led and reset indicator DDRC |= (1 << DDC1); PORTC |= (1 << PC1); // inicator for: received package is ok DDRC |= (1 << PC4); PORTC &= ~(1 << PC4); /* wait 400ms to give the rf12's POR * (Power-On Reset) time to * initialize the registers etc.. * (initializing wouldnt work without) * * .. this is NOT documented in the datasheet :\ * * notice: * the producer did the same in the example code * but let it uncommented * */ _delay_ms(400); rfxx_init(); // init rf12 as receiver rf12_init(0); init_sensor(); init_control(); // enable external interrupt 2 GICR = (1 << INT2); // Interrupt PIN is Input RFXX_nIRQ_PORT &= ~(1 << RFXX_nIRQ); // enable interrupts (global) sei(); // enable receiver's FIFO rfxx_wrt_cmd(0xCA83); // init finished PORTC &= ~(1 << PC1); while (1); }
void send() { char buf[16];// = "g123456789012345678901234567890\0\0\0"; buf[0] = 'g'; memcpy(buf + 1, &x, 2); memcpy(buf + 3, &y, 2); memcpy(buf + 5, &z, 2); buf[7] = 0; memcpy(buf + 8, &x, 2); memcpy(buf + 10, &y, 2); memcpy(buf + 12, &z, 2); buf[14] = 0; rf12_init(); rf12_setall(RF12FREQ868(868.3), 4, 1, 4, 666, 0, 6); rf12_txdata(buf, 15); rf12_trans(0x8201); rf12_trans(0x0); }
int main(void) { DDRD=0; sei(); UART_Init(); rf12_init(); // ein paar Register setzen (z.B. CLK auf 10MHz) UART_Tx_Str("Init\n", 5); rf12_setfreq(RF12FREQ(433.92)); // Sende/Empfangsfrequenz auf 433,92MHz einstellen rf12_setbandwidth(RxBW200, LNA_6, RSSI_79); // 200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm rf12_setbaud(19200); // 19200 baud rf12_setpower(PWRdB_0, TxBW120); // 1mW Ausgangangsleistung, 120kHz Frequenzshift while(1) { unsigned char i; UART_Tx_Str("Pkg\n", 4); send(); for (i=0; i<100; i++) _delay_ms(10); } }
int main(void) { sei(); UART_Init(); rf12_init(); // ein paar Register setzen (z.B. CLK auf 10MHz) UART_Tx_Str("Init\n", 5); rf12_setfreq(RF12FREQ(433.92)); // Sende/Empfangsfrequenz auf 433,92MHz einstellen rf12_setbandwidth(4, 1, 4); // 200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm rf12_setbaud(19200); // 19200 baud rf12_setpower(0, 6); // 1mW Ausgangangsleistung, 120kHz Frequenzshift for (;;) { unsigned char ret; unsigned char test[50]; /* none blocking sample */ unsigned char test2[50]; UART_Tx_Str(test, sprintf(test, "Start val: %u\n", rf12_rxstart())); ret = 255; //not completed yet while(ret == 255) { ret = rf12_rxfinish(test2); //try if transfer completed } UART_Tx_Str(test, sprintf(test, "ret: %u\n", ret)); if(ret != 0 && ret != 254) //no CRC error && no old str UART_Tx_Str(test2, ret); /*blocking sample */ /* ret = rf12_rxdata(test); if(ret) UART_Tx_Str(test,ret); else UART_Tx_Str("CRC Err\n", 8); */ } }