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.

[参考译文] MSP430FG4618:在外部 EEPROM 中写入和读取 ADC12值

Guru**** 2031750 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/566056/msp430fg4618-write-and-read-adc12-value-in-external-eeprom

器件型号:MSP430FG4618

您好!

我很难通过 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"]存储后读取的值不同,它们不匹配。

    请提供已写入和已读数据的准确示例。 可能有线索。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我设法弄清楚了... 这只是我忘了做的一个细节。