EasyManua.ls Logo

Altera DE1-SoC - DE1-SoC GPIO Expansion Headers

Altera DE1-SoC
45 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
DE1-SOC COMPUTER SYSTEM WITH NIOS II For Quartus II 15.0
#include "key_codes.h" // defines values for KEY0, KEY1, . . .
extern volatile int key_pressed, pattern, shift_dir;
/********************************************************************************
* Interval timer interrupt service routine
* Shifts a pattern being displayed on the HEX displays. The shift direction is determined
* by the external variable key_pressed.
********************************************************************************/
void interval_timer_isr( )
{
volatile int * interval_timer_ptr = (int *) 0xFF202000; // interval timer base address
volatile int * slider_switch_ptr = (int *) 0xFF200040; // SW base address
volatile int * HEX3_HEX0_ptr = (int *) 0xFF200020; // HEX3_HEX0 address
*(interval_timer_ptr) = 0; // clear the interrupt
*(HEX3_HEX0_ptr) = pattern; // display pattern on HEX3 ... HEX0
/* rotate the pattern shown on the HEX displays */
if (key_pressed == KEY0) // for KEY0 load a new pattern
pattern = *(slider_switch_ptr);
else if (key_pressed == KEY1)
shift_dir = RIGHT;
else if (key_pressed == KEY2)
shift_dir = LEFT;
else if (key_pressed == KEY3)
shift_dir = NONE;
key_pressed = NONE; // key press handled, so clear
if (shift_dir == LEFT)
if (pattern & 0x80000000)
pattern = (pattern << 1) | 1;
else
pattern = pattern << 1;
else if (shift_dir == RIGHT)
if (pattern & 0x00000001)
pattern = (pattern >> 1) | 0x80000000;
else
pattern = (pattern >> 1) & 0x7FFFFFFF;
// else don’t shift
return;
}
Figure 23. Interrupt service routine for the interval timer.
Altera Corporation - University Program
2015
29

Other manuals for Altera DE1-SoC

Related product manuals