Komponenta řadiče přerušení je navržena pro generování přerušení z FPGA do MCU. Je možné ji využít i bez bez nutnosti komunikace s MCU. Pro účely použití přerušení generovaných FPGA v programech běžících na MCU je navržený software pro zpracování příchozího přerušení z implementovaného řadiče. Řadič přerušení komunikuje s programem v MCU pomocí rozhraní SPI.
Software definuje základní makra a funkce pro použití a obsluhu přerušení z MCU. Jejich definici najdete v souboru mcu/libs/irq/fpga_interrupt.h a implementaci v souboru mcu/libs/irq/fpga_interrupt.c.
Navržený software předpokládá jeho použití na portu P1. Pokud budete chtít použít port P2, budete si muset napsat funkci podobnou fpga_interrupt_init()
, kterou obsloužíte přerušení z portu 2 pomocí PORT2_VECTOR
. (Porty jsou v terminologii MSP430 sady vyvodu z pouzdra.)
Definice základních maker a funkcí, pro použití přerušení:
BASE_ADDR_INTERRUPT
Bázová adresa pro dekodér SPI připojený k řadiči přerušení.
MCU_INTERRUPT_PINS
Piny, na kterých je povolené přerušení z FPGA v MCU.
inline int fpga_interrupt_init(unsigned char bits)
Inicializační funkce pro přerušovací systém. Parametr obsahuje masku přerušení.
set_interrupt_mask_fpga(interrupt_vector)
Makro, které nastaví masku přerušení v řadiči v FPGA.
read_interrupt_vector_from_fpga()
Příjem informací o vyvolaném přerušení.
void inline enable_interrupt_bits(unsigned char bits)
Funkce povolí přerušení podle parametru tak, že pro bity které mají hodnotu '1' bude přerušení povolené. U ostatních bitů, které jsou nastavené na hodnotu '0', se aktuální nastavení nezmění.
void inline disable_interrupt_bits(unsigned char bits)
Funkce zakáže přerušení podle parametru tak, že pro bity které mají hodnotu '1' bude přerušení zakázané. U ostatních bitů, které jsou nastavené na hodnotu '0', se aktuální nastavení nezmění.
void fpga_interrupt_handler(unsigned char bits)
Tuto funkci je nutné definovat ve vlastním programu. Ovladač přerušení pro MCU tuto funkci volá při příchozím přerušení. Parametrem funkce je 8-bitové číslo, definující stav identických přerušení z řadiče přerušení v FPGA. Bity obsahující 1 značí, které přerušení bylo vyvoláno. Vlastní rozdělení priorit přerušení a jejich obsluha se řeší právě v této funkci.