Jump to content
Sign in to follow this  
Ittido

IWDG и запись во FLASH

Recommended Posts

Добрый день. Имеется следующая ситуация. Сторожевой таймер (iwdg) сбрасывается каждую милисекунду. Таймер отсчитывает 1,4 милисекунды для сброса. Всё работает до момента включения записи во flash новых параметров. Запись ведётся на одну страницу. Вопрос как можно остановить / отключить сторожевой таймер на время записи? Методом перебора тайминга таймера определил что запись занимает 0,0254 Сек. То есть если сбрасывать сторожевой таймер с периодом больше 0,0254 то сброса процессора не происходит. Пробовал переинициализировать таймер на время записи - безрезультатно. Новая инициализация не проходит. Создаётся впечатление что после того как он запущен, туда не достучаться.

Share this post


Link to post
Share on other sites

надо наверное внимательно почитать мануал на эту тему. Скорее всего вы что-то делаете не так как там написано

вот это вы конечно не читали

Цитата

Register access protection
Write access to the IWDG_PR and IWDG_RLR registers is protected. To modify them, you
must first write the code 0x5555 in the IWDG_KR register. A write access to this register
with a different value will break the sequence and register access will be protected again.
This implies that it is the case of the reload operation (writing 0xAAAA).
A status register is available to indicate that an update of the prescaler or the down-counter
reload value is on going.

 

Share this post


Link to post
Share on other sites

Уточню. Во время старта я инициализирую сторожевой таймер со значением сброса каждую 1,4 мСек. Перед записью во флеш я вновь запускаю функцию инициализации сторожевого таймера (И в ней всё то на что вы мне указываете есть) с новым временем сброса - но это безрезультатно.

Share this post


Link to post
Share on other sites

Литиевые ХИТы Fanso: устойчивость к высоким температурам

Литиевые ХИТы для широкого круга применений, в том числе в промышленности, соответствуют требованиям современного рынка и способны работать в самых жестких условиях. Основные требования – это длительность хранения и работы, высокая удельная емкость, а также защита от воздействия таких внешних факторов, как температура и влажность. ЛХИТ превосходят по плотности энергии и нормальному напряжению другие элементы автономного питания: 2,9…3,6 В против 1,2…1,5 В

Читать статью...

чудес не бывает. Таймер это обычное устройство, которое управляется так же как и все остальные. Проверяйте код

ну или выкладывайте его сюда, будем смотреть. А так выходит гадание по звездам

Share this post


Link to post
Share on other sites

Вот код.

void InitWDG(uint16_t z)                    //
 {RCC_LSICmd(ENABLE);                                //Включить внутренний генератор 40 кГц
  while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)//Ожидаем готовности генератора
       {}
  /* Включаем Watchdog*/
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  IWDG_SetPrescaler(IWDG_Prescaler_8);                 //Делитель  8
  IWDG_SetReload(z);                                //z = 7 (1,4 мСек.)
  IWDG_ReloadCounter();
  IWDG_Enable();
 }

 

А как остановить сторожевой таймер вы не знаете?

Решено. Написал код и всё понял. Выкинул запуск внутреннего генератора из функции и всё заработало. Спасибо.

Share this post


Link to post
Share on other sites

ESP32-DevKitC-VB позволит быстро запустить ваше первое WiFi-приложение

Отладочная плата на основе одного из самых популярных WiFi-модулей Espressif ESP32-WROVER-B позволяет в самые короткие сроки запустить приложение с поддержкой беспроводных стандартов WiFi 802.11b/g/n и Bluetooth Classic/BLE. Ресурсов встроенного в модуль чипа ESP32-D0WD хватит для решения даже очень сложных задач.

Подробнее...

остановить никак. После запуска он только работает не смотря ни на что. В этом его вся суть - обеспечить надежный сброс контроллера при любых условиях, если пропал адекватный контроль со стороны кода. Если хотите использовать временный вачдог, пользуйтесь WWDG. Он на то и заточен

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
2 минуты назад, Ittido сказал:

сброс сторожевого таймера в прерывании от таймера каждую милисекунду

а в таком случае сторожевик точно имеет смысл?

Share this post


Link to post
Share on other sites

От заввисания процесора - да. Оконный же роботает от системного тактирования.

Я тут подумал, если остановить генератор на 40 кГц разве это не приведёт к остановке IWDG.

Share this post


Link to post
Share on other sites
1 час назад, Ittido сказал:

если остановить генератор на 40 кГц

смешной такой. Это все равно что остановить каток.

зависания процессора бывают разные. Можно совершенно случайно налипнуть на зависание в банальном while, который ждет какого нибудь флага готовности (которого никогда может и не случится) и при этом прерывания от таймера будут отлично отрабатываться.

 

Edited by mail_robot

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Similar Content

    • By Катерина
      Очень-очень нужны инженеры по схемотехнике!!! 
      АО «НПО «Орион» сейчас находится в поиске крутых и грамотных специалистов для разных проектов! Мы занимаемся разработкой микрофотоэлектроники как на гражданку, так и на оборонку. Это и  тепловизоры, и SWIR-камеры, инфракрасные термосканы и конструктор Smart Blocks на базе Ардуино, а также фотоприемные устройства, лазерные целеуказатели, очки ночного виденья, микрокриогенные системы и другое.
      Нам нужен такой человек, который по сформулированному техническому заданию сможет с нуля разработать и спроектировать схему «на железе» для того или иного проекта. Также создать макет электронной схемы, протестировать и испытать его. Ну и естественно сопроводить процесс производства от опытного до серийного. Работа в паре с инженером-конструктором. Очень круто, если вы уже проектировали ПЛИС и микроконтроллеры.
      Наши плюшки:
      Интересные проекты, некоторые из них в России еще никогда не разрабатывались. У вас будет возможность для творчества, новых разработок и предложений. Стабильность и гарантию! Не смотря на наши проекты и разработки в гражданском направлении, предприятие у нас государственное и соблюдает все нормы трудового законодательства. Очень вкусную столовую на территории с завтраками и обедами (средняя стоимость ~ 150 рублей). Уникальную возможность – увидеть производство матриц фоточувствительных элементов от подложки до готовой матрицы, которую потом Вы и будете разводить на схеме. Множество спортивных и культурных мероприятий в большом и дружном коллективе. А также для пешеходов – доступность от метро Выхино (7 минут пешком или 1 остановка на автобусе). Бонусом водителям автомобилей - две бесплатные корпоративные парковки. Локация: Москва, ст. метро Выхино;
      График работы: 5/2 с 9:00 до 17:45 (+/- час);
      З/п по результатам собеседования
      Контакты: hr@npo-orion.ru
      +7 499 786 3669 (Екатерина) 
    • By oops13
      Простите, продублирую свой пост в новой теме:
      Форумчане, коллеги! Подскажите, пожалуйста. CoIDE выдает вот такую ошибку при записи во флешпамять:  Error: Connect failed, check config and cable connection. Со шнуром USB всё в порядке, ST-Link Utility установил. Но в диспетчере устройств драйвер STM32 почему-то именно в разделе дисковых устройствах отображается(в контроллерах USB его нет). На отладочной плате Discovery горит Красный светодиод. Настройки дебаггера в CoIDE прилагаю. Спасибо.

    • By i.vozvahov
      Доброе утро, форумчане!
      Еще по прошлому своему вопросу я скорее всего поразил вас своей безграмотностью, но я попытаю счастье и задам еще один вопрос.
      Мне необходимо, как я уже написал в заголовке, подключить к МК память на 256МБ, то есть это на 2Gb. Но суть вопроса даже в другом, я смотрел даташиты на всевозможные модели и видел только памяти с вшнешней шиной в 8 и 16 бит. Затем стал читать общую спецификацию и там тоже видел информацию только на эти два типа. Но каких-то конкретных фраз, что nand flash памяти с большими разрядностями не выпускают, я не видел. Бывают ли памяти с большими разрядностями nand flash?
      И небольшой вопрос именно по структуре работы. Если у нас 2Gb, то есть надо покрыть адреса в 31бит, то есть для задания адреса как раз и надо минимум 4-5циклов. На работе по циклам и основывается работа nand flash памяти, все же верно?
      Если есть возможность, был бы очень благодарен на какую-нить ссылку или книгу, кот-ая совсем развеяла бы все мои вопросы. Честно пробовал искать, но тяжело фильтровать информацию самостоятельно.
      Еще раз прошу прощения за свои базовые вопросы.
      Спасибо.
    • By Batai
      Здравствуйте, весь день голову ломаю...Нужно подружить PIC16F72 с Flash-памятью AT45DB161D.  В порядке эксперимента для начала хочу прочитать регистр статуса и идентификатор памяти, но она ничего совсем не отвечает .  вот код:
      ;========== Настройка МК ============================================== SetMCU CALL Pause1s CLRF STATUS CLRF PORTA CLRF PORTB CLRF PORTC BSF STATUS, RP0 ;Банк 1 MOVLW b'00000000' ;Значение для направления PORTA MOVWF TRISA ;Настройка PORTA MOVLW b'00000000' ;Значение для направления PORTB MOVWF TRISB ;Настройка PORTB MOVLW b'00010000' ;Значение для направления PORTC MOVWF TRISC ;Настройка PORTC ;========== Инициализация SPI =========================================== BCF STATUS, RP0 ;Банк 0 CLRF SSPSTAT MOVLW b'00100000' ;Значение для настройки SPI MOVWF SSPCON ;Настройка SPI BSF PORTC, 6 ;Установка CS0 ;========== Чтение идентификатора AT45DB161D BCF PORTC, 6 ;Опускаем CS MOVLW 0x9F ;Опкод для чтения идентификатора CALL SPI_Trans ;Обмен SPI MOVLW 0x00 ;Ждем ответ CALL SPI_Trans MOVF SPI_RX,0 ;Принятый байт в аккумулятор MOVWF PORTB ;Вывод значения BSF PORTC, 6 ;Завершение передачи stop GOTO stop ;Бесконечный цикл ;========== Передача по SPI ====================================================================================================== SPI_Trans MOVWF SSPBUF ;Передача байта CALL Pause1ms ;Ожидание завершения передачи MOVF SSPBUF, 0 ;Копирование принятого байта MOVWF SPI_RX RETURN В протеусе с SPI_Debugger-ом все работает, если подставить на место ответа какое-нибудь значение, оно выводится в портБ. Но в железе с подключенной памятью ничего не происходит. Выводы памяти RESET, WP соединены с питанием. Питание 3,3В. Помогите, пожалуйста)
    • By kalexi
      Вопрос в том как это сделать? И можно ли? Что нужно:
      * Загрузиться
      * Сгенерировать байткод прямо в программе
      * Передать ему выполнение
      * После окончания его работы вернуться в место вызова и получить результат.
      Примером самой простой подпрограммы может быть: var + 1.
  • Сообщения

    • Это всё так. Но когда под видом нового преподносят модернизированное старое и пытаются придать неведомые свойства неся техническую чушь - это ремикс, форк, плагиат в конце концов...Мы же на техническом форуме, а не на форуме маркетологов, продаванов и прочих шарлатанов.  ??? А как же работает четвертьволновый диполь? Достаточно пульсирующий ток пропустить через конденсатор и он станет переменным. Но в последовательной цепи не может быть разных токов... Поэтому пульсирующий ток - это частный случай переменного, а не постоянного. Для пятиклассников, т.к. более сложные вещи им преподносить бесполезно - мозг не освоит. Будучи взрослым и образованным сравнивать природу электричества и воды....ну не знаю. У тока волновая природа распространения (перенос заряда без переноса носителей этого заряда), у воды - нет.
    • @BAFI Вот я поправил: Заодно убрал конденсатор в питании, вместо него старое доброе самопитание. Защиту только приделать свою и всё - лучшая печать)
    • В моей схеме такой частоты нет уже на конденсаторе автосмещения. Полностью скомпенсирована. И не надо превращать частоту в проводимость диэлектриков. Я же писал, в резисторе направление тока в выводах одно и то же, у конденсатора разнонаправленный ток в выводах. Как ток может течь навстречу себе же? Очевидно никак, тогда на картине видно где на самом   деле течет ток. Вокруг конденсатора. на глаз? А горб  в центре на глаз не видно? Именно паразитная, она будет искажать линейность  т.к. имеет два минимума при отклонении в любую сторону а характеристика ЧМ-дтетктора имеет один минимум и один макисмум, от и до линейная характеристика. Очевидно что АЧХ контура в одну сторону будет совпадать а другую направлена против характеристики.  
    • Дык, слышен он... 18 килогерц и я еще слышу, 20 - в силу возрастных изменений ух уже нет. В юность слышал на ура. Что городите? Ультразвук большой мощности проще всего получить по принципу ультразвуковой ванны, но без навыков там никак, к тому же, на пьезоизлучатель идет высокое напряжение, под 400 Вольт. готовое решение - раздербанить эту самую ванну, но там ещё затык - пьезик работает только будучи приклеенным к ёмкости, причём заполненной жидкостью, иначе мгновенно разрушается. Думайте...(нужно ли оно Вам вообше).
    • Брателло, импульсы с диодов это выпрямленный пульсирующий ток, он образуется от нуля и в соответствующую сторону. Твоя огибающая не возможна без RC цепи, в момент когда верхний диод открыт, нижний закрыт и ток верхнего диода быстро заряжает маленькие С и далее ему некуда течь! Во вход ОУ ток не должен течь да и там минимум будет 400ком. Должна быть установлена стандартная RC цепочка на общий в ее резисторе будет протекать переменный ток модуляции, огибающая то есть. И контур бредовый абсолютно не нужен.     только в одну сторону проводит, брателло. Нет! Переменный ток меняет направление а если меняется только значение то это пульсирующий ток, разновидность постоянного тока. Но в моей схеме ток значения не меняет, даже павлик сказал!  
    • Да, в дурдоме и истинные Наполеоны есть и Ильи Муромцы @parovoZZ  Не объясняйте. Всё равно не поймёт. У него что то с головой. Уже не раз пытались - результат нулевой, хотя  нет, маразма ещё больше стало изливаться. Геран, тебя что, до сих пор не отпустило? Что жрёшь?  Ты так и не объяснил как работает RC фильтр первого порядка. Но по твоему очередному бреду, ты даже этого не знаешь.
    • Это проходят в школе и меня терзают смутные сомнения. Ток в диэлектрике конденсатора течет за счет перетекающего заряда (не носителей заряда!!!! они сидят на своих местах и покидают их только при ионизации диэлектрика) в диэлектрике за счет электрического поля на металлических пластинах. А раз ток через конденсатор течет только в момент движения зарядов, то и конденсатор в целом проводит только переменный ток.   Нет, не проводит. Когда лампочка вспыхнула, у инженеров это называется переходный режим и ток в этом режиме течет ПЕРЕМЕННЫЙ. Когда лампочка погасла, инженеры это называют устоявшийся режим. В этом режиме ток постоянный, а сопротивление такому току у конденсатора характеризуется токами утечек конденсатора...   Ну вы, блин, даете (с)
×
×
  • Create New...