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

 
 
> LPC2368 Прерывание по совпадению таймера, помогите
sasha968m
сообщение Jan 17 2017, 19:22
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 16-11-11
Из: Макеевка, Донецкая обл.
Пользователь №: 68 333



Всем здравствуйте!
Помогите, пожалуйста, разобраться с прерыванием от таймера0 по совпадению.
Только начал осваивать 32 разрядные микроконтроллеры. Есть отладочная плата SK-MLPC1768/2387/2368, с установленным LPC2368.
Для обучения пользуюсь IAR 7.50.2.10505
Прикрепленный файл  main.txt ( 2.9 килобайт ) Кол-во скачиваний: 75

Вставлял ловушку в бесконечном цикле и проверял 0 бит регистра T0IR. Видно что таймер входит в прерывание (бит устанавливается), но дальше действий программа никаких не выполняет, а должна быть бегущая единица.
Как должна работать эта программа ясно, но почему не работает не понятно.
Исходник взят из интернета, кроме настройки PLL. PLL настраивается. Проверялось.
Подскажите, направьте пожалуйста!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sasha968m
сообщение Jan 18 2017, 20:38
Сообщение #2





Группа: Участник
Сообщений: 10
Регистрация: 16-11-11
Из: Макеевка, Донецкая обл.
Пользователь №: 68 333



Прикрепленное изображение

Я, кажется, понял. Выставил в первый бит 1, дождался когда она сбросится, а только потом продолжил выполнять дальше программу. Так?
Прикрепленное изображение

В это скриншоте вижу что по сбросу микроконтроллера все прерывания сброшены. Допустим, я запишу туда 1 для сброса. Это не вызовет никакой неправильной реакции? Не установятся ли прерывания?
Вот последний код что я состряпал из разных кусков. И он работает! На данном этапе для меня это достижение.
Код
unsigned int n;
void initClocks(void);
void Timer0_Init(void);
__irq void timer0ISR(void);

/***************************************************************************/
/****************************************************************************/
int main (void) {
initClocks();
Timer0_Init(); /* Настроить таймер */    
//
IODIR1 = 0x3C000000;    /*Конфигурируем Р1.26 - Р1.29 на выход, остальное на вход*/
IOSET1 = 0x3C000000;    /* Устанавливаем ноль на выходах */
FIO2DIR = (1<<13);      //Configure Pin P2.13 as Output
FIO2SET = (1<<13);    
//
n = 0x04000000;
IOCLR1 = n;          /* Установить состояние порта */

//Запустить таймер
T0TCR = 0x00000001;

    for (;;) {} //бесконечный цикл
  
}
/***************************************************************************/
/****************************************************************************/

void Timer0_Init(void)
{
  T0CTCR = 0x0; //Set Timer Mode
  T0PR = 8999; //Increment T0TC at every 9000 clock cycles
//9000 clock cycles @9 Mhz = 1 mS

  T0MR0 = 399;   //Zero Indexed Count-hence subtracting 1 (400 msec)
  T0MCR = (1<<0) | (1<<1);//Set bit0 & bit1 to Interrupt & Reset TC on MR0  

  VICVectAddr4 = (unsigned )timer0ISR; //Pointer Interrupt Function (ISR)
  VICVectCntl4 = 0xF;            //lowest priority
  VICIntEnable = (1<<4); // Enable timer0 interrupt

  T0TCR = (1<<1); // Reset Timer
}
/***************************************************************************/
/****************************************************************************/

__irq void timer0ISR(void)
{
if (n!=0x20000000) {n<<=1;}
else{n = 0x04000000;}
T0IR = 0x00000001; /*Сбросить флаг прерывания в Timer0*/
//Бегущая единица
IOSET1 = 0x3C000000;
IOCLR1 = n; /* Установить состояние порта */
VICVectAddr = 0; /*Перевести VIC в исходное состояние*/
}

Как работает таймер я понял.
Читаю RTFM.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sasha968m   LPC2368 Прерывание по совпадению таймера, помогите   Jan 17 2017, 19:22
- - jcxz   1.Устанавливаете запрос синхронного сброса КодT0TC...   Jan 18 2017, 08:03
|- - zltigo   Цитата(jcxz @ Jan 18 2017, 10:03) Читайте...   Jan 18 2017, 08:09
|- - jcxz   Цитата(zltigo @ Jan 18 2017, 11:09) Ну Вы...   Jan 18 2017, 08:24
|- - zltigo   Цитата(jcxz @ Jan 18 2017, 10:24) Я прочи...   Jan 18 2017, 08:43
|- - jcxz   Цитата(zltigo @ Jan 18 2017, 11:43) #defi...   Jan 18 2017, 09:18
|- - zltigo   Цитата(jcxz @ Jan 18 2017, 11:18) Мой вар...   Jan 18 2017, 09:49
|- - jcxz   Цитата(zltigo @ Jan 18 2017, 12:49) А для...   Jan 20 2017, 11:40
|- - zltigo   Цитата(jcxz @ Jan 20 2017, 13:40) о чём В...   Jan 20 2017, 11:49
- - sasha968m   Цитата(jcxz @ Jan 18 2017, 11:03) 1.Устан...   Jan 18 2017, 11:24
|- - zltigo   Цитата(sasha968m @ Jan 18 2017, 13:24) Пр...   Jan 18 2017, 11:31
||- - sasha968m   Цитата(zltigo @ Jan 18 2017, 14:31) Это н...   Jan 18 2017, 11:51
||- - zltigo   Цитата(sasha968m @ Jan 18 2017, 13:51) Да...   Jan 18 2017, 17:14
|- - jcxz   Цитата(sasha968m @ Jan 18 2017, 14:24) jc...   Jan 18 2017, 19:49
- - sasha968m   zltigo, спасибо! Уже скачал. Проект мой получи...   Jan 18 2017, 19:24
|- - jcxz   Цитата(sasha968m @ Jan 18 2017, 23:38) Я,...   Jan 19 2017, 08:19
- - sasha968m   Понял, благодарю.   Jan 19 2017, 10:20


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

 


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


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