0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 29
1

Прерывания в микроконтроллере Milandr

29.08.2022, 17:00. Показов 794. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Работаю с отладочной платой LDM-HELPER-K1986BE1QI-FULL.
Написал простой код, засвечивающий один светодиод сразу (PD0) и меняющий состояние другого раз в секунду (PD7). МК работает на частоте 8 МГц. Проблема в том, что МК не входит в прерывание, т.е. второй светодиод не мигает. В чем может быть проблема? Программу в МК загружаю через J-Flash с помощью J-Link, начальный адрес 0x0.
Код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <MDR32FxQI_port.h>
#include <MDR32FxQI_rst_clk.h>
#include <MDR32FxQI_timer.h>
 
 
void initTimer2(void);
void initLed (void);
 
 
int main()
{
    initTimer2();
    initLed();
    
    MDR_PORTD->RXTX |= (1<<0);
    while (1)
    {
    }
}
 
void initTimer2 (void)
{
MDR_RST_CLK->PER_CLOCK |= RST_CLK_PCLK_TIMER2; // Включаем тактирование таймера 2.
MDR_RST_CLK->TIM_CLOCK |= RST_CLK_TIM_CLOCK_TIM2_CLK_EN; // Подаем тактирование без предделителя.
MDR_TIMER2->CNT = 0; // Считай с 0.
MDR_TIMER2->PSG = 32000-1; // На таймер идет частота TIM_CLK/32000.
MDR_TIMER2->ARR = 250; // 1 секунда 250 тиков.
MDR_TIMER2->IE = TIMER_IE_CNT_ARR_EVENT_IE; // Разрешаем прерывание по совподению CNT и ARR.
NVIC_EnableIRQ(TIMER2_IRQn); // Разрешаем прерывание от таймера в целом.
MDR_TIMER2->CNTRL = TIMER_CNTRL_CNT_EN; // Включаем таймер.
}
 
void initLed (void) 
{
    MDR_RST_CLK->PER_CLOCK |= RST_CLK_PCLK_PORTD; // Включаем тактирование портов D.
    MDR_PORTD->OE       |= 1<<0|1<<7; // Выход.
    MDR_PORTD->FUNC     &= ~((uint32_t)(1<<0|1<<7)); // Режим работы - порт.
    MDR_PORTD->ANALOG |= 1<<0|1<<7; // Цифровые.
    MDR_PORTD->PWR      |= 3|3<<12; // Максимальная скорость пин обоих светодиодов.
}
 
 
void TIMER2_IRQHandler (void)
{
    MDR_TIMER2->STATUS  &= ~((uint32_t)(1<<1));     // Сбрасываем флаг. Обязательно первой коммандой.   
    MDR_TIMER2->CNT = 0;
  MDR_PORTD->RXTX ^= (1<<7);
}
Добавлено через 50 минут
Вопрос немного изменился. Если поменять в 47 строке (1<<7) на (1<<0), то всё работает (мигает светодиод на PD0).
Отсюда, собственно, вопрос. Почему так?)
По сути прерывание не хочет работать с PD7, но с PD0 работает.

Добавлено через 34 минуты
Вопрос снят)
Оказывается, я промахнулся со смещением битов в 39 строке. Там нужно написать 3<<14)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2022, 17:00
Ответы с готовыми решениями:

Milandr не входит в обработчик прерывания
Добрый вечер! Обращаюсь с возможно глупой проблемой, но никак не могу понять по какой причине у...

Программа на Cortex M3 - Milandr MDR1986BE92
Дан массив однобайтных положительных чисел (без знака). Найти минимальный и максимальный элементы...

Milandr Codemaster CRM ARM
Ребята нужна ваша помощь. На базе учебного стенда, построенного на базе демонстрационно-отладочной...

Управление светодиодами кнопкой (микроконтроллер Milandr)
Здравствуйте! Имеется отладочная плата LDM-HELPER-K1986BE1QI-FULL. Нужно в Keil написать код,...

0
29.08.2022, 17:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2022, 17:00
Помогаю со студенческими работами здесь

[Вопрос] Перехват прерывания прямым доступом к вектору прерывания
Всех приветствую! В данный момент разбираюсь с обработкой аппаратного прерывания (прерывание...

Вычислить адрес вектора прерывания по номеру прерывания.
17. По заданному номеру прерывания (13 h) вычислите логические адреса хранения исходных адресов...

Вызов прерывания в обработке прерывания
В программе,нажатие кнопки вызывает прерывание,в котором оно обрабатывается.Попутно в обработке...

Таймер на микроконтроллере
помогите пожалуйста составить схему электрическую структурную таймера

Диммер на микроконтроллере
Доброго времени суток! Надеюсь на вашу помощь. Собрал диммер по схеме с сайта...

Освещение на микроконтроллере
Добрый день, уважаемые! Мне необходимо сделать аварийное освещение на микроконтроллере со...

Компьютер на микроконтроллере
Иногда хочется чего-то простого и своего, путь примитивное как ZX, но на базе современных чипов....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru