//P5REN=0xFF;
}
+
+/* 33 cycle critical region
+0000000e <ccdebuginit>:
+ e: f2 d0 0d 00 bis.b #13, &0x0031 ;5 cycles
+ 12: 31 00
+ 14: f2 c2 31 00 bic.b #8, &0x0031 ;4 cycles
+ 18: d2 c3 31 00 bic.b #1, &0x0031 ;4
+ 1c: f2 e2 31 00 xor.b #8, &0x0031 ;4
+ 20: f2 e2 31 00 xor.b #8, &0x0031 ;4
+ 24: f2 e2 31 00 xor.b #8, &0x0031 ;4
+ 28: f2 e2 31 00 xor.b #8, &0x0031 ;4
+ 2c: d2 d3 31 00 bis.b #1, &0x0031 ;4
+ 30: 30 41 ret
+*/
+
+
//! Initialize the debugger
void ccdebuginit(){
//Port output BUT NOT DIRECTION is set at start.
case 0x01://CC1110
case 0x81://CC2510
case 0x91://CC2511
- flash_word_size=0x02;
//debugstr("2 bytes/flash word");
+ flash_word_size=0x02;
break;
default:
- debugstr("Warning: Guessing flash word size.");
+ //debugstr("Warning: Guessing flash word size.");
+ //flash_word_size=0;
+ break;
case 0x85://CC2430
case 0x89://CC2431
//debugstr("4 bytes/flash word");
return;
}
- if(flash_word_size==0){
- debugstr("Flash word size is wrong.");
+ if(flash_word_size!=2 && flash_word_size!=4){
+ debugstr("Flash word size is wrong, aborting write to");
+ debughex(adr);
while(1);
}
flash_word_size);
//debugstr("Wrote flash routine.");
-
-
+
//MOV MEMCTR, (bank * 16) + 1;
cmddata[0]=0x75;
cmddata[1]=0xc7;
while(!(cc_read_status()&CC_STATUS_CPUHALTED)){
- P1OUT^=1;//blink LED while flashing
+ PLEDOUT^=PLEDPIN;//blink LED while flashing
}
//debugstr("Done flashing.");
- P1OUT&=~1;//clear LED
+ PLEDOUT&=~PLEDPIN;//clear LED
}
//! Read the PC