Срабатывание таймеров-прерываний "не вовремя".

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Nixxi
Встал на лапы
Сообщения: 116
Зарегистрирован: Пт окт 14, 2011 14:19:05

Срабатывание таймеров-прерываний "не вовремя".

Сообщение Nixxi »

Схема представляет из себя двухканальный термоконтроллер на базе aurdiuno(mega2560), пары ds18b20, LCD, зуммера итп.

Собственно основная проблема - управление нагревателями. Мне не хочется использовать ШИМ, т.к. есть ощущение, что от ВКЛ-ВЫКЛ-ВКЛ-ВЫКЛ-ВКЛ-ВЫКЛ ему поплохеет. Вместо этого использую следующую логику. Если мощность должна быть 70%, то в течении 0.7с сигнал на ножке есть, а в течении 0.3с его нету. Т.е. одно включение и выключение в секунду.

Собственно тут сразу встает вопрос: а как это нормальным образом организовать ?
Через таймер ? Но что будет, когда таймер сработает в одно время с приходом информации с термо-датчиков ?
Температура будет измерена некорректно ?
Стремно как-то выглядит...
А если во время пищания пищалки ?

Особенно учитывая, что хочется с разрешением 0.01с управлять, и при этом иногда в обработчике будут ноги дергаться,
что как я понимаю занимает немало времени.

Пробовал встраивать в основной loop, используя millis() и считая их.
Оно работает, но как-то дюже странно, похоже, что другие части loop подтормаживают работу этого самодельного ШИМа,
(там, где получаю температуру с датчиков итп) в результате точность плохая и система не очень качественно стабилизируется.

ЗЫ. Есть ли какой-то профайлер для определения того, сколько какие вызовы занимают времени-тактов ?
Речь не об установки кучи принтов с текущем временем, а именно об нормальном IDE, который
бы считал это самостоятельно и представлял в удобном виде.
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Срабатывание таймеров-прерываний "не вовремя".

Сообщение Engineer_Keen »

Nixxi писал(а): Через таймер ? Но что будет, когда таймер сработает в одно время с приходом информации с термо-датчиков ?
Температура будет измерена некорректно ?
Стремно как-то выглядит...
А если во время пищания пищалки ?
На время опроса датчика прерывание можно отключить.
Nixxi писал(а): Особенно учитывая, что хочется с разрешением 0.01с управлять, и при этом иногда в обработчике будут ноги дергаться,
что как я понимаю занимает немало времени.
Чтобы дернуть ногу нужна всего пара тактов, это 250нс при 8МГц тактовой.
Реклама
Nixxi
Встал на лапы
Сообщения: 116
Зарегистрирован: Пт окт 14, 2011 14:19:05

Re: Срабатывание таймеров-прерываний "не вовремя".

Сообщение Nixxi »

Engineer_Keen писал(а): На время опроса датчика прерывание можно отключить.
Сдается мне, что именно там "оно и ждет"(библиотека DallasTemperature).

И, собственно, нафига тогда всё городить, если любой опрос датчика будет приводить к тому,
что регулирование будет нарушено :( ?
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Срабатывание таймеров-прерываний "не вовремя".

Сообщение urry »

Перепишите общение с датчиком на другой такт самостоятельно - 1 мс вполне достаточно и для сброса - и прочитать - выдать байт.
Реклама
Эиком - электронные компоненты и радиодетали
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»