#include <16F690.H> #include #include #include #include #include /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ B4->SDO B6->SCK C7->SDI C1->nSEL //wenn auf 0, wird dieses modul angesprochen wo es dran hängt FSK/DATA/nFFS is pullup with 10KOHM FFIT wenn daten empfangen wurden, kann über diesen pin abgefragt werden set_tris_c().... 0 is output +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ #fuses INTRC_IO, NOWDT, NOPROTECT #use delay(clock=4000000) #use RS232(BAUD=9600, XMIT=PIN_B7, RCV=PIN_B5) #define nSEL PIN_C1 #define LED PIN_C3 #define IRQ PIN_A1 #byte SSPSTAT = 0x94 void RF_WRITE_CMD(int16 acmd); void RF12_INIT(); void TEMP_DATEN_SEND(int8 data_temp); void OUTPUT_INIT(void); void rf12_ready(void); int16 RW_DATEN(int8 data_status); int8 data_temp=0x00, data_status=0x00; //int16 status=0x0000; //+++++++++++++++++++++++++++++++++++MAIN++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ void main() { OUTPUT_INIT(); RF12_INIT(); output_high(LED); //LED leuchtet wen initialisierung erfolgt ist data_temp=0x01; //Temperatur data_status=0x00; //RW_DATEN(data_status); //bevor Daten senden immer Status abfragen, sonst funktioniert es nicht while(TRUE) { delay_ms(10); RW_DATEN(data_status);//bevor Daten senden immer Status abfragen, sonst funktioniert es nicht TEMP_DATEN_SEND(data_temp); } } //+++++++++++++++++++++++++++++++++++OUTPUT_INIT++++++++++++++++++++++++++++++++++++++++++++++++ void OUTPUT_INIT(void) { set_tris_c(0x7D); // nsel output & SDO output & LED output set_tris_b(0x10); // sck output & SDI input output=0 setup_spi(SPI_MASTER | SPI_H_TO_L | SPI_CLK_DIV_16); // Master Mode, fosc/16 SSPSTAT|=(1<<7); //das der spi bus des pic gleich abfragt wie der rfm12 } //+++++++++++++++++++++++++++++++++++RF12_INIT++++++++++++++++++++++++++++++++++++++++++++++++ void RF12_INIT() { RF_WRITE_CMD(0xC0E0); // AVR CLK: 10MHz RF_WRITE_CMD(0x80D7); // Enable FIFO 80e RF_WRITE_CMD(0xC2AB); // Data Filter: internal RF_WRITE_CMD(0xCA81); // Set FIFO mode RF_WRITE_CMD(0xE000); // disable wakeuptimer RF_WRITE_CMD(0xC800); // disable low duty cycle RF_WRITE_CMD(0xC4F7); // AFC settings: autotuning: -10kHz...+7,5kHz RF_WRITE_CMD(0xA620); // 433.92 MHz RF_WRITE_CMD(0x9400|((5&7)<<5)|((1&3)<<3)|(4&7)); //Bandwith=5, Gane=1, drssi=4 RF_WRITE_CMD(0xC611); //baud=19200 RF_WRITE_CMD(0x9810); //pos frequ shift, defiation 30kHz, power out 0dB RF_WRITE_CMD(0x0000); } //+++++++++++++++++++++++++++++++++++RF_WRITE_CMD++++++++++++++++++++++++++++++++++++++++++++++++ void RF_WRITE_CMD(int16 daten) { int8 data_low; int8 data_high; data_low=(int8)daten; data_high=(int8)(daten>>=8 ); output_low(nSEL); //NSEL LOW spi_write(data_high);//erstes datenbyte spi_write(data_low); //zweites datenbyte output_high(nSEL); //NSEL HIGH } //+++++++++++++++++++++++++++++++++++TEMP_daten_SENDEN++++++++++++++++++++++++++++++++++++++++++++++++ void TEMP_DATEN_SEND(int8 data_temp) { output_low(nSEL); RF_WRITE_CMD(0x8230); // TX on rf12_ready(); spi_write(0xB8); spi_write(0x2D); rf12_ready(); spi_write(0xB8); spi_write(0xD4); rf12_ready(); spi_write(0xB8); //send_byte spi_write(data_temp); rf12_ready(); RF_WRITE_CMD(0x8200); // TX off output_high(nSEL); } //++++++++++++++++++++++++++++++++++STATUS_AUSLESEN+++++++++++++++++++++++++++++++++++++++++++++++++++ int16 RW_DATEN(int8 data_status) { int8 stat_l=0x00, stat_h=0x00; output_low(nSEL); stat_h=spi_read(0x00); //(data_status) stat_l=spi_read(0x00); printf("Status:%X %X\n\r",stat_h,stat_l); output_high(nSEL); return TRUE; } //++++++++++++++++++++++++++++++++++RF_12_READY+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ void rf12_ready(void) { while(input(nIRQ)); prinft("nIRQ"); } //++++++++++++++++++++++++++++++++++++++TEMP_EINLESEN++++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++