Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include "includes.h"
- #include <alt_types.h>
- #include <altera_avalon_pio_regs.h>
- #include <io.h>
- #include <sys/alt_irq.h>
- #include <sys/alt_alarm.h>
- #define SW0 0x00000001
- #define SW1 0x00000002
- #define SW2 0x00000004
- #define SW3 0x00000008
- #define SW4 0x00000010
- #define SW5 0x00000020
- #define LEDG0 0x00000001
- #define LEDG1 0x00000002
- #define LEDG2 0x00000004
- #define LEDG3 0x00000008
- #define LEDG4 0x00000010
- #define LEDG5 0x00000020
- #define LEDR17 0x00020000
- #define SEGA 0b0000001
- #define SEGB 0b0000010
- #define SEGC 0b0000100
- #define SEGD 0b0001000
- #define SEGE 0b0010000
- #define SEGF 0b0100000
- #define SEGG 0b1000000
- #define HEX0 0b0111111 //SEGA|SEGB|SEGC|SEGD|SEGE|SEGF;
- #define HEX3 0b1001111 //SEGA|SEGB|SEGC|SEGD|SEGG;
- #define HEX4 0b1100110 //SEGF|SEGG|SEGB|SEGC;
- #define HEX5 0b1101101 //SEGA|SEGF|SEGG|SEGC|SEGD;
- #define HEX6 0b1111101 //SEGA|SEGF|SEGG|SEGC|SEGD|SEGE;
- #define HEX8 0b1111111 //SEGA|SEGB|SEGC|SEGD|SEGE|SEGF|SEGG;
- #define HEX9 0b1101111 //SEGA|SEGB|SEGC|SEGD|SEGF|SEGG;
- #define HEXE 0b1111001 //SEGA|SEGF|SEGG|SEGE|SEGD;
- #define HEXr 0b1010000 //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;
- /* Definition of Task Stacks */
- #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];
- /* 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 TASK5_PRIORITY 6
- OS_EVENT *SWBox1;
- /* Prints "Hello World" and sleeps for three seconds */
- void task1(void* pdata)
- {
- while (1)
- {
- printf("Hello from task1\n");
- int switches;
- switches = IORD(SW_SLIDERS_BASE, 0);
- int state;
- state = switches & (SW0|SW1|SW2|SW3|SW4|SW5);
- printf("State = %d\n", state);
- OSMboxPostOpt(SWBox1, &state, OS_POST_OPT_BROADCAST);
- if (state == 0)
- {
- IOWR(HEX_3_BASE, 0, 0);
- IOWR(LEDS_GREEN_BASE, 0, 0);
- IOWR(LEDS_RED_BASE, 0, 0);
- }
- else if (state != SW0 && state != SW1 && state != SW2 && state != SW3 && state != SW4 && state != SW5 && state < 64)
- {
- IOWR(LEDS_GREEN_BASE,0,0);
- IOWR(LEDS_RED_BASE,0,LEDR17);
- IOWR(HEX_3_BASE,0,((HEXE<<16) | (HEXr<<8) | HEXr));
- }
- if (state == SW1)
- {
- IOWR(LEDS_RED_BASE,0,0);
- IOWR(LEDS_GREEN_BASE,0,LEDG0);
- IOWR(HEX_3_BASE,0,((HEX3<<8)| HEX0));
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- /* Prints "Hello World" and sleeps for three seconds */
- void task2(void* pdata)
- {
- while (1)
- {
- INT8U err;
- printf("Hello from task2\n");
- int *state;
- state = OSMboxPend(SWBox1, 0, &err);
- printf("T=%d\n", *state);
- if (*state == 2)
- {
- IOWR(LEDS_RED_BASE,0,0);
- IOWR(LEDS_GREEN_BASE,0,LEDG1);
- IOWR(HEX_3_BASE,0,((HEX3<<8)| HEX5));
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- void task3(void* pdata)
- {
- while (1)
- {
- INT8U err;
- printf("Hello from task3\n");
- int *state;
- state = OSMboxPend(SWBox1, 0, &err);
- printf("T=%d\n", *state);
- if (*state == 4)
- {
- IOWR(LEDS_RED_BASE,0,0);
- IOWR(LEDS_GREEN_BASE,0,LEDG2);
- IOWR(HEX_3_BASE,0,((HEX4<<8)| HEX0));
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- void task4(void* pdata)
- {
- while (1)
- {
- INT8U err;
- printf("Hello from task4\n");
- int *state;
- state = OSMboxPend(SWBox1, 0, &err);
- printf("T=%d\n", *state);
- if (*state == 8)
- {
- IOWR(LEDS_RED_BASE,0,0);
- IOWR(LEDS_GREEN_BASE,0,LEDG3);
- IOWR(HEX_3_BASE,0,((HEX6<<8)| HEX0));
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- void task5(void* pdata)
- {
- while (1)
- {
- INT8U err;
- printf("Hello from task5\n");
- int *state;
- state = OSMboxPend(SWBox1, 0, &err);
- printf("T=%d\n", *state);
- if (*state == 16)
- {
- IOWR(LEDS_RED_BASE,0,0);
- IOWR(LEDS_GREEN_BASE,0,LEDG4);
- IOWR(HEX_3_BASE,0,((HEX8<<8)| HEX0));
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- void task6(void* pdata)
- {
- while (1)
- {
- INT8U err;
- printf("Hello from task6\n");
- int *state;
- state = OSMboxPend(SWBox1, 0, &err);
- printf("T=%d\n", *state);
- if (*state == 32)
- {
- IOWR(LEDS_RED_BASE,0,0);
- IOWR(LEDS_GREEN_BASE,0,LEDG5);
- IOWR(HEX_3_BASE,0,((HEX9<<8)| HEX0));
- }
- OSTimeDlyHMSM(0, 0, 0, 10);
- }
- }
- /* 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);
- OSStart();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement