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 /progAVR.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 'progAVR.c')
-rw-r--r-- | progAVR.c | 22 |
1 files changed, 13 insertions, 9 deletions
@@ -81,13 +81,13 @@ struct AVRID{ {0x9706,"ATmega1284"}, }; -void AtmelID(BYTE id[]) +static bool AtmelID(BYTE id[]) { char str[128]=""; int i,idw=(id[1]<<8)+id[2]; if(id[0]==0&&id[1]==1&&id[2]==2){ PrintMessage(strings[S_Protected]); //"Device protected" - return; + return false; } if(id[0]==0x1E) strcat(str,"Atmel "); for(i=0;i<sizeof(AVRLIST)/sizeof(AVRLIST[0]);i++){ @@ -122,9 +122,13 @@ void AtmelID(BYTE id[]) strcat(str," 128KB Flash"); break; } - if(i!=1001) strcat(str,strings[S_nodev]); //"Unknown device\r\n"); - else strcat(str,"\r\n"); + if(i!=1001) { + PrintMessage(strings[S_nodev]); //"Unknown device\r\n"); + return false; + } + strcat(str,"\r\n"); PrintMessage(str); + return true; } void DisplayCODEAVR(int dim){ @@ -582,7 +586,7 @@ void ReadAT(int dim, int dim2, int options) for(z+=3;z<DIMBUF-2&&bufferI[z]!=SPI_READ;z++); signature[2]=bufferI[z+2]; PrintMessage3("CHIP ID:%02X%02X%02X\r\n",signature[0],signature[1],signature[2]); - AtmelID(signature); + if (!AtmelID(signature)) return; if(options&LOCK){ //LOCK byte for(z+=3;z<DIMBUF-2&&bufferI[z]!=SPI_READ;z++); PrintMessage1("LOCK bits:\t 0x%02X\r\n",bufferI[z+2]); @@ -908,7 +912,7 @@ void ReadAT_HV(int dim, int dim2, int options) for(z+=2;z<DIMBUF-1&&bufferI[z]!=AT_HV_RTX;z++); signature[2]=bufferI[z+1]; PrintMessage3("CHIP ID:%02X%02X%02X\r\n",signature[0],signature[1],signature[2]); - AtmelID(signature); + if (!AtmelID(signature)) return; if(options&LOCK){ //LOCK byte for(z+=2;z<DIMBUF-1&&bufferI[z]!=AT_HV_RTX;z++); PrintMessage1("LOCK byte:\t 0x%02X\r\n",bufferI[z+1]); @@ -1258,7 +1262,7 @@ void WriteAT(int dim, int dim2, int dummy1, int dummy2) for(z+=3;z<DIMBUF-2&&bufferI[z]!=SPI_READ;z++); signature[2]=bufferI[z+2]; PrintMessage3("CHIP ID:%02X%02X%02X\r\n",signature[0],signature[1],signature[2]); - AtmelID(signature); + if (!AtmelID(signature)) return; //****************** erase memory ******************** PrintMessage(strings[S_StartErase]); //"Erase ... " if(saveLog) fprintf(logfile,"%s\n",strings[S_StartErase]); @@ -1492,7 +1496,7 @@ void WriteATmega(int dim, int dim2, int page, int options) for(z+=3;z<DIMBUF-2&&bufferI[z]!=SPI_READ;z++); signature[2]=bufferI[z+2]; PrintMessage3("CHIP ID:%02X%02X%02X\r\n",signature[0],signature[1],signature[2]); - AtmelID(signature); + if (!AtmelID(signature)) return; //****************** erase memory ******************** PrintMessage(strings[S_StartErase]); //"Erase ... " if(saveLog) fprintf(logfile,"%s\n",strings[S_StartErase]); @@ -1896,7 +1900,7 @@ void WriteAT_HV(int dim, int dim2, int page, int options) for(z+=2;z<DIMBUF-1&&bufferI[z]!=AT_HV_RTX;z++); signature[2]=bufferI[z+1]; PrintMessage3("CHIP ID:%02X%02X%02X\r\n",signature[0],signature[1],signature[2]); - AtmelID(signature); + if (!AtmelID(signature)) return; //****************** erase memory ******************** if(saveLog)fprintf(logfile,"CHIP ERASE\n"); j=0; |