hi,
My Vue is #6250 and Mfg code of ME18041xxxx. 'VER' returns May 1 2012. 'NVER' returns 3.0.
this is C source code for a funny experiments.
/*
* compiler: Microchip XC8
*
* PIC12F1822
* +--+ +--+
* VCC |1 ~ 8| GND
* |2 7| SDO
* |3 6| SCK
* SS |4 5| SDI
* +-------+
*/
#include <pic.h>
#pragma config FOSC=INTOSC,PLLEN=ON,BOREN=ON,BORV=HI,WDTE=OFF,MCLRE=OFF,LVP=OFF
//
// 45DB011D Definitions.
//
#define STATUS_REGISTER 0xD7
#define STATUS_WORD 0x8C
#define SECURITY_REGISTER 0x77
//
const unsigned char SECURITY_RESPONSE[128] =
{
0x80, 0x2D, 0x22, 0x6F, 0x52, 0x6F, 0x98, 0xA9, 0x21, 0x25, 0x5E, 0x2D, 0x2D, 0x31, 0xD2, 0x39,
0x18, 0x1C, 0x63, 0x0C, 0x31, 0x21, 0x2D, 0x39, 0x90, 0xDE, 0x94, 0x6F, 0x6B, 0x77, 0x73, 0x7F,
0x63, 0x8C, 0x88, 0x84, 0x80, 0x9C, 0x98, 0x94, 0x90, 0xAD, 0xA9, 0xA5, 0xA1, 0xBD, 0xB9, 0xB5,
0xB1, 0xCA, 0xCE, 0xC2, 0xC6, 0xDA, 0xDE, 0xD2, 0xD6, 0xEB, 0xEF, 0xE3, 0xE7, 0xFB, 0xFF, 0xF3,
0x0B, 0x02, 0x16, 0x17, 0x11, 0x15, 0x1F, 0x22, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0xAC, 0xFF,
0x30, 0x30, 0x4D, 0x32, 0x36, 0x39, 0x37, 0x31, 0x0F, 0x1C, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
void main()
{
unsigned char i;
unsigned char cmd, tmp;
OSCCON = 0b11110000; // set a system clock 8MHz x4PLL = 32MHz
ANSELA = 0; // all digital I/O
TRISA = 0b11111110; // SDO pin set to output
SSP1STAT = 0b00000000; // initialize MSSP module
SSP1CON1 = 0b00110100;
SSP1BUF = 0;
while(1){
reset:
while(!BF); // wait a command
if(RA3) goto reset;
cmd = SSP1BUF;
switch( cmd ){
case STATUS_REGISTER:
SSP1BUF = STATUS_WORD; // response word
SSP1IF = 0;
while(!BF); // wait a sending
if(RA3) goto reset;
tmp = SSP1BUF;
SSP1IF = 0;
break;
case SECURITY_REGISTER:
for(i = 0; i < 3; i++){ // put a dummy word
SSP1BUF = 0;
SSP1IF = 0;
while(!BF);
if(RA3) goto reset;
tmp = SSP1BUF;
}
for(i = 0; i < 128; i++){ // put a security response
SSP1BUF = SECURITY_RESPONSE[i];
SSP1IF = 0;
while(!BF);
if(RA3) goto reset;
tmp = SSP1BUF;
}
SSP1IF = 0;
break;
default:
break;
}
}
}