Код
#include <stdio.h>
#include "io.h"
#include "system.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
void chu_chu_subprog(void* context, alt_32 id);
void* context;
alt_32 id = 0;
alt_u32 a = 0;
int main()
{
alt_irq_register(CHU_CHU_IRQ, context, (void*)chu_chu_subprog); // указываем ф-цию обработки прерывания
while(1)
{
IOWR(CHU_CHU_BASE, 0, 6); // данные в my_core
IOWR(CHU_CHU_BASE, 1, 7); // данные в my_core
IOWR(CHU_CHU_BASE, 3, 1); // маска прерывания в my_core
IOWR(CHU_CHU_BASE, 2, 1); // запуск my_core на выполнение
a = IORD(CHU_CHU_BASE, 4); // читаем данные с ядра
IOWR(LED_BASE, 0, a); // выводим результат работы ядра на светодиоды
}
return 0;
}
void chu_chu_subprog(void* context, alt_32 id) // если произошло прерывание выполнить ф-цию
{
while(1)
{IOWR(LED_BASE, 0, 0x55);}
return;
}
#include "io.h"
#include "system.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
void chu_chu_subprog(void* context, alt_32 id);
void* context;
alt_32 id = 0;
alt_u32 a = 0;
int main()
{
alt_irq_register(CHU_CHU_IRQ, context, (void*)chu_chu_subprog); // указываем ф-цию обработки прерывания
while(1)
{
IOWR(CHU_CHU_BASE, 0, 6); // данные в my_core
IOWR(CHU_CHU_BASE, 1, 7); // данные в my_core
IOWR(CHU_CHU_BASE, 3, 1); // маска прерывания в my_core
IOWR(CHU_CHU_BASE, 2, 1); // запуск my_core на выполнение
a = IORD(CHU_CHU_BASE, 4); // читаем данные с ядра
IOWR(LED_BASE, 0, a); // выводим результат работы ядра на светодиоды
}
return 0;
}
void chu_chu_subprog(void* context, alt_32 id) // если произошло прерывание выполнить ф-цию
{
while(1)
{IOWR(LED_BASE, 0, 0x55);}
return;
}