X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Fapps%2Fchipcon%2Fchipcon.c;h=89f12b98d4a8fab1c783a0712aef454208edc427;hp=c2b783809d6e7c540468a66252dd8f4005747e71;hb=5fb0341d348e101b30794945a6c91546e25e8e7b;hpb=200cf8b44b4f39dfb975bac6fae35543b2c9c51a diff --git a/firmware/apps/chipcon/chipcon.c b/firmware/apps/chipcon/chipcon.c index c2b7838..89f12b9 100644 --- a/firmware/apps/chipcon/chipcon.c +++ b/firmware/apps/chipcon/chipcon.c @@ -19,6 +19,27 @@ #include #include +//! Handles a chipcon command. +void cc_handle_fn( uint8_t const app, + uint8_t const verb, + uint32_t const len); + +// define the jtag app's app_t +app_t const chipcon_app = { + + /* app number */ + CHIPCON, + + /* handle fn */ + cc_handle_fn, + + /* name */ + "CHIPCON", + + /* desc */ + "\tThe CHIPCON app adds support for debugging the chipcon\n" + "\t8051 processor.\n" +}; /* Concerning clock rates, the maximimum clock rates are defined on page 4 of the spec. They vary, but are roughly 30MHz. Raising @@ -34,11 +55,12 @@ #define MISO BIT2 #define SCK BIT3 + //This could be more accurate. //Does it ever need to be? #define CCSPEED 3 -//#define CCDELAY(x) delay(x) -#define CCDELAY(x) +#define CCDELAY(x) delay(x) +//#define CCDELAY(x) #define SETMOSI P5OUT|=MOSI #define CLRMOSI P5OUT&=~MOSI @@ -82,14 +104,21 @@ void ccdebuginit(){ //Two positive debug clock pulses while !RST is low. //Take RST low, pulse twice, then high. P5OUT&=~SCK; + delay(10); P5OUT&=~RST; + delay(10); + //Two rising edges. P5OUT^=SCK; //up + delay(1); P5OUT^=SCK; //down + delay(1); P5OUT^=SCK; //up + delay(1); P5OUT^=SCK; //Unnecessary. - + delay(1); + //delay(0); //Raise !RST. P5OUT|=RST; @@ -140,10 +169,11 @@ void ccread(unsigned char len){ cmddata[i]=cctrans8(0); } -//! Handles a monitor command. -void cchandle(unsigned char app, - unsigned char verb, - unsigned long len){ +//! Handles a chipcon command. +void cc_handle_fn( uint8_t const app, + uint8_t const verb, + uint32_t const len) +{ //Always init. Might help with buggy lines. //Might hurt too. //ccdebuginit(); @@ -255,7 +285,7 @@ void cchandle(unsigned char app, //Return that many bytes. for(i=0;i