This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Getting illegal_isr When Executing the F28069 Adc_Tempsensorconv example program

Hi,

i am using F28069PZA Experimental kit, When i am executing the Adc_Tempsensorconversion example program i am getting ILLEGAL_ISR. After debugging this program it is saying this ILLEGAL_ISR.

In this program the equation for calculating the degc is degC = GetTemperatureC(temp); like this

int16 GetTemperatureC(int16 sensorSample)
{
    return ((sensorSample - getTempOffset())*(int32)getTempSlope() + FP_ROUND + KELVIN_OFF)/FP_SCALE - KELVIN;
}

#define getTempOffset() (*(int (*)(void))0x3D7E85)()

#define getTempSlope() (*(int (*)(void))0x3D7E82)() 

what doe these two address locations stands for in OTP and how much the value in those Function address.

Thanks & Regards

Vinay

  • Is your device TMX or TMS?

  • I am Using TMS Device.

  • Vinay-  Let's make sure the trim functions are stored, can you perform a memory dump of locations 0x3D7E82:87?  It should be something like this:

    0x3D7E82   0x28A9

    0x3D7E83   0xTRIM

    0x3D7E84   0x0006

    0x3D7E85   0x28A9

    0x3D7E86   0xTRIM

    0x3D7E87   0x0006

    Where the 0xTRIM values will vary from device to device.

    Also since you are inquiring about the temp sensor, I'd like to take a moment to point out that TI only provides typical slope and offset in the datasheet and does not guarantee temperature accuracy even on TMS material.  While a general temp reading can be obtained using the provided functions, the main purpose of the temp sensor is used to compensate the internal oscillators over temperature.  I only point it out because some customers have had unrealistic expectations about the accuracy only to find out late in system development it doesn't meet their requirements.

    Regards, Joe

  • Thank you Joe, for your immediate response.

    Here you mentioned the same value for the both Offset and Slope,

    while substituting those values in the Equation ,

    int16 GetTemperatureC(int16 sensorSample)
    {
        return ((sensorSample - getTempOffset())*(int32)getTempSlope() + FP_ROUND + KELVIN_OFF)/FP_SCALE - KELVIN;
    }

    int16 GetTemperatureK(int16 sensorSample)
    {
        return ((sensorSample - getTempOffset())*(int32)getTempSlope() + FP_ROUND + KELVIN_OFF)/FP_SCALE;
    }

    i am getting approximately same values for Centigrade and Kelvin respectively,  So what is the solution for this.

    Regards , Vinay

  • Vinay,

    Can you provide the memory dump requested by Joe?  

    The values for offset and slope should not be the same.  

    Can you provide the exact numerical values you are getting for degrees C and degrees K? From the above code, it would be difficult for the program to produce a value for deg K that is anything other than deg C + 273.  Maybe "KELVIN" is undefined?

  • Devin,

    i am getting temperature value as 0x06F5 after memory dump from AdcResult.ADCRESULT0 Register.

    But in the OTP Registers like 0x3D7E82 and 0x3D7E85 i am getting the values as FFFF for the both ,

    If the Values of the above registers are not stored when the Factory test time then which values have to substitute in those memory locations.

    Regards , Vinay

  • Vinay

    This seems to indicate that the test program did not program these registers. Can you provide the full device markings?  

    TMX devices may not have these values in OTP, but all TMS devices should have them.  If this is indeed TMS silicon, then we would probably like to have this part returned to TI for failure analysis. 

    I can't give you a specific value to use because these should be uniquely generated for each device to account for process variation.

  • Devin,

    i am using TMS320C200 Experimenter's Kit USB Docking Station With F28069 Piccolo Family Device.

    As i told you earlier i am getting 0xFFFF values at 0x3D7E82 and 0x3D7E85 OTP Locations.

    Regards ,

    Vinay

  • Vinay= Devin is asking for the device symbolization (markings) on the top of the F28069 device itself.  This can provide some clues to when the device was manufactured.  Please include all lettering you can read.  If it is easier, you can simply post a photo of the F28069 device.

    Regards, Joe

  • Hello,

    I've tried to run the adc_temp_sensor_conv example porogramm  from control suite on my F28069 Piccolo stick.

    It was mentioned that all TMS controllers have the pre programmed registers (0x3D7E90 to 0x3D7EA4). But there are also just 0xFFFF in them.

      #define getTempSlope() (*(int (*)(void))0x3D7E82)()
    //ADC code corresponding to temperature sensor output at 0 deg. C
      #define getTempOffset() (*(int (*)(void))0x3D7E85)()

    The programm gets stopped here and gets stucked in

    __interrupt void ILLEGAL_ISR(void)   // Illegal operation TRAP
    {
      // Insert ISR Code here

      // Next two lines for debug only to halt the processor here
      // Remove after inserting ISR Code
     __asm("          ESTOP0");
      for(;;);

    }

    If you have any solutions (probably I did anything wrong) than please let me know.

    Best regards,

    Andreas

  • Andreas,

       If your device is TMX, it is entirely possible, and in fact likely, to be missing this data.  This can been seen from the symbolization on the top of the device itself.  If your device is TMS, it should indeed have data at these locations (i.e. not 0xFFFF) and in this case should be returned for replacement.

       If you purchased the control card through the eSTORE, you can contact customer support to get a replacement (https://estore.ti.com/faq.aspx#q5.1).  If you received it from a sales rep, FAE, or university program, you'll need to contact them.

       If it is in fact TMS, I would really appreciate the full device symbolization from the top of the device so I can follow up with the manufacturing team.

    Thanks & Regards, Joe