uint8_t rfm70InitRegisters() { uint8_t i, j, val; uint8_t buf[11]; RFM70_ER(rfm70SetBank(1)); for (i = 0; i <= 0x0d; i++) { for (j = 0; j < 4; j++) buf[j] = Bank1_Reg0_13[i][j]; RFM70_ER(rfm70WriteRegister(i, buf, 4)); } for (j = 0; j < 11; j++) buf[j] = Bank1_Reg14[j]; RFM70_ER(rfm70WriteRegister(0x0e, buf, 11)); RFM70_ER(rfm70SetBank(0)); return RFM70_SUCCESS; }
void main(void) { // Stop watchdog timer WDTCTL = WDTPW + WDTHOLD; // set clocks BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; BCSCTL2 &= ~(DIVS_3); // port 1 init P1DIR |= LED1 + LED2; P1OUT = 0x00; P2DIR |= RFM70_CSN + RFM70_CE; P2OUT = 0x00; P2OUT |= RFM70_CSN; //init button P1DIR &= ~BUTTON; P1OUT |= BUTTON; P1REN |= BUTTON; working_mode = MODE_PC_CONN_WAIT; // init ADC configureAdcTempSensor(); // init SPI initSpi(); // wait to init SPI slave device __delay_cycles(200); // init UART initUart(); // delay __delay_cycles(200); // wait for correct data by reading status register while (rx != 0x0E) { rx = rfm70Nop(); // turn on red led while not initialized P1OUT |= LED1; P1OUT |= LED2; __delay_cycles(200); } // got slave response, turn red led off P1OUT &= ~LED1; P1OUT &= ~LED2; __bis_SR_register(LPM0_bits + GIE); // working ... rfm70Init(); rfm70SetRxMode(); while (1) { // detect carrier rfm70ReadRegister(rfm70_buffer, RFM70_CD, 1); if (rfm70_buffer[0] == 0x01) { P1OUT |= LED1; } else { P1OUT &= ~LED1; } // receive data rfm70ReadRegister(rfm70_buffer, RFM70_R_RX_PL_WID, 1); rx = rfm70Nop(); if (rx & (1 << 6)) { rfm70ReadRxPayload(rfm70_buffer, 1); //sendUart(rfm70_buffer[0]); //sendUart('T'); if (rfm70_buffer[0] == 0xFF) { P1OUT |= LED1; } else { P1OUT &= ~LED1; } // clear interrupt status rfm70_buffer[0] = 0x00; rfm70WriteRegister(rfm70_buffer, RFM70_STATUS, 1); } } //__bis_SR_register(LPM0_bits + GIE); }