X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Fapps%2Fradios%2Fccspi.c;h=8a8d7e8d3be2d83fe824809b7d8952b3bc3ca8be;hp=83dfa37b4ca42d6e4a5b1ae16e7adc78a5228e8c;hb=5faf3dc1d40b8afe5fe438f6808a4d6f1d169580;hpb=ed8fe6653a821e893857c9491d576b8c6dee8dad diff --git a/firmware/apps/radios/ccspi.c b/firmware/apps/radios/ccspi.c index 83dfa37..8a8d7e8 100644 --- a/firmware/apps/radios/ccspi.c +++ b/firmware/apps/radios/ccspi.c @@ -1,7 +1,7 @@ /*! \file ccspi.c \author Travis Goodspeed \brief Chipcon SPI Register Interface - + Unfortunately, there is very little similarity between the CC2420 and the CC2500, to name just two of the myriad of Chipcon SPI radios. Auto-detection will be a bit difficult, but more to the @@ -12,10 +12,7 @@ #include "platform.h" #include "command.h" - -#include -#include -#include +#include //added for itoa #include "ccspi.h" #include "spi.h" @@ -52,14 +49,14 @@ void ccspisetup(){ SPIDIR|=MOSI+SCK; DIRSS; DIRCE; - + P4OUT|=BIT5; //activate CC2420 voltage regulator msdelay(100); - + //Reset the CC2420. P4OUT&=~BIT6; P4OUT|=BIT6; - + //Begin a new transaction. CLRSS; SETSS; @@ -70,7 +67,7 @@ u8 ccspitrans8(u8 byte){ register unsigned int bit; //This function came from the CCSPI Wikipedia article. //Minor alterations. - + for (bit = 0; bit < 8; bit++) { /* write MOSI on trailing edge of previous clock */ if (byte & 0x80) @@ -78,14 +75,14 @@ u8 ccspitrans8(u8 byte){ else CLRMOSI; byte <<= 1; - + SETCLK; - + /* read MISO on trailing edge */ byte |= READMISO; CLRCLK; } - + return byte; } @@ -93,22 +90,22 @@ u8 ccspitrans8(u8 byte){ //! Writes a register u8 ccspi_regwrite(u8 reg, const u8 *buf, int len){ CLRSS; - + reg=ccspitrans8(reg); while(len--) ccspitrans8(*buf++); - + SETSS; return reg;//status } //! Reads a register u8 ccspi_regread(u8 reg, u8 *buf, int len){ CLRSS; - + reg=ccspitrans8(reg); while(len--) *buf++=ccspitrans8(0); - + SETSS; return reg;//status } @@ -118,9 +115,9 @@ void ccspi_handle_fn( uint8_t const app, uint8_t const verb, uint32_t const len){ unsigned long i; - + //debugstr("Chipcon SPI handler."); - + switch(verb){ case PEEK: cmddata[0]|=0x40; //Set the read bit. @@ -142,12 +139,12 @@ void ccspi_handle_fn( uint8_t const app, #ifdef FIFOP //Has there been an overflow? if((!FIFO)&&FIFOP){ - debugstr("Clearing overflow"); + //debugstr("Clearing overflow"); CLRSS; ccspitrans8(0x08); //SFLUSHRX SETSS; } - + //Is there a packet? if(FIFOP&&FIFO){ //Wait for completion. @@ -161,11 +158,13 @@ void ccspi_handle_fn( uint8_t const app, for(i=0;i> 8) & 0xFF; + + for(i=0;i