В системе SOPC имеется таймер full_свойственный.
Инициализирую его и задаю функцию прерывания:
Код
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "sys/alt_irq.h"
#include "sys/alt_irq_entry.h"
#include "priv/alt_irq_table.h"
static void handle_systimer_interrupts(void* context, alt_u32 id) {
//СЮДА ПОПАДАЕТ ВСЕ_РАВНО
}
/* Инициализация системного таймера
*
*/
void init_sys_timer (unsigned short* img_page) {
IOWR_16DIRECT(SYS_CLK_TIMER_BASE, 0, 0x0000); //сбрасываем бит ТО
IOWR_16DIRECT(SYS_CLK_TIMER_BASE, 1, 0x0008); //останавливаем таймер
IOWR_16DIRECT(SYS_CLK_TIMER_BASE, 2, 0xffff); //максимальный период
IOWR_16DIRECT(SYS_CLK_TIMER_BASE, 3, 0xffff);
void* sys_timer_param;
alt_irq_register(SYS_CLK_TIMER_IRQ, sys_timer_param, handle_systimer_interrupts);
}
#include "altera_avalon_pio_regs.h"
#include "sys/alt_irq.h"
#include "sys/alt_irq_entry.h"
#include "priv/alt_irq_table.h"
static void handle_systimer_interrupts(void* context, alt_u32 id) {
//СЮДА ПОПАДАЕТ ВСЕ_РАВНО
}
/* Инициализация системного таймера
*
*/
void init_sys_timer (unsigned short* img_page) {
IOWR_16DIRECT(SYS_CLK_TIMER_BASE, 0, 0x0000); //сбрасываем бит ТО
IOWR_16DIRECT(SYS_CLK_TIMER_BASE, 1, 0x0008); //останавливаем таймер
IOWR_16DIRECT(SYS_CLK_TIMER_BASE, 2, 0xffff); //максимальный период
IOWR_16DIRECT(SYS_CLK_TIMER_BASE, 3, 0xffff);
void* sys_timer_param;
alt_irq_register(SYS_CLK_TIMER_IRQ, sys_timer_param, handle_systimer_interrupts);
}
Почему-то это дело попадает в прерывания не смотря на то что они запрещены, не пойму почему...
Что не так написал?
Вернее вообще виснет...