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

Изготовление 2-х слойных плат от 2$, а 4-х слойных от 5$!

Быстрое изготовление прототипа платы всего за 24 часа! Прямая доставка с нашей фабрики!

Смотрите видео о фабрике JLCPCB: https://youtu.be/_XCznQFV-Mw

Посетите первую электронную выставку JLCPCB https://jlcpcb.com/E-exhibition чтобы получить купоны и выиграть iPhone 12, 3D-принтер и так далее...

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

Share this post


Link to post
Share on other sites

Вебинар «Практическое использование TrustZone в STM32L5»(10.12.2020)

Приглашаем на вебинар, посвященный экосистеме безопасности и возможностях, которые появились у разработчиков благодаря новой технологии TrustZone в микроконтроллерах STM32L5. Программа рассчитана на технических специалистов и тех, кто уже знаком с основами защиты ПО в STM32.

Подробнее

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

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


Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites

Снижена цена на AC/DC и DC/DC преобразователи Mornsun в Компэл!

Компэл и компания Mornsun снизили цены на преобразователи AC/DC-преобразователи семейств LS и LDE. По привлекательной цене также предлагаются DC/DC-преобразователи изолированных семейств поколений R2 и R3 различного конструктивного исполнения.

Подробнее

Вот код.

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

Материалы вебинара: «Силовые компоненты Wolfspeed на основе карбида кремния (SiC)»

Вы можете посмотреть видеозапись вебинара «Силовые компоненты Wolfspeed на основе карбида кремния (SiC)», ознакомиться с ответами на вопросы и презентацией, в которой вы найдете много полезных ссылок, в том числе подробнее раскрывающих ответы на вопросы.

Подробнее

остановить никак. После запуска он только работает не смотря ни на что. В этом его вся суть - обеспечить надежный сброс контроллера при любых условиях, если пропал адекватный контроль со стороны кода. Если хотите использовать временный вачдог, пользуйтесь 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  

  • Сообщения


  • Генератор высокого напряжения. Вход 3-6В

  • Similar Content

    • By Илья Юрченко
      Добрый день, уважаемые форумчане! Для научной работы хотел собрать данные о том, насколько микроконтроллеры stm32 удовлетворяют нужды и требования программистов и разработчиков продуктов на нем. Если не сложно, ответьте, пожалуйста, важны данные)
      Разумеется "очень средне" неадекватная метрика, но в рамках работы нужна именно средняя удовлетворённость, и определение существует ли необходимость в создании другой серии универсальных плат на базе МК.
    • 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В. Помогите, пожалуйста)
×
×
  • Create New...