ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
971294 Топик полностью
Nikolay_Po (17.01.2020 20:51, просмотров: 247) ответил SciFi на Пока найден баг в программе. Вернее, найден факт его наличия. Вроде бы gcc что-то умеет в части вычисления использования стека. Но в типичной программе много непредсказуемого. Те же обработчики прерываний - их хвалёный мелкочип учитывает? Им же
Конечно Microchip XC16 учитывает, в том числе и обработчики прерываний. Предположение, что GCC не учитывает глубину стека для прерываний, по мне, такая же дикость. Мой любимый подход для реального времени, но без ОСРВ - делю код на программные прерывания и каждую часть, например, ступени фильтрации с децимацией, вешаю в своём прерывании, со своим приоритетом. XC16 прекрасно отрабатывает. Можно полностью забить ОЗУ, будет отказ в размещении переменной из-за нехватки памяти. На этапе компиляции, а не в работе! Спрашивается, почему глобальная волатильная переменная размещается? GCC в стеке? (не в .bss)? Я бы определил её как статическую, но мне нужен доступ из другого файла. В прошлый раз, по ссылке из заглавного сообщения, объявление static помогло, но только временно, пока не написал ещё кода.