Я извлекаю изменчивый указатель, но кажется, что моя программа падает при обращении к нему в памяти.
Я ищу лучшие практики и, возможно, решение, что я могу сделать, чтобы это работало.
main.cpp:
rc_MCP9804 mcp1(0x18);
volatile rc_temperature_sensor *rc_temp1 = &mcp1;
Serial.print(rc_peltier_state.current_temp1_c)
main.h:
extern volatile rc_temperature_sensor *rc_temp1;
other.cpp:
void updatePeltierControl(){
rc_peltier_state.current_temp1_c = rc_temp1->getTemperature();
}
Если я закомментирую подпрограмму ISR и просто запросю rc_temp1-> getTempera () в моем основном цикле, она будет работать нормально. Я думаю, что есть некоторые проблемы управления памятью между ними. Весь мой оригинальный код компилируется.
Процедура ISR с большей спецификой заключается в следующем:
void initPeltier(uint8_t timing_slot_num, uint16_t update_freq_ms) {
// Attach ISR callback
attachRcTimingFunc(
timing_slot_num,
&updatePeltierControl,
update_freq_ms,
1 // Persistent
);
}
Задача ещё не решена.
Других решений пока нет …