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

STM32F407 - watchdog+ reset проблемы.

Само питание как идет и откуда?

Скиньте скрин платы

 

Я тоже как-то вылавливал такие косяки, что прям в окно выбрасывай - оказалось по своей дури ногу fb провел длинную по плате и при включении цепей внешнего кварца проседала напруга, dcdc добавлял и мк то улетал куда-то, то отходил в мир иной.

Поделиться сообщением


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

Выводы boot0 и 99 на земле. Питание идет от импульсного DC/DC. От него же питаются и другие устройства. Попробовал от другого источника питания. Все равно не заводится. Только после ресета. Поднял ногу Reset от площадки. Даже касание щупом тестера вывода reset запускает контроллер. КОрпус 100pin. Поэтому нету выводов PDR_ON

Изменено пользователем DerKetzer

Поделиться сообщением


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

Заметил одну вещь. Если в коде присутствует строчка GPIOE->PUPDR|=5; тоесть подключение внутренних подтяжек на выводы, то watchdog не перезапускает программу.

 

Поделиться сообщением


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

Заметил одну вещь. Если в коде присутствует строчка GPIOE->PUPDR|=5; тоесть подключение внутренних подтяжек на выводы, то watchdog не перезапускает программу.

Глупости какие. Вообще без понятия. Почитайте хоть что-нибудь общее ...

При чём здесь подтяжка к watchdog-у и к сбросу?

Поделиться сообщением


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

Сам не понимаю как регистры портов ввода вывода могут влиять на watchdog. Но факт. Еще наличие строчки GPIOC->BSRRL|=1<<4; почему то не позволяет контроллеру начать работать после сброса watchdog ом. Магия. Коментирую строчку, заливаю. Запущенный в коде watchdog перезапускает плату в установленное время. Восстанавливаю строчку-watchdog сбрасывает в нужное время, но программа не выполняется. Сам понимаю что звучит глупо.

Поделиться сообщением


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

сверяйте листинги асм кода - комментируемая строчка в каком месте вставляется, что до неё в коде, что сразу после неё - может, просто проблема со стеками или что-то в таком духе. Отключите полностью оптимизацию при компиляции, создайте наконец пустой проект, как вам уже советовали.

Поделиться сообщением


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

#include "stm32f4xx.h"
volatile int i=0;
int main()
{

RCC->AHB1ENR|=8; //тактирование порта d на котором светодиод
GPIOD->MODER|=1<<26; //D13-output
RCC->AHB1ENR|=1<<4; //тактирование порта E из за которого сыр бор

i=1000000;
while(i--); //пауза перед зажигание светодиода. 1-2 сек
GPIOD->BSRRL|=1<<13; //Зажигаю светодиод

GPIOE->PUPDR|=5;  //строчка не позволяющая перезапуститься после срабатывания watchdog 

    IWDG->KR=0x5555;
    IWDG->PR = 0x3; // 4 секунды
    IWDG->KR = 0xCCCC; //start wdg на 4 секунды

while(1){ //пустой цикл
};

}

Изменено пользователем IgorKossak
[codebox] для длинного кода. [code]-для короткого!!!

Поделиться сообщением


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

GPIOD->BSRRL|=1<<13; //Зажигаю светодиод

 

Можно использовать без "|".

 

То есть если в этом коде без строки GPIOE->PUPDR|=5; работает нормально, а с ней нет?

Поделиться сообщением


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

Можно использовать без "|".

 

То есть если в этом коде без строки GPIOE->PUPDR|=5; работает нормально, а с ней нет?

Да. Еще губит строчка GPIOC->BSRRL|=1<<4; это из рабочего проекта

Поделиться сообщением


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

поставьте GPIOE->PUPDR|=5 после инициализации вд

 

Не помню, как там вд устроен, но у меня эта функция прекрасно работает.

Замените свой вд на ее вызов

void WD_init(void)
{
//    DBGMCU->APB1FZ|=DBGMCU_APB1_FZ_DBG_IWDG_STOP;// Debug WD stop
    IWDG->KR=0x5555;// Enter protection
    IWDG->PR=0x03;// Precaler = 32
    IWDG->RLR=0xFFF;// Reload value
    IWDG->KR=0xAAAA;// Refresh to RLR val
    IWDG->KR=0xCCCC;// Start timer
}

Изменено пользователем IgorKossak
[codebox] для длинного кода. [code]-для короткого!!!

Поделиться сообщением


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

на descovery то все работает. а во на готовом устройстве нет. ничто нигде не замыкает. Watchdog то сбрасывает контроллер, осциллографом вижу что дергается ножка reset. Но программа не запускается.

Поделиться сообщением


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

Одинаковые программы на дискавери и на вашем девайсе ведут себя по разному? Если да, то проблема либо в плате, либо в пайке. Других вариантов собственно и нет. Я вам предложил показать топологию несколько сообщений назад. Может что и разглядели бы форумчане

Поделиться сообщением


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

Ну вы хоть обозначения поставьте, а то мало понятно, а вообще вам стоит почитать правила разводки (легко гуглятся).

Хотя бы про 90 градусные проводники.

Поделиться сообщением


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

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

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

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

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

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

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

×
×
  • Создать...