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

 
 
> Интервальный таймер PIT SAM7S128
Anton_1000
сообщение May 17 2009, 07:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 13-01-09
Из: г.Севастополь
Пользователь №: 43 288



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

КОД:
// обработчик прерываний от интервального таймера PIT
void PIT_handler (void)
{ unsigned int status;
//сброс прывания от PIT
status=AT91C_BASE_PITC->PITC_PIVR;
status=status;
// действия при прерывании
AT91F_US_PutChar ( AT91C_BASE_US0, 'P');
}

// ИНИЦИАЛИЗАЦИЯ
AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC,AT91C_ID_SYS,6,AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE,
PIT_handler );
AT91F_PITInit ( AT91C_BASE_PITC,100,18432000 );
AT91F_PITEnableInt ( AT91C_BASE_PITC );
AT91F_AIC_EnableIt ( AT91C_BASE_AIC, AT91C_ID_SYS );
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Anton_1000
сообщение May 17 2009, 10:52
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 13-01-09
Из: г.Севастополь
Пользователь №: 43 288



Явного определения этого регистра в программе нет.
Правильно ли понимаю, что ветвление определяет код в файле SAM7.s компилятора КЕЙЛ.
Vectors LDR PC,Reset_Addr
LDR PC,Undef_Addr
LDR PC,SWI_Addr
LDR PC,PAbt_Addr
LDR PC,DAbt_Addr
NOP ; Reserved Vector
; LDR PC,IRQ_Addr
LDR PC,[PC,#-0xF20] ; Vector From AIC_IVR
; LDR PC,FIQ_Addr
LDR PC,[PC,#-0xF20] ; Vector From AIC_FVR

Reset_Addr DCD Reset_Handler
Undef_Addr DCD Undef_Handler
SWI_Addr DCD SWI_Handler
PAbt_Addr DCD PAbt_Handler
DAbt_Addr DCD DAbt_Handler
DCD 0 ; Reserved Address
IRQ_Addr DCD IRQ_Handler
FIQ_Addr DCD FIQ_Handler

Undef_Handler B Undef_Handler
SWI_Handler B SWI_Handler
PAbt_Handler B PAbt_Handler
DAbt_Handler B DAbt_Handler
IRQ_Handler B IRQ_Handler
FIQ_Handler B FIQ_Handler
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 17 2009, 11:29
Сообщение #3


Гуру
******

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



Цитата(Anton_1000 @ May 17 2009, 13:52) *
Явного определения этого регистра в программе нет.
Как это нет? А вот это: LDR PC,[PC,#-0xF20] ; Vector From AIC_IVR
Из этой строки следует, что обработчик у вас описан неправильно: Он должен быть с квалификатором __irq или подобным (поищите в документации на Кейла), и, кроме того, он должен заканчиваться записью в AIC_EIOCR.


--------------------
На любой вопрос даю любой ответ
"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



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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 04:37
Рейтинг@Mail.ru


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