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

Поиск

Показаны результаты для тегов 'watchdog'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Сайт и форум
    • Новости и обсуждения сайта и форума
    • Другие известные форумы и сайты по электронике
    • В помощь начинающему
    • International Forum
    • Образование в области электроники
    • Обучающие видео-материалы и обмен опытом
  • Cистемный уровень проектирования
    • Вопросы системного уровня проектирования
    • Математика и Физика
    • Операционные системы
    • Документация
    • Системы CAD/CAM/CAE/PLM
    • Разработка цифровых, аналоговых, аналого-цифровых ИС
    • Электробезопасность и ЭМС
    • Управление проектами
    • Нейронные сети и машинное обучение (NN/ML)
  • Программируемая логика ПЛИС (FPGA,CPLD, PLD)
    • Среды разработки - обсуждаем САПРы
    • Работаем с ПЛИС, области применения, выбор
    • Языки проектирования на ПЛИС (FPGA)
    • Системы на ПЛИС - System on a Programmable Chip (SoPC)
    • Методы и средства верификации ПЛИС/ASIC
  • Цифровая обработка сигналов - ЦОС (DSP)
    • Сигнальные процессоры и их программирование - DSP
    • Алгоритмы ЦОС (DSP)
  • Микроконтроллеры (MCU)
    • Cредства разработки для МК
    • ARM
    • RISC-V
    • AVR
    • MSP430
    • Все остальные микроконтроллеры
    • Отладочные платы
  • Печатные платы (PCB)
    • Разрабатываем ПП в САПР - PCB development
    • Работаем с трассировкой
    • Изготовление ПП - PCB manufacturing
  • Сборка РЭУ
    • Пайка и монтаж
    • Корпуса
    • Вопросы надежности и испытаний
  • Аналоговая и цифровая техника, прикладная электроника
    • Вопросы аналоговой техники
    • Цифровые схемы, высокоскоростные ЦС
    • RF & Microwave Design
    • Метрология, датчики, измерительная техника
    • АВТО электроника
    • Умный дом
    • 3D печать
    • Робототехника
    • Ремонт и отладка
  • Силовая электроника - Power Electronics
    • Силовая Преобразовательная Техника
    • Обратная Связь, Стабилизация, Регулирование, Компенсация
    • Первичные и Вторичные Химические Источники Питания
    • Высоковольтные Устройства - High-Voltage
    • Электрические машины, Электропривод и Управление
    • Индукционный Нагрев - Induction Heating
    • Системы Охлаждения, Тепловой Расчет – Cooling Systems
    • Моделирование и Анализ Силовых Устройств – Power Supply Simulation
    • Компоненты Силовой Электроники - Parts for Power Supply Design
  • Интерфейсы
    • Форумы по интерфейсам
  • Поставщики компонентов для электроники
    • Поставщики всего остального
    • Компоненты
  • Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир
    • Обсуждение Майнеров, их поставки и производства
  • Дополнительные разделы - Additional sections
    • Встречи и поздравления
    • Ищу работу
    • Предлагаю работу
    • Куплю
    • Продам
    • Объявления пользователей
    • Общение заказчиков и потребителей электронных разработок

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


Город


Код проверки


skype


Facebook


Vkontakte


LinkedIn


Twitter


G+


Одноклассники


Звание

Найдено: 5 результатов

  1. Контроллер GigaDevice GD32F103RBT6. Вопрос в заголовке. Использую FWDGT. Запускается и ресетится как надо, а как его выключить, если он перестал быть нужным? В регистрах нужного бита не нашёл.
  2. Понадобилось запустить UART с возможностью отработки таймаута по приему. В самом UART такой вариант отсутсвует. Пробовал с помощью обычного таймера. Но в нем счетчик без возможности записи со стороны процессора. Корректно перезапускать не получилось. Более менее получилось с Watchdog. Вот так описал прерывание #define WDTPERIOD 10000 EX_INTERRUPT_HANDLER (Watchdog_ISR) { *pWDOGB_CNT = WDTPERIOD; *pFIO0_FLAG_T = DBG_PIN; // toggle asm("ssync;"); } Вот так настраиваю сам Watchdog: void WDOGinit (void) { // Запрет сторожевого таймера: *pWDOGB_CTL = WDDIS; ssync(); // Инициализация счетчика: *pWDOGB_CNT = WDTPERIOD; ssync(); register_handler(ik_ivg13, Watchdog_ISR); /* Note that if the general-purpose interrupt option is selected, the System Interrupt Mask register (SIC_IMASK) should be appropriately configured to unmask that interrupt. */ // Table 4-7. Peripheral Interrupt Source Reset State //Watchdog Timer interrupt - 59 - IVG13 - SIC_IMASK1 == 27 // разрешение логической 1 *pSICB_IMASK1 |= SIC_MASK(27);\ // Разрешение сторожевого таймера, генерировать обычное прерывание // при срабатывании сторожевого таймера: *pWDOGB_CTL = WDEN | WDEV_GPI; // 0x0FF0 | 0x0004 ssync(); *pWDOGB_STAT = 0; } Реально удалось загрузить на лету и прошить работающую версию с WDTPERIOD = 1000. На выходе видно частоту чуть больше 2МГц. Как только поменяю значение на другое - или нет сигнала на выходе или остается "старый" или отваливается эмулятор. В сети нашел примеры для BF-60x : adi_int_InstallHandler(INTR_WDOG1_EXP, wdtISR, NULL, true); _wdtDisable(); _wdtSetTimeout(wdtPeriod); _wdtEnable(); Но таких функций в примерах в моем VDSP нет. "INTR_WDOG1_EXP" - ни одной ссылки в Интернете. Понятно, что с порядком обращения к регистрам проблема, но как найти?
  3. Прошу помощи! Счетчик импульсов (watchdog в режиме генерации прерываний) на attiny85 считает импульсы просыпаясь раз в 250мс и раз в сутки выходит из цикла и общается по i2c. Возникла проблема — очень редко (!) attiny85 перезагружается после общения по i2c. Как я это понял: я вижу на сервере увеличение на единицу счетчика перезагрузок и MCUSR в setup(). MCUSR обычно 1, а становится равен 8 (1000 - WDRF: Watchdog Reset Flag. Завершение работы таймера.). Подозрения на некорректную настройку watchdog. Проблема проявляется крайне редко и не понятно как отловить. Код: main.cpp main.cpp "избранное": int16_t wakeup_period_min; volatile int wdt_count; ISR( WDT_vect ) { wdt_count--; } void resetWatchdog() { MCUSR = 0; WDTCR = bit( WDCE ) | bit( WDE ); WDTCR = bit( WDIE ) | bit( WDP2 ); // 250 ms wdt_reset(); } #define ONE_MINUTE 240 void setup() { info.service = MCUSR; //причина перезагрузки noInterrupts(); ACSR |= bit( ACD ); interrupts(); resetWatchdog(); wakeup_period_min = WAKEUP_DEFAULT_PER_MIN; if (storage.get(info.data)) { //не первая загрузка info.resets = EEPROM.read(storage.size()); info.resets++; EEPROM.write(storage.size(), info.resets); } else { EEPROM.write(storage.size(), 0); } } void loop() { power_all_disable(); set_sleep_mode( SLEEP_MODE_PWR_DOWN ); resetWatchdog(); for (unsigned int i = 0; i < ONE_MINUTE && !button.pressed(); ++i) { wdt_count = wakeup_period_min; while ( wdt_count > 0 ) { noInterrupts(); if (button.pressed()) { interrupts(); break; } else { counting(); interrupts(); sleep_mode(); } } } wdt_disable(); .... ....Связь по i2c .... } Выдержка из даташита Какие гипотезы тестируются: 1. по даташиту нужно "To avoid the Watchdog Reset, WDIE must be set after each interrupt." добавил в ISR(WDT_vect): WDTCR |= bit( WDIE ); 2. Убрать WDE из WDTCR = bit( WDCE ) | bit( WDE ); Почему я уверен, что устройства не зависают: а) attiny продолжает считать импульсы корректно б) я посмотрел статистику и 70% attiny вышли на связь через WAKEUP_DEFAULT_PER_MIN, который получают в setup(). В остальных случаях через Х * WAKEUP_DEFAULT_PER_MIN из-за проблем со связью. Почему я думаю, что проблема в начале функции loop(), а не в цикле подсчета импульсов: a) attiny выходит на связь через дефалтный период, а не хаотично. б) attiny выходит на связь ПОСЛЕ цикла подсчета импульсов, значит ошибка была не в цикле, а перед ним. Проблема появляется с вероятностью около 0,0002%. К сожалению, моих знаний не достаточно, чтобы предположить, что может быть причиной перезагрузки. Прошу помощи!
  4. Зависают некоторые Attiny85

    Уважаемые знатоки! Есть счетчик импульсов на Attiny85 . Раз в 250мс проверяет вход. Раз в сутки будит ESP для передачи данных. Прошивка отлажена и не менялась год. Несколько экземпляров из новой партии устройств начали зависать (компоненты одинаковые, куплены в elitan). Устройство настраивают - нажимают кнопку (attiny пробуждает ESP), минут 5 ESP включена, потом ESP посылает данные по i2c на Attiny и та корректно засыпает, продолжая считать. Через несколько часов Attiny перестает реагировать на нажатие кнопки. Помогает замыкание пина Reset на землю. Вопрос: 1. Как убедиться в том, что Attiny85 корректно прошилась? avrdude.exe -p t85 -c Usbasp -B 4 -P usb -U flash:w:"attiny85.hex":a Программатор: Китайский перепрошитый usb стик USBASP 2. Нужно ли прошивать фьюзы, если они остаются стандартными? Не записывали их обычно и в этот раз. 3. Стоит ли поставить Atmel Studio и можно ли там воспроизвести подобное поведение? Я не моделировал там, т.к. прошивка работает у многих людей корректно. 4. Является ли использование watchdog для перезагрузки решением проблем с зависанием? (нужна помощь с кодом) Код Буду рад любым советом, чтобы сделать устройство более надежным!
  5. Прошивка написана под управлением FreeRTOS. Подскажите как правильно организовать сброс сторожевика? На эту тему информации маловато.
×
×
  • Создать...