Other Parts Discussed in Thread: LM358, LM2904
hello.
Until now, we have been selling products using the 2407A.
Recently, it has been confirmed that the ADC operates abnormally at certain values.
I checked the CPU I purchased several years ago, but the same phenomenon appeared, with only a difference in degree.
Until now, it seems that it has gone unnoticed due to abnormalities in areas where it is not commonly used.
The phenomenon occurs when you gradually increase the voltage at the ADC input pin and observe the AD value, and it is read as shown in the photo below. (In the photo, 0 is the value of RESULT0 and 15 is the value of RESULT15.)
The value is fixed for a certain period at 256.
All values between 245 and 256 appear to be read as 256.
If you measure the voltage of the CPU ADC input, it is linear and normal.
The program used for observation is as follows.
if(AD_StartOk == 1)
{
temp = ADCTRL2 & 0x0200; // check the INT flag SEQ1
while (temp==0)
{
temp = ADCTRL2 & 0x0200; // check the INT flag SEQ1
}
SET(ADCTRL2,BIT9); // This INT FALG bit must be cleared by the user writing a 1 to it
AD_all_sum_result_value = 0;
AD_all_sum_result_value = ((RESULT0>>6)&0x3FF);
TEST[0] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT1>>6)&0x3FF);
TEST[1] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT2>>6)&0x3FF);
TEST[2] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT3>>6)&0x3FF);
TEST[3] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT4>>6)&0x3FF);
TEST[4] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT5>>6)&0x3FF);
TEST[5] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT6>>6)&0x3FF);
TEST[6] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT7>>6)&0x3FF);
TEST[7] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT8>>6)&0x3FF);
TEST[8] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT9>>6)&0x3FF);
TEST[9] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT10>>6)&0x3FF);
TEST[10] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT11>>6)&0x3FF);
TEST[11] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT12>>6)&0x3FF);
TEST[12] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT13>>6)&0x3FF);
TEST[13] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT14>>6)&0x3FF);
TEST[14] = AD_all_sum_result_value;
AD_all_sum_result_value = ((RESULT15>>6)&0x3FF);
TEST[15] = AD_all_sum_result_value;
Is there anything I can check?