| View previous topic :: View next topic   | 
	
	
	
		| Author | 
		Message | 
	
	
		
			yossihagag1978
 
 
  Joined: 04 Apr 2013 Posts: 20
  
			
			 
			 
			
			
			
			
			
			
			
  
		  | 
		
			
				| checksum calculation as shown in mplabx | 
			 
			
				 Posted: Sun Dec 08, 2024 8:17 am     | 
				     | 
			 
			
				
  | 
			 
			
				Hi
 
I am trying to calculate the checksum as shown in mplabx with 2 diffrenet pic's
 
One 18lf46k22 ant the other is  16lf1789. I am using Pcm compiler v5.008
 
With 18lf46k22 I succeeded (I attached the code below).
 
With 16lf1789 I did not success and don’t know why !!!!
 
 
Pic 18lf46k22 checksum ad shown in mplabx calculation Working :
 
int16 calc_pic_18_ checksum ()
 
{
 
int16, temp, Checksum;
 
int32, address;
 
	For (address=0 ; address <getenv("Program_memory"); address+=2 )
 
	{	temp= read_program_eeprom(address);
 
		Checksum += (int8) temp ; 
 
Checksum += (int8) (temp>>8) ;
 
	}
 
	For (address=0x300000 ; address <0x30000D; address+=2 )
 
	{	temp= read_program_eeprom(address);
 
		Checksum += (int8) temp ; 
 
Checksum += (int8) (temp>>8) ;
 
	}
 
return (Checksum);
 
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Pic 16lf1789 checksum ad shown in mplabx calculation Not Working :
 
Using Pcm compiler v5.008
 
int16 calc_pic_16_ checksum ()
 
{
 
int16, temp, Checksum, temp1, temp2;
 
int32, address;
 
	For (address=0 ; address <getenv("Program_memory"); address++ )
 
	{	
 
read_program_memory (address,&temp,2);
 
		Checksum += temp ; 
 
	}
 
read_program_memory (0x8007,&temp1,2);
 
read_program_memory (0x8008,&temp2,2);
 
Checksum += temp1 ; 
 
Checksum += temp2 ; 
 
return (Checksum);
 
} | 
			 
		  | 
	
	
		  | 
	
	
		
			Ttelmah
 
 
  Joined: 11 Mar 2010 Posts: 19967
  
			
			 
			 
			
			
			
			
			
			
			
  
		  | 
		
			
				 | 
			 
			
				 Posted: Sun Dec 08, 2024 9:08 am     | 
				     | 
			 
			
				
  | 
			 
			
				Why are you not calculating it the same way??????
 
The PIC16 has 14bit data. I assume you have to do the same as for
 
the PIC18, and sum the LSB then the MSB, not perform a 16bit addition. | 
			 
		  | 
	
	
		  | 
	
	
		
			temtronic
 
 
  Joined: 01 Jul 2010 Posts: 9589 Location: Greensville,Ontario 
			
			 
			 
			
			
			
			
			
			
			
  
		  | 
		
			
				 | 
			 
			
				 Posted: Sun Dec 08, 2024 4:26 pm     | 
				     | 
			 
			
				
  | 
			 
			
				I wondered about the calculations but at +3*C here, decided to remove the sheet of ice in the driveway......
 
 
It'd also be interesting to see WHAT the checksum values are !
 
Seeing those might show what's wrong... | 
			 
		  | 
	
	
		  | 
	
	
		
			Ttelmah
 
 
  Joined: 11 Mar 2010 Posts: 19967
  
			
			 
			 
			
			
			
			
			
			
			
  
		  | 
		
			
				 | 
			 
			
				 Posted: Mon Dec 09, 2024 10:51 am     | 
				     | 
			 
			
				
  | 
			 
			
				The MPLAB description says it is a sum of the bytes. Not a sum of the words,
 
which is what is being done on the PIC16 version...... | 
			 
		  | 
	
	
		  | 
	
	
		 |