Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * "Hello World" example.
- *
- * This example prints 'Hello from Nios II' to the STDOUT stream. It runs on
- * the Nios II 'standard', 'full_featured', 'fast', and 'low_cost' example
- * designs. It runs with or without the MicroC/OS-II RTOS and requires a STDOUT
- * device in your system's hardware.
- * The memory footprint of this hosted application is ~69 kbytes by default
- * using the standard reference design.
- *
- * For a reduced footprint version of this template, and an explanation of how
- * to reduce the memory footprint for a given application, see the
- * "small_hello_world" template.
- *
- */
- #include <stdio.h>
- #include <io.h>
- #include <system.h>
- //#include "alt_types.h"
- #include "sys/alt_irq.h"
- #include <unistd.h>
- #include "sys/alt_alarm.h"
- /* Przełączniki */
- #define SW0 0x00000001
- #define SW1 0x00000002
- #define SW2 0x00000004
- #define SW3 0x00000008
- #define SW4 0x00000010
- #define SW5 0x00000020
- #define SW6 0x00000040
- #define SW7 0x00000080
- #define SW8 0x00000100
- #define SW9 0x00000200
- #define SW10 0x00000400
- #define SW11 0x00000800
- #define SW12 0x00001000
- #define SW13 0x00002000
- #define SW14 0x00004000
- #define SW15 0x00008000
- #define SW16 0x00010000
- #define SW17 0x00020000
- /* PushButtony */
- #define KEY1 0x00000002
- #define KEY2 0x00000004
- #define KEY3 0x00000008
- /* Ledy */
- #define LED0 0x00000001
- #define LED1 0x00000002
- #define LED2 0x00000004
- #define LED3 0x00000008
- #define LED4 0x00000010
- #define LED5 0x00000020
- #define LED6 0x00000040
- #define LED7 0x00000080
- #define LED8 0x00000100
- #define LED9 0x00000200
- #define LED10 0x00000400
- #define LED11 0x00000800
- #define LED12 0x00001000
- #define LED13 0x00002000
- #define LED14 0x00004000
- #define LED15 0x00008000
- #define LED16 0x00010000
- #define LED17 0x00020000
- /* Segmenty HEX */
- #define SEGA 1
- #define SEGB 2
- #define SEGC 4
- #define SEGD 8
- #define SEGE 16
- #define SEGF 32
- #define SEGG 64
- /* Litery i cyfry z hex 7 segmentowych */
- #define HEX0 (SEGA|SEGB|SEGC|SEGD|SEGE|SEGF)
- #define HEX1 (SEGB|SEGC)
- #define HEX2 (SEGA|SEGB|SEGG|SEGE|SEGD)
- #define HEX3 (SEGA|SEGB|SEGC|SEGD|SEGG)
- #define HEX4 (SEGF|SEGG|SEGB|SEGC)
- #define HEX5 (SEGA|SEGF|SEGG|SEGC|SEGD)
- #define HEX6 (SEGA|SEGF|SEGG|SEGC|SEGD|SEGE)
- #define HEX7 (SEGA|SEGB|SEGC)
- #define HEX8 (SEGA|SEGB|SEGC|SEGD|SEGE|SEGF|SEGG)
- #define HEX9 (SEGA|SEGB|SEGC|SEGD|SEGF|SEGG)
- #define HEXE (SEGA|SEGF|SEGG|SEGE|SEGD)
- #define HEXr (SEGE|SEGG)
- #define HEXA (SEGA|SEGB|SEGC|SEGE|SEGF|SEGG)
- #define HEXF (SEGA|SEGE|SEGF|SEGG)
- #define HEXC (SEGA|SEGE|SEGF|SEGD)
- #define HEXD (SEGB|SEGC|SEGD|SEGE|SEGG)
- struct interrupt_data {
- volatile int* leds_addr;
- volatile int* sliders_addr;
- volatile int* hex_addr;
- };
- /*static void handle_sliders_interrupt(struct interrupt_data *data)
- {
- }*/
- int main() {
- volatile int *leds = (int *) LEDS_RED_BASE;
- volatile int *sliders = (int *) SW_SLIDERS_BASE;
- //volatile int *hex = (int *)HEX_0_BASE;
- IOWR(LEDS_RED_BASE, 0, 0x00);
- //IOWR(HEX_0_BASE, 0, 0x00);
- struct interrupt_data data;
- data.leds_addr = leds;
- data.sliders_addr = sliders;
- //data.hex_addr = hex;
- int SW1on, SW1off, SW2on, SW2off, SW3on, SW3off, SW4on, SW4off, SW5on,
- SW5off;
- SW1on = SW1off = SW2on = SW2off = SW3on = SW3off = SW4on = SW4off = SW5on =
- SW5off = 0;
- int SWon, lastCase;
- // IOWR_ALTERA_AVALON_PIO_IRQ_MASK(SW_SLIDERS_BASE, 0xff);
- // alt_ic_isr_register(SW_SLIDERS_IRQ_INTERRUPT_CONTROLLER_ID, SW_SLIDERS_IRQ, handle_sliders_interrupt, &data, 0x0);
- // alt_ic_irq_enable(SW_SLIDERS_IRQ_INTERRUPT_CONTROLLER_ID, SW_SLIDERS_IRQ);
- while (1) {
- volatile int sw_state = IORD(data.sliders_addr, 0);
- switch (sw_state) {
- case (0):
- if ((alt_nticks() - SWon >= 2 * alt_ticks_per_second())
- && lastCase != 6) {
- IOWR(LEDS_RED_BASE, 0, 0x00);
- } else if ((alt_nticks() - SWon >= 3 * alt_ticks_per_second())
- && lastCase == 6) {
- IOWR(LEDS_RED_BASE, 0, 0x00);
- }
- if (alt_nticks() - SWon >= 1 * alt_ticks_per_second()) {
- IOWR(data.hex_addr, 0, 0x00);
- }
- SW1off = alt_nticks();
- SW5off = alt_nticks();
- SW2off = alt_nticks();
- SW3off = alt_nticks();
- SW4off = alt_nticks();
- IOWR(data.hex_addr, 1, 0x00);
- IOWR(data.hex_addr, 2, 0x00);
- IOWR(data.hex_addr, 3, 0x00);
- lastCase = 0;
- break;
- case (1):
- if (alt_nticks() - SW1off >= 1 * alt_ticks_per_second()) {
- IOWR(data.leds_addr, 0, 0x01);
- }
- if (alt_nticks() - SW1off >= 2 * alt_ticks_per_second()) {
- IOWR(data.hex_addr, 0, 0x06);
- }
- SWon = alt_nticks();
- IOWR(data.hex_addr, 1, 0x00);
- IOWR(data.hex_addr, 2, 0x00);
- IOWR(data.hex_addr, 3, 0x00);
- lastCase = 1;
- break;
- case (2):
- if (alt_nticks() - SW2off >= 1 * alt_ticks_per_second()) {
- IOWR(data.leds_addr, 0, 0x02);
- }
- if (alt_nticks() - SW2off >= 2 * alt_ticks_per_second()) {
- //IOWR(data.hex_addr, 0, TWO);
- }
- SWon = alt_nticks();
- IOWR(data.hex_addr, 1, 0x00);
- IOWR(data.hex_addr, 2, 0x00);
- IOWR(data.hex_addr, 3, 0x00);
- lastCase = 2;
- break;
- case (4):
- if (alt_nticks() - SW3off >= 1 * alt_ticks_per_second()) {
- IOWR(data.leds_addr, 0, 0x04);
- }
- if (alt_nticks() - SW3off >= 2 * alt_ticks_per_second()) {
- //IOWR(data.hex_addr, 0, THREE);
- }
- SWon = alt_nticks();
- IOWR(data.hex_addr, 1, 0x00);
- IOWR(data.hex_addr, 2, 0x00);
- IOWR(data.hex_addr, 3, 0x00);
- lastCase = 3;
- break;
- case (8):
- if (alt_nticks() - SW4off >= 1 * alt_ticks_per_second()) {
- IOWR(data.leds_addr, 0, 0x08);
- }
- if (alt_nticks() - SW4off >= 2 * alt_ticks_per_second()) {
- //IOWR(data.hex_addr, 0, FOUR);
- }
- SWon = alt_nticks();
- IOWR(data.hex_addr, 1, 0x00);
- IOWR(data.hex_addr, 2, 0x00);
- IOWR(data.hex_addr, 3, 0x00);
- lastCase = 4;
- break;
- case (16):
- if (alt_nticks() - SW5off >= 1 * alt_ticks_per_second()) {
- IOWR(data.leds_addr, 0, 0x10);
- }
- if (alt_nticks() - SW5off >= 2 * alt_ticks_per_second()) {
- //IOWR(data.hex_addr, 0, FIVE);
- }
- SWon = alt_nticks();
- IOWR(data.hex_addr, 1, 0x00);
- IOWR(data.hex_addr, 2, 0x00);
- IOWR(data.hex_addr, 3, 0x00);
- lastCase = 5;
- break;
- case (32):
- IOWR(data.leds_addr, 0, 0x20);
- break;
- default:
- if (alt_nticks() - SWon >= 1 * alt_ticks_per_second()) {
- IOWR(data.leds_addr, 0, 0x20);
- }
- if (alt_nticks() - SWon >= 3 * alt_ticks_per_second()) {
- //IOWR(data.hex_addr, 0, R);
- //IOWR(data.hex_addr, 1, R);
- //IOWR(data.hex_addr, 2, E);
- lastCase = 6;
- }
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement