Перейти к содержанию

wdt мешает tmr1


Longer

Рекомендуемые сообщения

Я новичок в программировании пиков, но совсем не новичок в программировании. И я не могу понять как работает watchdog. Сделал код для работы таймера 1. Но через какое-то время таймер 1 перестаёт работать, проверяю в протеусе. Как-то интуитивно решил для интереса выключить wdt, и таймер 1 перестал выключаться. Пока wdt был включен я про него не знал и не обнулял в программе, возможно он постоянно отправлял в hard reset, но по сути как это могло мешать таймеру 1? И почему так долго срабатывал этот wdt? Таймер 1 отключался где-то через пару минут только.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

27 минут назад, IMXO сказал:

а что по этому поводу говорит юзер мануал, или предлагаете  вам его пересказать?

Я читал про wdt и в общих чертах понял его работу. Но почему он как-то влияет на tmr1 мне не понятно. Тем более написано, что максимальное время переполнения wdt 2.3с, у меня tmr1 переставал работать через несколько минут, соответственно не каждое переполнение мешало программе.

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

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

4 часа назад, Longer сказал:

мой вопрос состоял в том почему wdt мешает tmr1

Потому что при нормальной работе программы прерываний от WDT  вообще не должно быть. WatchDog Timer - таймер - "Сторожевая собака". Он используется для того, чтобы контролировать, что программа работает, сбоев не было. Для этого в программе в местах, которые периодически должны выполняться, вставляется команда сброса WDT, а период прерываний от WDT настраивается больше максимального периода его сброса. Если поступило прерывание от WDT - это авария. При этом происходит аппаратный сброс и процессор перезапускается.

Ссылка на комментарий
Поделиться на другие сайты

не жалко , могли бы хотя бы озвучить МК и перевести код . 

такая ситуация возможна при наложении нескольких процессов связанных с неправильной инициализацией МК.

при инициализации не настроены регистры  INTCON и OPTION .   осталось включенным прерывание от  таймер TMR0  с внешним тактированием от TOCKI, и случайным делителем для собаки , таймера0 и значением тмр0.  В ходе инициализации RA4 переводился на выход с состоянием лог0, при этом по собаке происходит тактирование таймера0 , с последующим переполнением тмр0 , входа в вечное прерывание, тк в прерывании отсутствует обработчик по тмр0.

Ссылка на комментарий
Поделиться на другие сайты

Спасибо! Не знал про такие нюансы.
Программирую PIC18F4550.
 

void initTimer()
{
    INTCON = 0b11000000;
    T1CON = 0b00000001;
    TMR1IE = 1;
    TMR1 = 65536 - discrTime;
    timerCounter = 0;
}

void __interrupt() isr(void)
{
    timerCounter++;
    if (TMR1IF)
    {
        if (lamp == 0)
        {
            lamp = 1;
            RD3 = 1;
        }
        else
        {
            lamp = 0;
            RD3 = 0;
        }
        TMR1IF = 0;
        TMR1 = 65536 - discrTime;
        timerCounter = 0;
    }
}

Функцию initTimer вызываю в начале функции main, потом просто бесконечный цикл. Первый таймер включает и выключает лампочку с периодом равным discrTime.

Wdt я отключил и всё нормально стало. Но для меня прям магия была то, что с включенным wdt программа работает около 2 минут и лампочка мигать перестаёт.

Ссылка на комментарий
Поделиться на другие сайты

не за что, к 18пикам описанное выше отношения не имеет ,речь шла о 16пик и даже при появлении постороннего прерывания,  ни как не влияет на ногодрыг в прерывании. 

вопрос в другом, как вы умудрились увидеть мигание  лампы с частотой минимум 15Гц ???? думаю ответ найдется здесь http://kazus.ru/forums/showthread.php?t=13198&page=2#

 

Ссылка на комментарий
Поделиться на другие сайты

10 часов назад, IMXO сказал:

вопрос в другом, как вы умудрились увидеть мигание  лампы с частотой минимум 15Гц ????

Ну я не знаю, в протеусе мигает, осцилограф в том же протеусе всё верно показывает. Параллельно с лампочкой осцилограф подключен к пину.

Изменено пользователем Longer
Ссылка на комментарий
Поделиться на другие сайты

в том и дело что мигает, а не должна.  у вас на выходе ШИМ с 50% заполнением , модель лампы его симулировать не может.

осциллограф на таких временных интервалах при сбое синхронизации вообще может показывать погоду на марсе. 

работу  и отладку надо смотреть в графах

вот так выглядит сбой описанный мной выше,  в прерывании(LED) все работает , вмайне(RELAY) нет

5ca9b43c1528b_.thumb.png.a2438883858de7f247a2b4c911eafcb4.png

Ссылка на комментарий
Поделиться на другие сайты

@IMXO на графах у меня тоже всё норм, правда с digital у меня не получилось, сделал на analogue. В общем я не знаю почему на лампочке видны такие медленные мерцания.graph.png.375173877a3a88aa3a299a36f3ceacbb.png

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...