X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Fapps%2Fradios%2Fccspi.c;h=cca3305b7807ba3b0fedd9367dd49183a449d7c9;hp=524052f0fa33450390cdb561b22a12242dffc693;hb=345dd7e12dca804dcd7c8b3f69a332752bcc2642;hpb=8811b9e7eb0c09f5b7568abc5cbe8de90104c38d diff --git a/firmware/apps/radios/ccspi.c b/firmware/apps/radios/ccspi.c index 524052f..cca3305 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 @@ -13,9 +13,6 @@ #include "platform.h" #include "command.h" #include //added for itoa -#include -#include -#include #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,10 @@ void ccspi_handle_fn( uint8_t const app, uint8_t const verb, uint32_t const len){ unsigned long i; - + u8 j; + //debugstr("Chipcon SPI handler."); - + switch(verb){ case PEEK: cmddata[0]|=0x40; //Set the read bit. @@ -129,9 +127,11 @@ void ccspi_handle_fn( uint8_t const app, case WRITE: case POKE: CLRSS; //Drop !SS to begin transaction. + j=cmddata[0];//Backup address. for(i=0;i> 8) & 0xFF; - //Load the packet. + for(i=0;i