diff options
author | Attila Veghelyi <works@veghelyiattila.hu> | 2024-06-25 20:25:31 +0200 |
---|---|---|
committer | Attila Veghelyi <works@veghelyiattila.hu> | 2024-06-25 20:25:31 +0200 |
commit | 5f686d5179d6a23a37378550b8c1122453d240c1 (patch) | |
tree | 423d6dbd1fa19a6487abb67c8da1c102ea9748b5 /progP16.c | |
parent | 2ec9ceca347f2052a0884e115a5198e5ea716262 (diff) | |
download | OpenProgrammer-hotfix/fix-original.tar.gz OpenProgrammer-hotfix/fix-original.zip |
Stop the process when device ID is unknownhotfix/fix-original
Diffstat (limited to 'progP16.c')
-rw-r--r-- | progP16.c | 44 |
1 files changed, 22 insertions, 22 deletions
@@ -419,7 +419,7 @@ struct ID16{ {0x3106,"16F17176\r\n",0}, }; -void PIC16_ID(int id) +static bool PIC16_ID(int id) { char s[64]; int i; @@ -427,16 +427,16 @@ void PIC16_ID(int id) if(PIC16LIST[i].revmask&&(id>>5)==PIC16LIST[i].id){ //id + rev in same location sprintf(s,PIC16LIST[i].device,id&PIC16LIST[i].revmask); PrintMessage(s); - return; + return true; } else if(!PIC16LIST[i].revmask&&id==PIC16LIST[i].id){ //id separate from rev sprintf(s,PIC16LIST[i].device); PrintMessage(s); - return; + return true; } } - sprintf(s,"%s",strings[S_nodev]); //"Unknown device\r\n"); - PrintMessage(s); + PrintMessage(strings[S_nodev]); //"Unknown device\r\n"); + return false; } void DisplayCODE16F(int size){ @@ -716,7 +716,7 @@ void Read16Fxxx(int dim,int dim2,int dim3,int vdd) } PrintMessage1(strings[S_DevID],memCODE_W[0x2006]); //"DevID: 0x%04X\r\n" if(memCODE_W[0x2005]<0x3FFF) PrintMessage1(strings[S_DevREV],memCODE_W[0x2005]); //"DevREV: 0x%04X\r\n" - PIC16_ID(memCODE_W[0x2006]); + if (!PIC16_ID(memCODE_W[0x2006])) return; PrintMessage1(strings[S_ConfigWord],memCODE_W[0x2007]); //"Configuration word: 0x%04X\r\n" if(dim3>8){ PrintMessage1(strings[S_Config2Cal1],memCODE_W[0x2008]); //"Config2 or Cal1: 0x%04X\r\n" @@ -1048,7 +1048,7 @@ void Read16F1xxx(int dim,int dim2,int dim3,int options) } PrintMessage1(strings[S_DevID],memCODE_W[0x8006]); //"DevID: 0x%04X\r\n" if(memCODE_W[0x8005]<0x3FFF) PrintMessage1(strings[S_DevREV],memCODE_W[0x8005]); //"DevREV: 0x%04X\r\n" - PIC16_ID(memCODE_W[0x8006]); + if (!PIC16_ID(memCODE_W[0x8006])) return; PrintMessage2(strings[S_ConfigWordX],1,memCODE_W[0x8007]); //"Configuration word %d: 0x%04X\r\n" PrintMessage2(strings[S_ConfigWordX],2,memCODE_W[0x8008]); //"Configuration word %d: 0x%04X\r\n" if((options&0xC)==0&&F18x==0){ //2 config + 2/3 calib words @@ -1404,7 +1404,7 @@ void Read16F18xxx(int dim,int dim2,int dim3,int options) } PrintMessage1(strings[S_DevID],memCODE_W[0x8006]); //"DevID: 0x%04X\r\n" if(memCODE_W[0x8005]<0x3FFF) PrintMessage1(strings[S_DevREV],memCODE_W[0x8005]); //"DevREV: 0x%04X\r\n" - PIC16_ID(memCODE_W[0x8006]); + if (!PIC16_ID(memCODE_W[0x8006])) return; for(i=0;i<5;i++){ PrintMessage2(strings[S_ConfigWordX],i+1,memCODE_W[0x8007+i]); //"Configuration word %d: 0x%04X\r\n" } @@ -1538,7 +1538,7 @@ void Write12F6xx(int dim,int dim2) for(z=0;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; for(z+=3;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); calib1=(bufferI[z+1]<<8)+bufferI[z+2]; if(calib1<0x3fff){ @@ -1930,7 +1930,7 @@ void Write16F8x (int dim,int dim2) for(z=0;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; for(z+=3;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); config=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_ConfigWord],config); //"Config word: 0x%04X\r\n" @@ -2294,7 +2294,7 @@ void Write16F62x (int dim,int dim2) for(z=0;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; for(z+=3;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); config=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_ConfigWord],config); //"Config word: 0x%04X\r\n" @@ -2629,7 +2629,7 @@ void Write12F62x(int dim,int dim2) for(z+=3;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); config=(bufferI[z+1]<<8)+bufferI[z+1]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; //****************** erase memory ******************** PrintMessage(strings[S_StartErase]); //"Erase ... " j=0; @@ -2940,7 +2940,7 @@ void Write16F87x (int dim,int dim2) for(z=0;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; for(z+=3;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); config=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_ConfigWord],config); //"Config word: 0x%04X\r\n" @@ -3324,7 +3324,7 @@ void Write16F87xA (int dim,int dim2,int seq) for(z=0;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; for(z+=3;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); config=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_ConfigWord],config); //"Config word: 0x%04X\r\n" @@ -3666,7 +3666,7 @@ void Write16F81x (int dim,int dim2) for(z=0;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; for(z+=3;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); config=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_ConfigWord],config); //"Config word: 0x%04X\r\n" @@ -4037,7 +4037,7 @@ void Write12F61x(int dim, int d, int d2) devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" if(devREV<0x3FFF) PrintMessage1(strings[S_DevREV],devREV); //"DevREV: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; for(z+=3;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); calib1=(bufferI[z+1]<<8)+bufferI[z+2]; for(z+=3;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); @@ -4321,7 +4321,7 @@ void Write16F88x(int dim,int dim2) for(z=0;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; for(z+=3;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); calib1=(bufferI[z+1]<<8)+bufferI[z+2]; if(calib1<0x3fff){ @@ -4672,7 +4672,7 @@ void Write16F7x(int dim,int vdd) for(z=0;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; //****************** erase memory ******************** PrintMessage(strings[S_StartErase]); //"Erase ... " j=0; @@ -4936,7 +4936,7 @@ void Write16F71x(int dim,int vdd) for(z=0;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; //****************** erase memory ******************** PrintMessage(strings[S_StartErase]); //"Erase ... " j=0; @@ -5203,7 +5203,7 @@ void Write16F72x(int dim, int d, int d2) for(z=0;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; //****************** erase memory ******************** PrintMessage(strings[S_StartErase]); //"Erase ... " j=0; @@ -5526,7 +5526,7 @@ void Write16F1xxx(int dim,int dim2,int options) devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" if(devREV<0x3FFF) PrintMessage1(strings[S_DevREV],devREV); //"DevREV: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; if(memCODE_W[0x8006]<0x3FFF&&devID!=memCODE_W[0x8006]) PrintMessage(strings[S_DevMismatch]); //"Warning: the device is different from what specified in source data" if(!F18x){ //16F1xxx for(z+=3;z<DIMBUF-2&&bufferI[z]!=READ_DATA_PROG;z++); @@ -6153,7 +6153,7 @@ void Write16F18xxx(int dim,int dim2,int options) devID=(bufferI[z+1]<<8)+bufferI[z+2]; PrintMessage1(strings[S_DevID],devID); //"DevID: 0x%04X\r\n" if(devREV<0x3FFF) PrintMessage1(strings[S_DevREV],devREV); //"DevREV: 0x%04X\r\n" - PIC16_ID(devID); + if (!PIC16_ID(devID)) return; if(memCODE_W[0x8006]<0x3FFF&&devID!=memCODE_W[0x8006]) PrintMessage(strings[S_DevMismatch]); //"Warning: the device is different from what specified in source data" //****************** DIA-DCI ******************** if(useDCI){ //if not disabled |