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

 
 
> Помоните с настройкой переферии AT91SAM7A1
denwill
сообщение Feb 7 2007, 14:03
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 21-03-06
Пользователь №: 15 438



Доброго всем времени суток!

Суть проблемы такова: в IAR-e пытаюсь настроить таймер ST0(simple timer). Хочу чтобы от него срабатывало прерывание через период T. Насколько я понял из примеров, после срабатывания функции стартапа (из Cstartup_SAM7.с) нужно настроить GIC (Generic Interrupt Controller) и ST0 (Simple Timer 0).

Делаю это так (main.c):

#include "board.h"

CSP_GIC_T *const GIC = ((CSP_GIC_T*)GIC_BASE_ADDRESS); /* Generic Interrupt Controller*/
CSP_ST_T *const ST0 = ((CSP_ST_T*)ST0_BASE_ADDRESS); /* Simple Timer 1 */

int Count = 0;

__irq __arm void IRQ_Handler(void) {
Count++;
};

void Init_ST0(void) {
CSP_ST_SET_DCR( ST0, ST );
CSP_ST_SET_IDR( ST0, CHEND0|CHDISS0|CHLD0|CHEND1|CHDISS1|CHLD1 );
CSP_ST_SET_CR( ST0, CHDIS0|CHDIS1 );

CSP_ST_SET_CSR( ST0, CHEND0|CHDISS0|CHLD0|CHEND1|CHDISS1|CHLD1 );
CSP_ST_CHANNEL_SET_PR( ST0, 0, SELECTCLK_SYS|ST_PRESCALAR(0x0F)|ST_SYSCAL(0x00FF)|0x80 );
CSP_ST_CHANNEL_SET_CT( ST0, 0, 100 );

CSP_ST_SET_CR( ST0, SWRST|CHEND0 );
CSP_ST_SET_IDR( ST0, CHEND0 );
CSP_ST_SET_ECR( ST0, ST );
};

void Init_GIC(void) {
CSP_GIC_SET_IDCR( GIC, INT_22 );
CSP_GIC_SET_SVR( GIC, INT_22, (unsigned long)IRQ_Handler);
CSP_GIC_SET_SMR( GIC, INT_22, POSITIVE_EDGE_TRIGGERED | PRIOR_5 );
CSP_GIC_SET_ICCR( GIC, INT_22);
CSP_GIC_SET_IECR( GIC, INT_22);
CSP_GIC_SET_ISCR( GIC, INT_22);
};

int main()
{
Init_GIC();
Init_ST0();

while(Count < 100) {
};
return 0;
}

Подскажите пожалуйста!!!!!!!!!!! инфы не нашел по этому вопросу никакой!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:16
Рейтинг@Mail.ru


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