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

 
 
> Не работает аппаратный таймер на PLC2129 при Keil OS
Д_М
сообщение Nov 11 2013, 19:40
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185



Здравствуйте!
Не выполняется обработчик прерывания Таймера1. Таймер0 используется ОС (по умолчанию).

#define pcon_PCTIM0 (1<< 1)
#define pcon_PCTIM1 (1<< 2)
#define Int_bit_TIMER0 4
#define Int_bit_TIMER1 5

PCONP |= pcon_PCTIM1; // Power up Timer1
T1PR = 0x00000000; //Load prescaler
T1TCR = 0x00000002; //Reset counter and prescaler
T1MCR = 0x00000003; //On match reset the counter and generate an interrupt
T1MR0 = 400000; //Set the cycle time
T1TCR = 0x00000001; //enable timer
VICVectAddr5 = (unsigned)TIMER1VectoredIRQ;
VICVectCntl5 = 0x00000000; //Set channel
VICIntEnable = (1<< Int_bit_TIMER1);

void TIMER1VectoredIRQ (void) __irq
{
LEDS_ON = LED_B;

T1IR |= 0x00000001; //Clear match 0 interrupt
VICVectAddr = 0;// Dummy write to signal end of interrupt
}

Как мне кажется, ничего не упустил. По крайней мере на LPC2394 такое работает.
Заранее благодарен за помощь!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Д_М
сообщение Nov 12 2013, 17:59
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185



Спасибо за отклик!
Таймер ОС пересаживается на другой аппаратный таймер путём добавления в программу #define OS_TIMER 1. Причина того, что не работал Таймер 0 была в настройке регистра управления прерыванием. Сделал, как в примере
VICVectCntl0 = 0x20 | 4; //Set channel
Заработало. Кто бы растолковал смысл этого числа!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 12 2013, 18:20
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Д_М @ Nov 12 2013, 20:59) *
Кто бы растолковал смысл этого числа!
Какая именно фраза из документации непонятна?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Д_М
сообщение Nov 12 2013, 18:56
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185



Цитата(Сергей Борщ @ Nov 12 2013, 22:20) *
Какая именно фраза из документации непонятна?

VICVectCntl0 = 0x20 | 4
Что означает число 0x20 | 4?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 8th August 2025 - 23:50
Рейтинг@Mail.ru


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