ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
14 июля
513180
Точка опоры (05.05.2014 20:29, просмотров: 1630)
Немного о volatile. Является-ли указание read_ptr как volatile однозначным указанием для компилятора (GCC), что он обязан вычислять buffer_gap? А то пока не указал и buffer_gap как volatile, то был удивлен не то что симулятором, а даже результатом. void end_dump() { // Дождаться окончания передачи... #ifndef GPIOR0 extern volatile uint8_t Flags0; #endif extern volatile uint16_t read_ptr, buffer_gap; extern uint16_t write_ptr; while (Flags0 & _BV(do_dump)) { cli(); buffer_gap = write_ptr - read_ptr; if ((int16_t)buffer_gap < 0) // buffer_gap около нуля - буфер исчерпывается, buffer_gap += data_size;// ... около data_size - заполнен sei(); wdt_reset(); } }
Заказать импортные ЭК - https://shop.fulcrum.ru/buy