16+
Среда
23 октября
Вход |Карта сайта |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Микроконтроллеры PIC

 
Новая темаПравила РегистрацияСтатистика Архив
Вернуться в конференциюТопик полностью
rual  (11.03.2019 19:52, просмотров: 1818)
PIC32MX + XC32 + MCC I2C: не понятно, почему компиллер оптимизирует и проскакивает функцию static bool i2c_transaction_complite(void), код внутри. Состояние переменной меняется в прерывании на I2C2_MESSAGE_COMPLETE. При постановке в очередь 
сообщения status = I2C2_MESSAGE_PENDING, отладчик это показывает, соответственно i2c_transaction_complite() = false, что должно зацикливать ожидание до status != I2C2_MESSAGE_PENDING, но хрен там!!! Пролетает, при этом BP не ставиться, т.е. while (!i2c_transaction_complite()); компиллер проигнорил...
static I2C2_MESSAGE_STATUS status = I2C2_MESSAGE_COMPLETE;
static I2C2_TRANSACTION_REQUEST_BLOCK  trBlock[2]; 
static uint8_t buff[2];

static bool i2c_transaction_complite(void)
{
     if (status != I2C2_MESSAGE_PENDING) return true;
     else false;
}


I2C2_MESSAGE_STATUS readRegisterRegion(uint8_t *outputPointer , uint8_t offset, uint8_t length)
{
    uint32_t timeout;
    
    buff[0] = offset;
    
    I2C2_MasterWriteTRBBuild(&trBlock[0], buff, 1, 0x77);
    I2C2_MasterReadTRBBuild(&trBlock[1], outputPointer, length, 0x77);//settings.I2CAddress
    
    /*while (I2C2_MasterQueueIsEmpty() == false) 
    {
        if (timeout++ > 100000) return status;
    } */
    
    while (!i2c_transaction_complite())
    {
       // if (timeout++ > 100000) break;   
    }    
    
    I2C2_MasterTRBInsert(2, trBlock, &status);
    
    while (!i2c_transaction_complite())
    {
       // if (timeout++ > 100000) break;   
    }        
    
    return status;
}
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7528 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXIX