NetBurner 3.5.0
PDF Version
 
coldfire/cpu/MCF5441X/include/cpu_pins.h
1/*NB_REVISION*/
2
3/*NB_COPYRIGHT*/
4
5#ifndef _CPU_PINS_H_
6#define _CPU_PINS_H_
7
8#include <basictypes.h>
9
10#define CPU_PINS
11//namespace CPU_PINS
12//{
13class PinIO
14{
15 public:
16 uint8_t port, pinnum;
17 private:
18
19 void funcA(int ft);
20 void funcB(int ft);
21 void funcC(int ft);
22 void funcD(int ft);
23 void funcE(int ft);
24 void funcF(int ft);
25 void funcG(int ft);
26 void funcH(int ft);
27 void funcI(int ft);
28 void funcJ(int ft);
29 void funcK(int ft);
30
31 int getFuncA();
32 int getFuncB();
33 int getFuncC();
34 int getFuncD();
35 int getFuncE();
36 int getFuncF();
37 int getFuncG();
38 int getFuncH();
39 int getFuncI();
40 int getFuncJ();
41 int getFuncK();
42
43
44 public:
45 typedef enum {
46 PIN_FN_0 = 0,
47 PIN_FN_1 = 1,
48 PIN_FN_2 = 2,
49 PIN_FN_3 = 3,
52 } pin_fn_t;
53
54
55 typedef enum {
56 PULL_DOWN_WEAK = 0,
57 PULL_UP_WEAK = 1,
58 PULL_UP_MED = 2,
59 PULL_UP_STRONG = 3,
60 PULL_KEEP = 4,
61 PULL_OFF = 5,
62 } pull_t;
63
64
65 PinIO(int j, int n)
66 {
67 port = j;
68 pinnum = n;
69 };
70 PinIO(const PinIO &rhs) : port(rhs.port), pinnum(rhs.pinnum) {}
71 PinIO() : port(0), pinnum(0){};
72
73 void set(BOOL = TRUE); // Set output high
74 BOOL toggle(); // Toggle the pin state
75 void clr() { set(FALSE); }; // Set output low
76 BOOL read(); // Read pin hi/low state
77 void hiz() { read(); }; // Set output to tristate
78 void drive(); // Turn output on (opposite of tristate)
79
80 void setPull(pull_t pull);
81 inline void PullUp() { setPull(PULL_UP_MED); }
82 inline void PullDown() { setPull(PULL_DOWN_WEAK); }
83 pull_t getPull();
84
85 void setSlew(uint8_t slew);
86 inline void setSpeed(uint8_t speed) { return; }
87 inline void setStrength(uint8_t strength) { return; }
88 void setOpenDrain(bool enable);
89 inline void multidrv(bool enable) { return setOpenDrain(enable); }
90 inline void setHyst(bool enable) { return; }
91
92 uint8_t getSlew();
93 inline uint8_t getSpeed() { return 0; }
94 uint8_t getStrength() { return 0; }
95 bool getOpenDrain() { return (port & 0x80) != 0; }
96 bool getHyst();
97
98 inline void setSchmidt(bool enable) { setHyst(enable); }
99 inline bool getSchmidt() { return getHyst(); }
100 inline void HystOn() { setHyst(true); }
101 inline void HystOff() { setHyst(false); }
102 inline void SchmidtOn() { setHyst(true); }
103 inline void SchmidtOff(){ setHyst(false); }
104
105 void function(int ft); // Set pin to special function
106 void setFn(int ft) // Set pin to special function
107 { function(ft); }
108 int getFunction(); // Get the special function the pin is set to
109 PinIO &operator=(BOOL b)
110 {
111 set(b);
112 return *this;
113 };
114 PinIO &operator=(int i)
115 {
116 set(i);
117 return *this;
118 };
119 PinIO &operator=(uint32_t i)
120 {
121 set(i);
122 return *this;
123 };
124 operator int() { return read(); }; // Read and return int value
125 operator BOOL() { return read(); }; // Read and return BOOL value
126 operator bool() { return (read() != 0); }; // Read and return boolean value
127 friend class PinIOPortAArray;
128 friend class PinIOPortBArray;
129 friend class PinIOPortCArray;
130 friend class PinIOPortDArray;
131 friend class PinIOPortEArray;
132 friend class PinIOPortFArray;
133 friend class PinIOPortGArray;
134 friend class PinIOPortHArray;
135 friend class PinIOPortIArray;
136 friend class PinIOPortJArray;
137 friend class PinIOPortKArray;
138};
139
140class PinIOPortAArray
141{
142 public:
143 PinIO operator[](int n) { return PinIO(0, n); };
144};
145class PinIOPortBArray
146{
147 public:
148 PinIO operator[](int n) { return PinIO(1, n); };
149};
150class PinIOPortCArray
151{
152 public:
153 PinIO operator[](int n) { return PinIO(2, n); };
154};
155class PinIOPortDArray
156{
157 public:
158 PinIO operator[](int n) { return PinIO(3, n); };
159};
160class PinIOPortEArray
161{
162 public:
163 PinIO operator[](int n) { return PinIO(4, n); };
164};
165class PinIOPortFArray
166{
167 public:
168 PinIO operator[](int n) { return PinIO(5, n); };
169};
170class PinIOPortGArray
171{
172 public:
173 PinIO operator[](int n) { return PinIO(6, n); };
174};
175class PinIOPortHArray
176{
177 public:
178 PinIO operator[](int n) { return PinIO(7, n); };
179};
180class PinIOPortIArray
181{
182 public:
183 PinIO operator[](int n) { return PinIO(8, n); };
184};
185class PinIOPortJArray
186{
187 public:
188 PinIO operator[](int n) { return PinIO(9, n); };
189};
190class PinIOPortKArray
191{
192 public:
193 PinIO operator[](int n) { return PinIO(10, n); };
194};
195//} // namespace CPU_PINS
196
197extern CPU_PINS::PinIOPortAArray PortA;
198extern CPU_PINS::PinIOPortBArray PortB;
199extern CPU_PINS::PinIOPortCArray PortC;
200extern CPU_PINS::PinIOPortDArray PortD;
201extern CPU_PINS::PinIOPortEArray PortE;
202extern CPU_PINS::PinIOPortFArray PortF;
203extern CPU_PINS::PinIOPortGArray PortG;
204extern CPU_PINS::PinIOPortHArray PortH;
205extern CPU_PINS::PinIOPortIArray PortI;
206extern CPU_PINS::PinIOPortJArray PortJ;
207extern CPU_PINS::PinIOPortKArray PortK;
208
209#endif
GPIO Pin Class.
Definition coldfire/cpu/MCF5441X/include/cpu_pins.h:14
void set() const
Drive the pin(s) High.
Definition cortex-m7/cpu/SAME70/include/cpu_pins.h:144
pin_fn_t
Definition coldfire/cpu/MCF5441X/include/cpu_pins.h:45
@ PIN_FN_OUT
Output.
Definition coldfire/cpu/MCF5441X/include/cpu_pins.h:51
@ PIN_FN_IN
Input.
Definition coldfire/cpu/MCF5441X/include/cpu_pins.h:50