void receive(void) { unsigned char RXBufPtr; SetCS(0); SpiTransmit(0x08); //SFLUSHRX SetCS(1); SetCS(0); SpiTransmit(0x08); //SFLUSHRX SetCS(1); SetCS(0); SpiTransmit(0x03); //SRXON Receiver einschalten SetCS(1); Delay(5000); while((!(P1IN & 32)) && (!(P1IN & BIT4))); SetCS(0); SpiTransmit(0x7F); // RXFifo adressieren (Lesezugriff, schreiben waere 0x3F) SpiTransmit(0xFF); // Dummy RXBufPtr=0; while(P1IN & 32) { RXBuf[RXBufPtr] = SpiTransmit(0xFF); RXBufPtr++; } SetCS(1); Delay(5); } void transmit(char addr1, char addr2, int pLength) { SetCS(0); SpiTransmit(0x3E); // TXFifo addressieren SpiTransmit(pLength); // Packet length SpiTransmit(0x88); // FCF MSB SpiTransmit(0x41); // FCF LSB SpiTransmit(packetNumber); // TX Sequence Number SpiTransmit(0xFF); // PAN ID SpiTransmit(0xFF); // PAN ID SpiTransmit(addr1); // Destination Address SpiTransmit(addr2); // Destination Address SpiTransmit(myAddress1); // Source Address SpiTransmit(myAddress2); // Source Address SpiTransmit('A'); SpiTransmit('A'); SpiTransmit('A'); packetNumber++; SetCS(1); Delay(5); SetCS(0); SpiTransmit(0x04); // STXON enable SetCS(1); Delay(5); } void ReadWriteRam(int Addr) { SpiTransmit(0x80 | (Addr & 0x7F)); SpiTransmit(((Addr >> 1) & 0xC0)); } void InitC2420(void) { P1DIR = BIT7 + BIT6; // Pin Direction fuer Voltage Regulator und Reset P1OUT |= BIT7 + BIT6; // Gesetzt Voltage Regulator ein und Reset P1OUT &= ~BIT6; // Reset auf Low P1OUT |= BIT6; // Reset auf High Delay (30000); // Reset SpiTransmit(0x10); SpiTransmit(0x78); SpiTransmit(0x00); Delay(3000); SpiTransmit(0x10); SpiTransmit(0xF8); SpiTransmit(0x00); SetCS(0); SpiTransmit(0x19); // SECCON0 SpiTransmit(0x01); // Security Control deaktivieren SpiTransmit(0xC4); //Delay (50); SetCS(1); //Delay(5); SetCS(0); SpiTransmit(0x11); // Address recognition einschalten SpiTransmit(0x0A); SpiTransmit(0xE2); //Delay (50); SetCS(1); SetCS(0); ReadWriteRam(0x16A); // Short Address festlegen SpiTransmit(myAddress1); SpiTransmit(myAddress2); SetCS(1); Delay(10); SetCS(0); ReadWriteRam(0x168); // Pan id festlegen SpiTransmit(0xFF); SpiTransmit(0x10); SetCS(1); Delay(10); SetCS(0); SpiTransmit(0x08); // SFLUSHRX SetCS(1); //******************************************* // Set modem control register 2 - se CC2420 documentation p64. SetCS(0); SpiTransmit(0x12); SpiTransmit(0x05); // Correlation threshold = 20 (specified in documentation) SpiTransmit(0x00); // Defaults SetCS(1); // Set maximum FIFOP threshold. We don't want to deal with a packet until // we have all of it. See CC2420 documentation p.71. SetCS(0); SpiTransmit(0x1C); SpiTransmit(0x00); SpiTransmit(0x7F); SetCS(1); SetCS(0); SpiTransmit(0x01); // SXOSCON schicken SetCS(1); }