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.
您好!
我很难通过 I2C 将 ADC12 ADResult 值存储在外部 EEPROM 存储器中。
存储后读取的值不同、不匹配。
有关如何执行该操作的任何提示?
#pragma vector=ADC12_vector
_interrupt void ADC12ISR (void)
{
ADCresult = ADC12MEM0;
ADCresult1 = ADC12MEM1;
_NO_OPERATION ();// Não FAZ nada
_BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);//退出 LPM3
}
P2OUT &=~ BIT0;// Habitabila o circuito de Alimentação Do Sensor de Pressão
P6SEL = 0x0F;//选择一个 AD0 como entada A/D
ADC12CTL0 = SHT0_15 + REF2_5V + REFON + ADC12ON;//采样保持时间、1024个周期、参考电压2、5V (ON)、ADC12打开
ADC12CTL1 = SHP + ADC12DIV_7;//采样计时器、交易所:ADC12SC、分频 POR 8
ADC12MCTL0 = SREF_1;// Canal 10、Vref+
ADC12IE = 0x01;//启用中断
ADC12CTL0 |= ENC;
ADC12CTL0 |= ADC12SC;//开始转换
// while (!(ADC12IFG & 0x0001));//转换完成?
for (unsigned long int i = 0;i < 5000;i++);//循环参数 Temporização
valor_cana_pressao1 =((long) ADCresult -零);//转换 a pressao com Resolução 12位长整型
P2OUT |= BIT0;//去电路去 Alimentação DO 传感器去 Pressão
ADC12CTL0 = 0;//反向转换 ADC12
ADC12CTL0 = 1;
ADC12CTL1 = 0;
ADC12CTL1 = 1;
ADC12CTL0 &=~ ENC;//不稳定性 A Interrupção DO 转换器 ADC12
写入外部 EEPROM
MS_Byte = valor_cana_pressao1;// Armezena OS 位 MSB mais significativos do valor do cCanal de pressao long int
LS_Byte = valor_cana_pressao1>>8;// Armazena OS Bits LSB menos significativos do valor do cCanal de pressao long int
Coletando_Dados ++;// próximo Endereço 参数 escrua 0x0006
EEPROM_ByteWrite (Coletando_Dados、MS_Byte);// Escreve na EEPROM o Byte com o valor do MSB do ADC12
EEPROM_AckPolling();// Verifica se completou o ciclo de escrica na EEPROM
Coletando_Dados ++;// próximo Endereço 参数 escrua 0x0007
EEPROM_ByteWrite (Coletando_Dados、LS_Byte);// Escreve na EEPROM o Byte com o valor do LSB do ADC12
EEPROM_AckPolling();// Verifica se completou o ciclo de escrica na EEPROM
读取外部 EEPROM
valor_cana_pressao1 = EEPROM_RandomRead (Lendo_Dados);// Efetua a Leitura na EEPROM do Byte com o valor do ADC12
Lendo_Dados ++;// próximo Endereço para Leitura 0x0007
valor_cana_pressao1 |=(unsigned int) EEPROM_RandomRead (Lendo_Dados)<<8);
pressao_manometrica1 =((long) valor_cannel_pressao1 * 264.00)/4095;//将 A pressão Resolução 12位 ponto float
[引用 user="Anderson Portela"]存储后读取的值不同,它们不匹配。
请提供已写入和已读数据的准确示例。 可能有线索。