Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по Multi200
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Grave711
Привет.
Такой вопрос. Работаю под Multi2000 через Wiggler. Процессор LPC2129.
Код размещается пока в ОЗУ. При пошаговой и автоматической отладке простых программ все нормально. А вот попытка работать с прерываниями ничего не дает.
Основная программа просто вызывает инициализацию и зацикливается.

____________________________________________________________________
Инициализация:

#include <lpc21xx.h>
void init(void)
{
PLLCON = 1; // Enable the PLL
PLLFEED = 0xAA;
PLLFEED = 0x55;
PLLCFG = 0x02; //M=010(x3),P=0(/1) PLLfreq = 60 Mhz, CCLK = 60 Mhz
PLLFEED = 0xAA;
PLLFEED = 0x55;
while(!(PLLSTAT & 0x0400)); // Wait for PLL to lock
VPBDIV=0x02; // 60/2=30 Mhz
PLLCON = 3; // Enable & connct the PLL
PLLFEED = 0xAA;
PLLFEED = 0x55;
IODIR0=1;


T0MR0=3000; // Match register value
T0MCR=0x03;
T0TCR=1; //Counter are enabled for counting
T0IR=0x0001; //Interrupt flag for match channel 0

VICVectAddr0 = (unsigned long) Timer_int; // set interrupt vector in 0
VICVectCntl0 = 0x24; // use it for Timer 0 Interrupt
VICIntEnable = 0x00000010; // Enable Timer0 Interrupt
________________________________________________________________________

Код обработчика прерывания такой:

#pragma ghs interrupt
void irq_handler(void)
{
void (*interrupt_function)();
unsigned int vector;

vector = VICVectAddr; // Get interrupt vector.
interrupt_function = (void(*)())vector;
(*interrupt_function)(); // Call vectored interrupt function.
VICVectAddr = 0; // Clear interrupt in VIC.
}
________________________________________________________________
По этому коду вызывается подпрограмма Timer_int, которая дергает ногой:

void Timer_int(void)
{
if (IOPIN0&0x01) IOCLR0=0x01;
else IOSET0=0x01;

T0IR = 1; // Clear interrupt flag
VICVectAddr = 0; // Acknowledge Interrupt
}
_________________________________________________________________
jojo
Вы бы дали ссылку на весь проект. Есть много мест, где может поломаться.
Grave711
Может вам на ящик скинуть?
jojo
В форум можно прикрепить в виде архива. Мне интересно посмотреть на вектора прерываний.
И, если правильно помню, еще remap прерывательных адресов должен быть на начало ОЗУ.
Grave711
У меня не хватает прав добавить файл.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.