OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [PPC405_Xilinx_Virtex4_GCC/] [RTOSDemo/] [partest/] [partest.c] - Blame information for rev 866

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 586 jeremybenn
/*
2
    FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
3
 
4
    ***************************************************************************
5
    *                                                                         *
6
    * If you are:                                                             *
7
    *                                                                         *
8
    *    + New to FreeRTOS,                                                   *
9
    *    + Wanting to learn FreeRTOS or multitasking in general quickly       *
10
    *    + Looking for basic training,                                        *
11
    *    + Wanting to improve your FreeRTOS skills and productivity           *
12
    *                                                                         *
13
    * then take a look at the FreeRTOS books - available as PDF or paperback  *
14
    *                                                                         *
15
    *        "Using the FreeRTOS Real Time Kernel - a Practical Guide"        *
16
    *                  http://www.FreeRTOS.org/Documentation                  *
17
    *                                                                         *
18
    * A pdf reference manual is also available.  Both are usually delivered   *
19
    * to your inbox within 20 minutes to two hours when purchased between 8am *
20
    * and 8pm GMT (although please allow up to 24 hours in case of            *
21
    * exceptional circumstances).  Thank you for your support!                *
22
    *                                                                         *
23
    ***************************************************************************
24
 
25
    This file is part of the FreeRTOS distribution.
26
 
27
    FreeRTOS is free software; you can redistribute it and/or modify it under
28
    the terms of the GNU General Public License (version 2) as published by the
29
    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
30
    ***NOTE*** The exception to the GPL is included to allow you to distribute
31
    a combined work that includes FreeRTOS without being obliged to provide the
32
    source code for proprietary components outside of the FreeRTOS kernel.
33
    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
34
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
35
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
36
    more details. You should have received a copy of the GNU General Public
37
    License and the FreeRTOS license exception along with FreeRTOS; if not it
38
    can be viewed here: http://www.freertos.org/a00114.html and also obtained
39
    by writing to Richard Barry, contact details for whom are available on the
40
    FreeRTOS WEB site.
41
 
42
    1 tab == 4 spaces!
43
 
44
    http://www.FreeRTOS.org - Documentation, latest information, license and
45
    contact details.
46
 
47
    http://www.SafeRTOS.com - A version that is certified for use in safety
48
    critical systems.
49
 
50
    http://www.OpenRTOS.com - Commercial support, development, porting,
51
    licensing and training services.
52
*/
53
 
54
 
55
/* Scheduler includes. */
56
#include "FreeRTOS.h"
57
 
58
/* Demo application includes. */
59
#include "partest.h"
60
 
61
/* Library includes. */
62
#include "xparameters.h"
63
#include "xgpio_l.h"
64
 
65
/* Misc hardware specific definitions. */
66
#define partstALL_AS_OUTPUT     0x00
67
#define partstCHANNEL_1         0x01
68
#define partstMAX_4BIT_LED      0x03
69
 
70
/* The outputs are split into two IO sections, these variables maintain the
71
current value of either section. */
72
static unsigned portBASE_TYPE uxCurrentOutput4Bit, uxCurrentOutput5Bit;
73
 
74
/*-----------------------------------------------------------*/
75
/*
76
 * Setup the IO for the LED outputs.
77
 */
78
void vParTestInitialise( void )
79
{
80
        /* Set both sets of LED's on the demo board to outputs. */
81
        XGpio_mSetDataDirection( XPAR_LEDS_4BIT_BASEADDR, partstCHANNEL_1, partstALL_AS_OUTPUT );
82
        XGpio_mSetDataDirection( XPAR_LEDS_POSITIONS_BASEADDR, partstCHANNEL_1, partstALL_AS_OUTPUT );
83
 
84
        /* Start with all outputs off. */
85
        uxCurrentOutput4Bit = 0;
86
        XGpio_mSetDataReg( XPAR_LEDS_4BIT_BASEADDR, partstCHANNEL_1, 0x00 );
87
        uxCurrentOutput5Bit = 0;
88
        XGpio_mSetDataReg( XPAR_LEDS_POSITIONS_BASEADDR, partstCHANNEL_1, 0x00 );
89
}
90
/*-----------------------------------------------------------*/
91
 
92
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
93
{
94
unsigned portBASE_TYPE uxBaseAddress, *puxCurrentValue;
95
 
96
        portENTER_CRITICAL();
97
        {
98
                /* Which IO section does the LED being set/cleared belong to?  The
99
                4 bit or 5 bit outputs? */
100
                if( uxLED <= partstMAX_4BIT_LED )
101
                {
102
                        uxBaseAddress = XPAR_LEDS_4BIT_BASEADDR;
103
                        puxCurrentValue = &uxCurrentOutput5Bit;
104
                }
105
                else
106
                {
107
                        uxBaseAddress = XPAR_LEDS_POSITIONS_BASEADDR;
108
                        puxCurrentValue = &uxCurrentOutput4Bit;
109
                        uxLED -= partstMAX_4BIT_LED;
110
                }
111
 
112
                /* Setup the bit mask accordingly. */
113
                uxLED = 0x01 << uxLED;
114
 
115
                /* Maintain the current output value. */
116
                if( xValue )
117
                {
118
                        *puxCurrentValue |= uxLED;
119
                }
120
                else
121
                {
122
                        *puxCurrentValue &= ~uxLED;
123
                }
124
 
125
                /* Write the value to the port. */
126
                XGpio_mSetDataReg( uxBaseAddress, partstCHANNEL_1, *puxCurrentValue );
127
        }
128
        portEXIT_CRITICAL();
129
}
130
/*-----------------------------------------------------------*/
131
 
132
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
133
{
134
unsigned portBASE_TYPE uxBaseAddress, *puxCurrentValue;
135
 
136
        portENTER_CRITICAL();
137
        {
138
                /* Which IO section does the LED being toggled belong to?  The
139
                4 bit or 5 bit outputs? */
140
                if( uxLED <= partstMAX_4BIT_LED )
141
                {
142
 
143
                        uxBaseAddress = XPAR_LEDS_4BIT_BASEADDR;
144
                        puxCurrentValue = &uxCurrentOutput5Bit;
145
                }
146
                else
147
                {
148
                        uxBaseAddress = XPAR_LEDS_POSITIONS_BASEADDR;
149
                        puxCurrentValue = &uxCurrentOutput4Bit;
150
                        uxLED -= partstMAX_4BIT_LED;
151
                }
152
 
153
                /* Setup the bit mask accordingly. */
154
                uxLED = 0x01 << uxLED;
155
 
156
                /* Maintain the current output value. */
157
                if( *puxCurrentValue & uxLED )
158
                {
159
                        *puxCurrentValue &= ~uxLED;
160
                }
161
                else
162
                {
163
                        *puxCurrentValue |= uxLED;
164
                }
165
 
166
                /* Write the value to the port. */
167
                XGpio_mSetDataReg(uxBaseAddress, partstCHANNEL_1, *puxCurrentValue );
168
        }
169
        portEXIT_CRITICAL();
170
}
171
 
172
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.