summaryrefslogtreecommitdiff
path: root/AT91SAM7S256/Source/d_input.r
blob: 6e3d989931a68a607456bb8b1f4c7f2ce399eb3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
//
// Date init       14.12.2004
//
// Revision date   $Date:: 16-05-06 10:06                                    $
//
// Filename        $Workfile:: d_input.r                                     $
//
// Version         $Revision:: 10                                            $
//
// Archive         $Archive:: /LMS2006/Sys01/Main/Firmware/Source/d_input.r  $
//
// Platform        C
//

#ifdef    SAM7S256

#define   MAX_AD_VALUE                  0x3FF

#define   INPUTInit                     {\
                                          UBYTE Tmp;\
                                          for (Tmp = 0; Tmp < NOS_OF_AVR_INPUTS; Tmp++)\
                                          {\
                                            IoFromAvr.AdValue[Tmp]  = MAX_AD_VALUE;\
                                          }\
                                          IoToAvr.InputPower = 0;\
                                          for (Tmp = 0; Tmp < NO_OF_INPUTS; Tmp++)\
                                          {\
                                            *AT91C_PIOA_PPUDR  = Digi0Alloc[Tmp];\
                                            *AT91C_PIOA_PPUDR  = Digi1Alloc[Tmp];\
                                            INPUTSetInDigi0(Tmp);\
                                            INPUTSetInDigi1(Tmp);\
                                          }\
                                        }

#define   INPUTGetVal(pValues, No)      *pValues  = (UWORD)IoFromAvr.AdValue[No];\
                                        *pValues &= 0x03FF

#define   INPUTSetActive(Input)         IoToAvr.InputPower |=  (0x01 << Input);\
                                        IoToAvr.InputPower &= ~(0x10 << Input)
#define   INPUTSet9v(Input)             IoToAvr.InputPower |=  (0x10 << Input);\
                                        IoToAvr.InputPower &= ~(0x01 << Input)
#define   INPUTSetInactive(Input)       IoToAvr.InputPower &= ~(0x11 << Input)

const     ULONG  Digi0Alloc[] =         {AT91C_PIO_PA23, AT91C_PIO_PA28, AT91C_PIO_PA29, AT91C_PIO_PA30};
const     ULONG  Digi1Alloc[] =         {AT91C_PIO_PA18, AT91C_PIO_PA19, AT91C_PIO_PA20, AT91C_PIO_PA2};

#define   INPUTSetOutDigi0(Input)       *AT91C_PIOA_PER  = Digi0Alloc[Input];\
                                        *AT91C_PIOA_OER  = Digi0Alloc[Input]

#define   INPUTSetOutDigi1(Input)       *AT91C_PIOA_PER  = Digi1Alloc[Input];\
                                        *AT91C_PIOA_OER  = Digi1Alloc[Input]


#define   INPUTSetInDigi0(Input)        *AT91C_PIOA_PER  = Digi0Alloc[Input];\
                                        *AT91C_PIOA_ODR  = Digi0Alloc[Input]

#define   INPUTSetInDigi1(Input)        *AT91C_PIOA_PER  = Digi1Alloc[Input];\
                                        *AT91C_PIOA_ODR  = Digi1Alloc[Input]

#define   INPUTSetDigi0(Input)          *AT91C_PIOA_SODR = Digi0Alloc[Input]

#define   INPUTSetDigi1(Input)          *AT91C_PIOA_SODR = Digi1Alloc[Input]

#define   INPUTClearDigi0(Input)        *AT91C_PIOA_CODR = Digi0Alloc[Input]

#define   INPUTClearDigi1(Input)        *AT91C_PIOA_CODR = Digi1Alloc[Input]

#define   INPUTReadDigi0(Input, Data)   if ((*AT91C_PIOA_PDSR) & Digi0Alloc[Input])\
                                        {\
                                          *Data |= 0x00000001;\
                                        }\
                                        else\
                                        {\
                                          *Data &= ~0x00000001;\
                                        }
#define   INPUTReadDigi1(Input, Data)   if ((*AT91C_PIOA_PDSR) & Digi1Alloc[Input])\
                                        {\
                                          *Data |= 0x00000002;\
                                        }\
                                        else\
                                        {\
                                          *Data &= ~0x00000002;\
                                        }

#define   INPUTExit                     {\
                                          UBYTE Tmp;\
                                          for (Tmp = 0; Tmp < NO_OF_INPUTS; Tmp++)\
                                          {\
                                            INPUTSetInDigi0(Tmp);\
                                            INPUTSetInDigi1(Tmp);\
                                          }\
                                        }


#endif

#ifdef    PCWIN

#endif