У меня простой вопрос, моя программа перехвачена при ошибке ISR,
Ниже приведен мой код, перехваченный при ошибке ISR
int writeProgMemoryBlock(const unsigned char *data, uint16_t dataSize, uint8_t bank, uint8_t address, int verify) {
//return writeMemoryBlock(data, dataSize, bank, address, verify, 1);
setMemoryBank(bank,0,0);
setMemoryStartAddress(address);
uint8_t chunkSize;
uint8_t *verifyBuffer;
uint8_t *progBuffer;
uint16_t i;
uint8_t j;
if (verify) verifyBuffer = (uint8_t *)malloc(MPU6050_DMP_MEMORY_CHUNK_SIZE);
if (1) progBuffer = (uint8_t *)malloc(MPU6050_DMP_MEMORY_CHUNK_SIZE);
for (i = 0; i < dataSize;) {
// determine correct chunk size according to bank position and data size
chunkSize = MPU6050_DMP_MEMORY_CHUNK_SIZE;
// make sure we don't go past the data size
if (i + chunkSize > dataSize)
chunkSize = dataSize - i;
// make sure this chunk doesn't go past the bank boundary (256 bytes)
if (chunkSize > 256 - address)
chunkSize = 256 - address;
if (1) {
// write the chunk of data as specified
for (j = 0; j < chunkSize; j++) progBuffer[j] = pgm_read_byte(data + i + j);
} else {
// write the chunk of data as specified
progBuffer = (uint8_t *)data + i;
}
for (i = 0; 0 < chunkSize; i++){
writeByte(devAddr, MPU6050_RA_MEM_R_W, progBuffer[i]);
}
// verify data if needed
if (verify && verifyBuffer) {
setMemoryBank(bank,0,0);
setMemoryStartAddress(address);
readBytes(devAddr, MPU6050_RA_MEM_R_W, chunkSize, verifyBuffer);
if (memcmp(progBuffer, verifyBuffer, chunkSize) != 0) {
free(verifyBuffer);
if (1) free(progBuffer);
return false; // uh oh.
}
}
// increase byte index by [chunkSize]
i += chunkSize;
// uint8_t automatically wraps to 0 at 256
address += chunkSize;
// if we aren't done, update bank (if necessary) and address
if (i < dataSize) {
if (address == 0) bank++;
setMemoryBank(bank,0,0);
setMemoryStartAddress(address);
}
}
if (verify) free(verifyBuffer);
if (1) free(progBuffer);
return true;
}
Когда я пытаюсь выполнить отладку, чтобы перейти вэта функция переходит в функцию FaultISR.
Как выяснить причину и решение проблемы?
Я использую code composer studio с TM4C123.Я пытаюсь прочитать кватернионные значения из MPU6050.Я закончил свой код, но не смог завершить свой проект.
Это мое видео отладки
Заранее спасибо