реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> STM32F407 - watchdog+ reset проблемы.
RadiatoR
сообщение May 24 2016, 16:16
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



Само питание как идет и откуда?
Скиньте скрин платы

Я тоже как-то вылавливал такие косяки, что прям в окно выбрасывай - оказалось по своей дури ногу fb провел длинную по плате и при включении цепей внешнего кварца проседала напруга, dcdc добавлял и мк то улетал куда-то, то отходил в мир иной.
Go to the top of the page
 
+Quote Post
DerKetzer
сообщение May 25 2016, 05:27
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 10-04-13
Пользователь №: 76 430



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

Сообщение отредактировал DerKetzer - May 25 2016, 06:54
Go to the top of the page
 
+Quote Post
DerKetzer
сообщение May 25 2016, 08:55
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 10-04-13
Пользователь №: 76 430



Заметил одну вещь. Если в коде присутствует строчка GPIOE->PUPDR|=5; тоесть подключение внутренних подтяжек на выводы, то watchdog не перезапускает программу.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение May 25 2016, 13:23
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(DerKetzer @ May 25 2016, 11:55) *
Заметил одну вещь. Если в коде присутствует строчка GPIOE->PUPDR|=5; тоесть подключение внутренних подтяжек на выводы, то watchdog не перезапускает программу.

Глупости какие. Вообще без понятия. Почитайте хоть что-нибудь общее ...
При чём здесь подтяжка к watchdog-у и к сбросу?
Go to the top of the page
 
+Quote Post
DerKetzer
сообщение May 25 2016, 13:39
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 10-04-13
Пользователь №: 76 430



Сам не понимаю как регистры портов ввода вывода могут влиять на watchdog. Но факт. Еще наличие строчки GPIOC->BSRRL|=1<<4; почему то не позволяет контроллеру начать работать после сброса watchdog ом. Магия. Коментирую строчку, заливаю. Запущенный в коде watchdog перезапускает плату в установленное время. Восстанавливаю строчку-watchdog сбрасывает в нужное время, но программа не выполняется. Сам понимаю что звучит глупо.
Go to the top of the page
 
+Quote Post
RadiatoR
сообщение May 25 2016, 14:10
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



И это происходит в вашем проекте или в пустом?
Go to the top of the page
 
+Quote Post
Aaron
сообщение May 25 2016, 14:31
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 243
Регистрация: 5-10-06
Из: Зеленоград
Пользователь №: 21 007



сверяйте листинги асм кода - комментируемая строчка в каком месте вставляется, что до неё в коде, что сразу после неё - может, просто проблема со стеками или что-то в таком духе. Отключите полностью оптимизацию при компиляции, создайте наконец пустой проект, как вам уже советовали.
Go to the top of the page
 
+Quote Post
DerKetzer
сообщение May 26 2016, 05:22
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 10-04-13
Пользователь №: 76 430



Код
#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 - May 26 2016, 12:07
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!
Go to the top of the page
 
+Quote Post
RadiatoR
сообщение May 26 2016, 06:00
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



Цитата(DerKetzer @ May 26 2016, 08:22) *
GPIOD->BSRRL|=1<<13; //Зажигаю светодиод


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

То есть если в этом коде без строки GPIOE->PUPDR|=5; работает нормально, а с ней нет?
Go to the top of the page
 
+Quote Post
DerKetzer
сообщение May 26 2016, 06:05
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 10-04-13
Пользователь №: 76 430



Цитата(ЯadiatoR @ May 26 2016, 10:00) *
Можно использовать без "|".

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

Да. Еще губит строчка GPIOC->BSRRL|=1<<4; это из рабочего проекта
Go to the top of the page
 
+Quote Post
RadiatoR
сообщение May 26 2016, 06:40
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



поставьте 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 - May 26 2016, 12:07
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!
Go to the top of the page
 
+Quote Post
DerKetzer
сообщение May 26 2016, 07:08
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 10-04-13
Пользователь №: 76 430



на descovery то все работает. а во на готовом устройстве нет. ничто нигде не замыкает. Watchdog то сбрасывает контроллер, осциллографом вижу что дергается ножка reset. Но программа не запускается.
Go to the top of the page
 
+Quote Post
RadiatoR
сообщение May 26 2016, 07:24
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



Одинаковые программы на дискавери и на вашем девайсе ведут себя по разному? Если да, то проблема либо в плате, либо в пайке. Других вариантов собственно и нет. Я вам предложил показать топологию несколько сообщений назад. Может что и разглядели бы форумчане
Go to the top of the page
 
+Quote Post
DerKetzer
сообщение May 26 2016, 07:48
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 10-04-13
Пользователь №: 76 430



Часть печатки. Целиком только в альтиумовском файле могу

Целиком мне нельзя.TOPSECRET
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
RadiatoR
сообщение May 26 2016, 07:51
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



Ну вы хоть обозначения поставьте, а то мало понятно, а вообще вам стоит почитать правила разводки (легко гуглятся).
Хотя бы про 90 градусные проводники.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 15:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01481 секунд с 7
ELECTRONIX ©2004-2016