Čeština / English
Login

Firmware / Ovladač řadiče přerušení pro MCU

Autor: Karel Slaný ()
Update: 26.3.2009

1. Implementace ovladače řadiče přerušení v MCU

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.

Zobrazeno: 2752x Naposledy: 30.9.2023 17:08:39