Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2019-окт-18 16:19

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 2019-июл-17 08:46 
Не в сети

Зарегистрирован: 2018-дек-24 14:39
Сообщения: 8
Здравствуйте! Не пишет в регистры.
Написал немного кода, для контроля питания пр-ра, а он не работает(после уменьшения напряжения на источнике питания ниже 3в, прерывание не срабатывает)
void POWER_Configure(void){
POWER_PVDlevelConfig(PWR_PVDlevel_3V0);
POWER_PVD_ITconfig(POWER_PVD_IT,ENABLE);
POWER_PVDenable(ENABLE);
}
void POWER_IRQHandler(void){
uint32_t i =0;
PORT_SetBits(MDR_PORTC, PORT_Pin_5);//test POWER
while (i!=20000000)
{i++;}
NVIC_SystemReset();//софт ресет
}

Стал разбираться.
TEMP_TEST_FR = MDR_POWER->PVDCS;
TEMP_TEST_FR = &MDR_POWER->PVDCS;
POWER_Configure();
TEMP_TEST_FR = MDR_POWER->PVDCS;
TEMP_TEST_FR = &MDR_POWER->PVDCS;

Там где взятие адреса, адрес совпал со спецификацией.
Там где чтение, оба раза прочел 0.
Подскажите пожалуйста работает ли MDR_POWER. Что я упускаю, мб нужно где выставить разрешение записи в эти регистры? тогда почему в главе с описанием модуля нет упоминания об этом?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2019-июл-17 08:57 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1356
Откуда: Тула
Тактирование блока включено?
MDR_RST_CLK->PER_CLOCK |= 1<<11; UPD: для ВЕ91, для ВЦ1 возможно другой битик.

_________________
сочувствующий…


Последний раз редактировалось prostoRoman 2019-июл-18 09:39, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2019-июл-17 09:38 
В сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 448
Откуда: ПКК "Миландр"
Работает аналогично этому https://startmilandr.ru/doku.php/prog:bug:pvd_test

ДОПОЛНЕНИЕ к статье:
Двойной сброс это не ошибка, выяснилось что так заложено в логике. Первое стирание разрешает сброс флага PVD, вторая запись собственно сбрасывает. Это будет внесено в спецификации.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2019-июл-17 14:53 
Не в сети

Зарегистрирован: 2018-дек-24 14:39
Сообщения: 8
Спасибо за ответы, действительно про тактирование забыл. Сейчас при включении регистрирую прерывание Power... Вобще думаю что статья https://startmilandr.ru/doku.php/prog:bug:pvd_test поможет решить проблему.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2019-июл-18 09:24 
Не в сети

Зарегистрирован: 2018-дек-24 14:39
Сообщения: 8
Проблему двойным сбросом решить не удалось((
void POWER_Configure(void){
uint32_t i =0;
RST_CLK_PCLKcmd(RST_CLK_PCLK_POWER, ENABLE);

POWER_DeInit();
POWER_PVDlevelConfig(PWR_PVDlevel_3V0);
// POWER_PVD_INVconfig(POWER_PVD_INV,ENABLE);
POWER_PVD_ITconfig(POWER_PVD_IT,ENABLE);
POWER_PVDenable(ENABLE);


POWER_ClearFlag(POWER_FLAG_PVD | POWER_FLAG_PVBD);
POWER_ClearFlag(POWER_FLAG_PVD | POWER_FLAG_PVBD);

NVIC_SetPriority(POWER_IRQn, 4);
NVIC_ClearPendingIRQ(POWER_IRQn);
NVIC_EnableIRQ(POWER_IRQn);
}
Если расcкомментировать POWER_PVD_INVconfig, прерывание возникает и при Ucc > 3.0в и при Ucc < 3.0в. Если закомментировать, то прерывание не возникает вообще(.

Возможно я в принципе не понял как работает детектор? Расскоментировав POWER_PVD_INVconfig, я жду прерывание, при понижении Ucc< 3.0в. Если Ucc> 3.0в прерывания быть не должно?
Замеры Ucc провожу с ноги пр-ра. Регулирую Ucc от 3.4 до 2.8.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2019-июл-18 10:41 
Не в сети

Зарегистрирован: 2018-дек-24 14:39
Сообщения: 8
Проблема решена! Код рабочий.
Немного сам себя обманул по поводу диапазона проверки напряжений. Я не превышал 0.2в для константы и зря.
Вот итог:
При регулировании на 3.0в без инвертирования:
установка прерывания ~3.22
сброс прерывания ~3.05
При регулировании на 2.8в без инвертирования:
установка прерывания 3.0
сброс прерывания 2.8
При регулировании на 3.0в + флаг инвертирования:
установка прерывания ~3.05
сброс прерывания ~3.28
При регулировании на 2.8в + флаг инвертирования:
установка прерывания ~2.85
сброс прерывания ~3.0
Таким образом 0.2в это защита от перерегулирования.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB