Страница 1 из 1

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

Добавлено: Ср мар 28, 2012 10:38:36
Nixxi
Схема представляет из себя двухканальный термоконтроллер на базе aurdiuno(mega2560), пары ds18b20, LCD, зуммера итп.

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

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

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

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

ЗЫ. Есть ли какой-то профайлер для определения того, сколько какие вызовы занимают времени-тактов ?
Речь не об установки кучи принтов с текущем временем, а именно об нормальном IDE, который
бы считал это самостоятельно и представлял в удобном виде.

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

Добавлено: Ср мар 28, 2012 10:48:43
Engineer_Keen
Nixxi писал(а): Через таймер ? Но что будет, когда таймер сработает в одно время с приходом информации с термо-датчиков ?
Температура будет измерена некорректно ?
Стремно как-то выглядит...
А если во время пищания пищалки ?
На время опроса датчика прерывание можно отключить.
Nixxi писал(а): Особенно учитывая, что хочется с разрешением 0.01с управлять, и при этом иногда в обработчике будут ноги дергаться,
что как я понимаю занимает немало времени.
Чтобы дернуть ногу нужна всего пара тактов, это 250нс при 8МГц тактовой.

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

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

И, собственно, нафига тогда всё городить, если любой опрос датчика будет приводить к тому,
что регулирование будет нарушено :( ?

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

Добавлено: Ср мар 28, 2012 11:16:15
urry
Перепишите общение с датчиком на другой такт самостоятельно - 1 мс вполне достаточно и для сброса - и прочитать - выдать байт.