Миландр

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

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Внешнее прерывание EXT_INT1 в 1986ВЕ4
СообщениеДобавлено: 2018-янв-26 16:08 
Не в сети

Зарегистрирован: 2014-июн-20 12:39
Сообщения: 2
Не могу войти в прерывание. Светодиод должен погаснуть. Что не так делаю?

#define led_off PORT_SetBits( MDR_PORTA, PORT_Pin_11)
#define led_on PORT_ResetBits( MDR_PORTA, PORT_Pin_11)

PORT_InitTypeDef PortInit;

int main(void)
{
// PORTA - 11- светодиод
RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTA, ENABLE);
PortInit.PORT_PULL_UP = PORT_PULL_UP_OFF;
PortInit.PORT_PULL_DOWN = PORT_PULL_DOWN_OFF;
PortInit.PORT_PD_SHM = PORT_PD_SHM_OFF;
PortInit.PORT_PD = PORT_PD_DRIVER;
PortInit.PORT_GFEN = PORT_GFEN_OFF;
PortInit.PORT_Pin = PORT_Pin_11;
PortInit.PORT_OE = PORT_OE_OUT;
PortInit.PORT_FUNC = PORT_FUNC_PORT;
PortInit.PORT_SPEED = PORT_SPEED_MAXFAST;
PortInit.PORT_MODE = PORT_MODE_DIGITAL;
PORT_Init(MDR_PORTA, &PortInit);
// PORTC4 - EXT_INT1
RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTC, ENABLE); // тактирование на порт С
PortInit.PORT_PULL_UP = PORT_PULL_UP_OFF; // подтяжка вверх откл.
PortInit.PORT_PULL_DOWN = PORT_PULL_DOWN_OFF; // подтяжка вниз
PortInit.PORT_PD_SHM = PORT_PD_SHM_OFF; // отключил триггер шмита
PortInit.PORT_PD = PORT_PD_DRIVER; // режим - управляемый драйвер
PortInit.PORT_GFEN = PORT_GFEN_OFF; // отключил фильтр
PortInit.PORT_Pin = PORT_Pin_4;
PortInit.PORT_OE = PORT_OE_IN;
PortInit.PORT_FUNC = PORT_FUNC_MAIN;
PortInit.PORT_SPEED = PORT_SPEED_MAXFAST;
PortInit.PORT_MODE = PORT_MODE_DIGITAL;
PORT_Init(MDR_PORTC, &PortInit);

__enable_irq(); // разрешил прерывания
NVIC_EnableIRQ(EXT_INT1_IRQn); //разрешил конкретное прерывание
NVIC_SetPriority (EXT_INT1_IRQn, 1); // установил приоритет
RST_CLK_HSEconfig(RST_CLK_HSE_ON);

led_on;
while(1);
}

void EXT_INT1_IRQHandler(void)
{
led_off;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешнее прерывание EXT_INT1 в 1986ВЕ4
СообщениеДобавлено: 2018-янв-29 11:15 
Не в сети

Зарегистрирован: 2017-июл-14 15:02
Сообщения: 16
Откуда: АО "ПКК Миландр"
Открыть Не могу войти в прерывание. Светодиод должен погаснуть. Что не так делаю?
YuVin писал(а):
Не могу войти в прерывание. Светодиод должен погаснуть. Что не так делаю?

#define led_off PORT_SetBits( MDR_PORTA, PORT_Pin_11)
#define led_on PORT_ResetBits( MDR_PORTA, PORT_Pin_11)

PORT_InitTypeDef PortInit;

int main(void)
{
// PORTA - 11- светодиод
RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTA, ENABLE);
PortInit.PORT_PULL_UP = PORT_PULL_UP_OFF;
PortInit.PORT_PULL_DOWN = PORT_PULL_DOWN_OFF;
PortInit.PORT_PD_SHM = PORT_PD_SHM_OFF;
PortInit.PORT_PD = PORT_PD_DRIVER;
PortInit.PORT_GFEN = PORT_GFEN_OFF;
PortInit.PORT_Pin = PORT_Pin_11;
PortInit.PORT_OE = PORT_OE_OUT;
PortInit.PORT_FUNC = PORT_FUNC_PORT;
PortInit.PORT_SPEED = PORT_SPEED_MAXFAST;
PortInit.PORT_MODE = PORT_MODE_DIGITAL;
PORT_Init(MDR_PORTA, &PortInit);
// PORTC4 - EXT_INT1
RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTC, ENABLE); // тактирование на порт С
PortInit.PORT_PULL_UP = PORT_PULL_UP_OFF; // подтяжка вверх откл.
PortInit.PORT_PULL_DOWN = PORT_PULL_DOWN_OFF; // подтяжка вниз
PortInit.PORT_PD_SHM = PORT_PD_SHM_OFF; // отключил триггер шмита
PortInit.PORT_PD = PORT_PD_DRIVER; // режим - управляемый драйвер
PortInit.PORT_GFEN = PORT_GFEN_OFF; // отключил фильтр
PortInit.PORT_Pin = PORT_Pin_4;
PortInit.PORT_OE = PORT_OE_IN;
PortInit.PORT_FUNC = PORT_FUNC_MAIN;
PortInit.PORT_SPEED = PORT_SPEED_MAXFAST;
PortInit.PORT_MODE = PORT_MODE_DIGITAL;
PORT_Init(MDR_PORTC, &PortInit);

__enable_irq(); // разрешил прерывания
NVIC_EnableIRQ(EXT_INT1_IRQn); //разрешил конкретное прерывание
NVIC_SetPriority (EXT_INT1_IRQn, 1); // установил приоритет
RST_CLK_HSEconfig(RST_CLK_HSE_ON);

led_on;
while(1);
}

void EXT_INT1_IRQHandler(void)
{
led_off;
}
Закрыть


В спецификации внешние прерывания пронумерованы с 0, в то время как в SPL начинаются с 1. В bugzilla заведён тикет и в следующей версии SPL эта ошибка будет исправлена. Сейчас чтобы прерывание вызывалось на выводе PC4 необходимо указать следующие настройки:
...
__enable_irq(); // разрешил прерывания
NVIC_EnableIRQ(EXT_INT2_IRQn); //разрешил конкретное прерывание
NVIC_SetPriority (EXT_INT2_IRQn, 1); // установил приоритет
...
void EXT_INT2_IRQHandler(void)
...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешнее прерывание EXT_INT1 в 1986ВЕ4
СообщениеДобавлено: 2018-фев-01 15:21 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1053
Откуда: Тула
Vladimir_K писал(а):
... В bugzilla заведён тикет и в следующей версии SPL эта ошибка будет исправлена. ...

Багзилла - хорошо. А репозиторий то есть? Наружу торчит?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешнее прерывание EXT_INT1 в 1986ВЕ4
СообщениеДобавлено: 2018-фев-02 11:28 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 68
Откуда: ПКК "Миландр"
В ближайшее время будут исправлены текущие ошибки и репозиторий появится снаружи, вероятно GitHUB.

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


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

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


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

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


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

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