X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Fapps%2Fradios%2Fccspi.c;h=d7fba81bfdacedd6afeda9e1fa84c20afff03938;hp=ab1051fdd34a71dca86d39e7205acccb07c2006c;hb=9a334c8d47da8f96662e1fa2c424d383004ab873;hpb=5fb0341d348e101b30794945a6c91546e25e8e7b diff --git a/firmware/apps/radios/ccspi.c b/firmware/apps/radios/ccspi.c index ab1051f..d7fba81 100644 --- a/firmware/apps/radios/ccspi.c +++ b/firmware/apps/radios/ccspi.c @@ -46,20 +46,22 @@ app_t const ccspi_app = { "\tmust be moved into the client.\n" }; - -#define RADIOACTIVE SETCE -#define RADIOPASSIVE CLRCE - //! Set up the pins for CCSPI mode. void ccspisetup(){ - SETSS; - P5DIR&=~MISO; - P5DIR|=MOSI+SCK; + SPIDIR&=~MISO; + 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; + CLRSS; SETSS; } @@ -113,59 +115,56 @@ u8 ccspi_regread(u8 reg, u8 *buf, int len){ //! Handles a Chipcon SPI command. void ccspi_handle_fn( uint8_t const app, - uint8_t const verb, - uint32_t const len) -{ + uint8_t const verb, + uint32_t const len){ unsigned long i; - //Drop CE to passify radio. - RADIOPASSIVE; - //Raise !SS to end transaction, just in case we forgot. - SETSS; - ccspisetup(); + //debugstr("Chipcon SPI handler."); switch(verb){ - //PEEK and POKE might come later. - case READ: + case PEEK: + cmddata[0]|=0x40; //Set the read bit. + //DO NOT BREAK HERE. + case READ: case WRITE: + case POKE: CLRSS; //Drop !SS to begin transaction. for(i=0;i