I2C运行时会超时,调试时不会超时

问题描述 投票:0回答:0

我正在尝试创建通过 I2C 总线与外部 at24c32n eeprom 存储器一起工作的代码。我在我也创建的 i2c 库中创建了这个函数:

uint8_t eeprom_write_data(uint8_t *inputString[16])
{
   uint16_t eeAddr = 0;
   uint8_t err = 0;
   eeAddr = next_unused_addr(); //reads 0xFFF eeprom address to get nr of inputs in eeprom
   if(eeAddr == TWI_ERROR_START || eeAddr == TWI_ERROR_RSTART)
   {
      return eeAddr;
   }
   err = EEPROM_write_handler(eeAddr, inputString, sizeof(inputString)/sizeof(inputString[0])); //writes to eeprom
   if(err == TWI_OK)
   {
      err = increment_eeprom_counter(eeAddr); //increments the number of inputs in eeprom on 0xFFF address
   }
   return err;
}

问题真的出在“increment_eeprom_counter”。具体来说,我可以把我想要的任何功能放在那里(甚至已经像 EEPROM_write_handler 这样使用和测试过)并且 I2C 将在发送开始条件时超时。奇怪的是,当我调试代码并跨过它时,它按预期运行。但是我必须“介入”图书馆的功能才能这样做。如果我跨过 main 它会再次超时。我在这里完全不知所措。有比我更了解的人吗?谢谢

c embedded i2c
© www.soinside.com 2019 - 2024. All rights reserved.