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 "sys/alt_irq.h"
- #include <unistd.h>
- #include "sys/alt_alarm.h"
- #include "includes.h"
- #include "altera_up_avalon_parallel_port.h"
- #include "sys/alt_timestamp.h"
- #include "alt_types.h"
- struct interrupt_data {
- volatile int* leds_addr;
- volatile int* sliders_addr;
- volatile int* hex_addr;
- };
- /* 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)
- typedef enum POZIOM_TEMP {
- POZIOM_0 = 0,
- POZIOM_1 = 2,
- POZIOM_2 = 4,
- POZIOM_3 = 8,
- POZIOM_4 = 16,
- POZIOM_5 = 32,
- POZIOM_6 = 64,
- POZIOM_7 = 128,
- POZIOM_8 = 256,
- POZIOM_9 = 512,
- POZIOM_10 = 1024,
- } TEMP;
- #define TASK_STACKSIZE 2048;
- OS_STK task1_stk[TASK_STACKSIZE];
- OS_STK task2_stk[TASK_STACKSIZE];
- OS_STK task3_stk[TASK_STACKSIZE];
- OS_STK task4_stk[TASK_STACKSIZE];
- OS_STK task5_stk[TASK_STACKSIZE];
- OS_STK task6_stk[TASK_STACKSIZE];
- OS_STK task7_stk[TASK_STACKSIZE];
- OS_EVENT *SWBox1;
- /* Definition of Task Priorities */
- #define TASK1_PRIORITY 1;
- #define TASK2_PRIORITY 2;
- #define TASK3_PRIORITY 3;
- #define TASK4_PRIORITY 4;
- #define TASK5_PRIORITY 5;
- #define TASK6_PRIORITY 6;
- #define TASK7_PRIORITY 7;
- void VGA_text (int, int, char *);
- /* Prints "Hello World" and sleeps for three seconds */
- void task1(void* pdata) {
- while (1) {
- printf("Hello from task 1\n");
- int sw;
- sw = IORD(SW_SLIDERS_BASE, 0);
- sw = sw & (SW0 | SW1 | SW2 | SW3 | SW4 | SW5 | SW6);
- printf("Slider = %d\n", sw);
- OSMboxPostOpt(SWBox1, &sw, OS_POST_OPT_BROADCAST);
- if (sw == 0) {
- IOWR(HEX_3_BASE, 0, 0);
- IOWR(LEDS_RED_BASE, 0, 0);
- } else if (sw != SW0 && sw != SW1 && sw != SW2 && sw != SW3 && sw != SW4
- && sw != SW5 && sw != SW6 && sw < 128) {
- IOWR(HEX_3_BASE, 0, ((HEXE<<16) | (HEXr<<8) | HEXr));
- IOWR(LEDS_RED_BASE, 0, LED17);
- }
- if (sw == SW0) {
- IOWR(HEX_3_BASE, 0, HEX1);
- IOWR(LEDS_RED_BASE, 0, LED0);
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- /* Prints "Hello World" and sleeps for three seconds */
- void task2(void* pdata) {
- while (1) {
- INT8U err;
- printf("Hello from task 2\n");
- int *sw;
- sw = OSMboxPend(SWBox1, 0, &err);
- printf("T=%d\n", *sw);
- if (*sw == SW1) {
- IOWR(HEX_3_BASE, 0, HEX2);
- IOWR(LEDS_RED_BASE, 0, LED1);
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- void task3(void* pdata) {
- while (1) {
- INT8U err;
- printf("Hello from task 3\n");
- int *sw;
- sw = OSMboxPend(SWBox1, 0, &err);
- printf("T=%d\n", *sw);
- if (*sw == SW2) {
- IOWR(HEX_3_BASE, 0, HEX3);
- IOWR(LEDS_RED_BASE, 0, LED2);
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- void task4(void* pdata) {
- while (1) {
- INT8U err;
- printf("Hello from task 4\n");
- int *sw;
- sw = OSMboxPend(SWBox1, 0, &err);
- printf("T=%d\n", *sw);
- if (*sw == SW3) {
- IOWR(HEX_3_BASE, 0, HEX4);
- IOWR(LEDS_RED_BASE, 0, LED3);
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- void task5(void* pdata) {
- while (1) {
- INT8U err;
- printf("Hello from task 5\n");
- int *sw;
- sw = OSMboxPend(SWBox1, 0, &err);
- printf("T=%d\n", *sw);
- if (*sw == SW4) {
- IOWR(HEX_3_BASE, 0, HEX5);
- IOWR(LEDS_RED_BASE, 0, LED4);
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- void task6(void* pdata) {
- while (1) {
- INT8U err;
- printf("Hello from task 6\n");
- int *sw;
- sw = OSMboxPend(SWBox1, 0, &err);
- printf("T=%d\n", *sw);
- if (*sw == SW5) {
- IOWR(HEX_3_BASE, 0, HEX6);
- IOWR(LEDS_RED_BASE, 0, LED5);
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- void task7(void* pdata) {
- while (1) {
- INT8U err;
- printf("Hello from task 7\n");
- int *sw;
- sw = OSMboxPend(SWBox1, 0, &err);
- printf("T=%d\n", *sw);
- if (*sw == SW5) {
- IOWR(HEX_3_BASE, 0, HEX7);
- IOWR(LEDS_RED_BASE, 0, LED6);
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- // IOWR(HEX_3_BASE, 0, ((HEX9<<8)| HEX0));
- /* The main function creates two task and starts multi-tasking */
- int main(void) {
- SWBox1 = OSMboxCreate((void*) 0);
- OSTaskCreateExt(task1,
- NULL, (void *) &task1_stk[TASK_STACKSIZE - 1],
- TASK1_PRIORITY,
- TASK1_PRIORITY, task1_stk,
- TASK_STACKSIZE,
- NULL, 0);
- OSTaskCreateExt(task2,
- NULL, (void *) &task2_stk[TASK_STACKSIZE - 1],
- TASK2_PRIORITY,
- TASK2_PRIORITY, task2_stk,
- TASK_STACKSIZE,
- NULL, 0);
- OSTaskCreateExt(task3,
- NULL, (void *) &task3_stk[TASK_STACKSIZE - 1],
- TASK3_PRIORITY,
- TASK3_PRIORITY, task3_stk,
- TASK_STACKSIZE,
- NULL, 0);
- OSTaskCreateExt(task4,
- NULL, (void *) &task4_stk[TASK_STACKSIZE - 1],
- TASK4_PRIORITY,
- TASK4_PRIORITY, task4_stk,
- TASK_STACKSIZE,
- NULL, 0);
- OSTaskCreateExt(task5,
- NULL, (void *) &task5_stk[TASK_STACKSIZE - 1],
- TASK5_PRIORITY,
- TASK5_PRIORITY, task5_stk,
- TASK_STACKSIZE,
- NULL, 0);
- OSTaskCreateExt(task6,
- NULL, (void *) &task6_stk[TASK_STACKSIZE - 1],
- TASK6_PRIORITY,
- TASK6_PRIORITY, task6_stk,
- TASK_STACKSIZE,
- NULL, 0);
- OSTaskCreateExt(task7,
- NULL, (void *) &task7_stk[TASK_STACKSIZE - 1],
- TASK7_PRIORITY,
- TASK7_PRIORITY, task7_stk,
- TASK_STACKSIZE,
- NULL, 0);
- OSStart();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement