Правильное управление памятью внутри и вне процедуры ISR для нескольких исходных файлов

Я извлекаю изменчивый указатель, но кажется, что моя программа падает при обращении к нему в памяти.
Я ищу лучшие практики и, возможно, решение, что я могу сделать, чтобы это работало.

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
);

}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]