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

 
 
> LPC1768 - запрет всех прерываний?
LSV
сообщение Jul 6 2010, 19:09
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 16-02-05
Из: Санкт-Петербург
Пользователь №: 2 668



Нужно запретить все прерывания в lpc1768.

В User Manual на 17xx в Главе 34:

1. п.4.2.10.1 написано, что можно воспользоваться:
void __disable_irq(void)

Keil v.4.11 выдаёт ошибку.

2. п.4.2.1 написано:

" The CMSIS mapping of the Cortex-M3 NVIC registers
To improve software efficiency, the CMSIS simplifies the NVIC register presentation. In the
CMSIS:
• the Set-enable, Clear-enable, Set-pending, Clear-pending and Active Bit registers
map to arrays of 32-bit integers, so that:
– the array ISER[0] to ISER[3] corresponds to the registers ISER0 - ISER3"

Как в ISER[0] и ISER[2] записать 0xFFFFFFFF?

3. А требуется всего лишь в регистры ISER0 и ISER1 записать все 1.
В заголовочном файле lpc17xx.h, который идёт с Keil вообще не нашёл таких регистров (и многих других).

Это недоработка Keil (я так предпологал, что в нём должны быть определены все регистры)?

Если "Да", то выложите пожалуйста пример полного, рабочего файла - lpc17xx.h и startup_LPC17xx.s (хорошо бы в стиле как было для LPC2000-ых
или он не будет работать из-за новой версии CMSIS?)

(или хотя бы пример как надо доработать хидер, чтобы можно было написать так:

LPC_ITERRUPT->ISER0 = 0xFFFFFFFF

----------------------------------------------

ЗЫ. В LPC2000-ых файлы хидера и стартапа были куда понятнее
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
zltigo
сообщение Jul 6 2010, 20:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (LSV @ Jul 6 2010, 22:09) *
void __disable_irq(void)

Должно быть что-то подобное в intrinsic - ищите, а вообще просто посмотрите команду cpsid


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jul 6 2010, 21:04
Сообщение #3


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(LSV @ Jul 6 2010, 23:09) *
Нужно запретить все прерывания в lpc1768.

В User Manual на 17xx в Главе 34:

1. п.4.2.10.1 написано, что можно воспользоваться:
void __disable_irq(void)

Keil v.4.11 выдаёт ошибку.

Никакой ошибки быть не должно:
Код
__disable_irq();    //запрет прерываний
__enable_irq();    //разрешение прерываний
Go to the top of the page
 
+Quote Post
LSV
сообщение Jul 7 2010, 04:39
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 16-02-05
Из: Санкт-Петербург
Пользователь №: 2 668



Цитата(sonycman @ Jul 7 2010, 01:04) *
Никакой ошибки быть не должно:
Код
__disable_irq();    //запрет прерываний
__enable_irq();    //разрешение прерываний


Да так всё работает: __disable_irq(); //запрет прерываний

Почему Keil не принимает:
void __disable_irq(void)

-------------------------------------
Я так понимаю, что добавив в lpc17xx.h свою строку вида
#define ICER0 (*((volatile unsigned long *) 0xE000E180))

А потом в программе написать ICER0 = 0xFFFFFFFF - не получиться из-за новой версии CMSIS?

-------------------------------------

А как тогда обращаться к регистрам, которые не определены в lpc17xx.h?

Например, к ICER0, чтобы записать в него некоторое число.

-------------------------------------
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 7 2010, 06:25
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(LSV @ Jul 7 2010, 07:39) *
Да так всё работает: __disable_irq(); //запрет прерываний

Почему Keil не принимает: void __disable_irq(void)

Не понял, Вы хотите объявить уже существующую в библиотеках компилятора функцию?
Компилятор что говорит?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
LSV
сообщение Jul 7 2010, 08:53
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 16-02-05
Из: Санкт-Петербург
Пользователь №: 2 668



А как доопредилить регистры, которые отсутствуют в хидере?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:46
Рейтинг@Mail.ru


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