1 | #ifndef NANOTEC_H_
|
2 | #define NANOTEC_H_
|
3 |
|
4 | void Reset()
|
5 | {
|
6 | InOut.Controlword = InOut.Controlword | 0x80;
|
7 | yield();
|
8 | }
|
9 |
|
10 | void Quickstop()
|
11 | {
|
12 | while ((In.Statusword & 0x20) != 0x00)
|
13 | {
|
14 | InOut.Controlword = InOut.Controlword& 0xFF70;
|
15 | yield();
|
16 | }
|
17 | yield();
|
18 | }
|
19 |
|
20 | void Shutdown()
|
21 | {
|
22 | while ((In.Statusword & 0xEF) != 0x21)
|
23 | {
|
24 | InOut.Controlword = (InOut.Controlword& 0xFF76)|0x0006;
|
25 | yield();
|
26 | }
|
27 | yield();
|
28 | }
|
29 |
|
30 | void SwitchOn()
|
31 | {
|
32 | while ((In.Statusword & 0xE9) != 0x21)
|
33 | {
|
34 | InOut.Controlword = (InOut.Controlword& 0xFF76)|0x0006;
|
35 | yield();
|
36 | }
|
37 | while ((In.Statusword & 0xEF) != 0x23)
|
38 | {
|
39 | InOut.Controlword = (InOut.Controlword& 0xFF77)|0x0007;
|
40 | yield();
|
41 | }
|
42 | yield();
|
43 | }
|
44 |
|
45 | void EnableOperation()
|
46 | {
|
47 | while ((In.Statusword & 0xE9) != 0x21)
|
48 | {
|
49 | InOut.Controlword = (InOut.Controlword& 0xFF76)|0x0006;
|
50 | yield();
|
51 | }
|
52 | while ((In.Statusword & 0xEB) != 0x23)
|
53 | {
|
54 | InOut.Controlword = (InOut.Controlword& 0xFF77)|0x0007;
|
55 | yield();
|
56 | }
|
57 | while ((In.Statusword & 0xEF) != 0x27)
|
58 | {
|
59 | InOut.Controlword = (InOut.Controlword& 0xFF7F)|0x000F;
|
60 | yield();
|
61 | }
|
62 | yield();
|
63 | }
|
64 |
|
65 | void RelativeMovement()
|
66 | {
|
67 | InOut.Controlword = InOut.Controlword | 0x0040;
|
68 | yield();
|
69 | }
|
70 |
|
71 | void AbsoluteMovement()
|
72 | {
|
73 | InOut.Controlword = InOut.Controlword & 0xFFBF;
|
74 | yield();
|
75 | }
|
76 |
|
77 | void NewSetPoint(bool newsetpoint)
|
78 | {
|
79 | if(newsetpoint)
|
80 | {
|
81 | InOut.Controlword = InOut.Controlword | 0x0010;
|
82 | yield();
|
83 | }
|
84 | else
|
85 | {
|
86 | InOut.Controlword = InOut.Controlword & 0xFFEF;
|
87 | yield();
|
88 | }
|
89 | }
|
90 |
|
91 | void Halt(bool halt)
|
92 | {
|
93 | if(halt)
|
94 | {
|
95 | InOut.Controlword = InOut.Controlword | 0x0100;
|
96 | yield();
|
97 | }
|
98 | else
|
99 | {
|
100 | InOut.Controlword = InOut.Controlword & 0xFEFF;
|
101 | yield();
|
102 | }
|
103 | }
|
104 |
|
105 | void ChangeSetPointImmediately(bool changesetpointimmediately)
|
106 | {
|
107 | if(changesetpointimmediately)
|
108 | {
|
109 | InOut.Controlword = InOut.Controlword | 0x0020;
|
110 | yield();
|
111 | }
|
112 | else
|
113 | {
|
114 | InOut.Controlword = InOut.Controlword & 0xFFDF;
|
115 | yield();
|
116 | }
|
117 | }
|
118 |
|
119 | void ChangeOnSetPoint(bool changeonsetpoint)
|
120 | {
|
121 | if(changeonsetpoint)
|
122 | {
|
123 | InOut.Controlword = InOut.Controlword | 0x0200;
|
124 | yield();
|
125 | }
|
126 | else
|
127 | {
|
128 | InOut.Controlword = InOut.Controlword & 0xFDFF;
|
129 | yield();
|
130 | }
|
131 | }
|
132 |
|
133 | bool TargetReached()
|
134 | {
|
135 | if((In.Statusword & 0x400) == 0x400)
|
136 | {
|
137 | return true;
|
138 | }
|
139 | else
|
140 | {
|
141 | return false;
|
142 | }
|
143 | }
|
144 |
|
145 | bool NewSetPointAcknowledge()
|
146 | {
|
147 | if((In.Statusword & 0x1000) == 0x1000)
|
148 | {
|
149 | return true;
|
150 | }
|
151 | else
|
152 | {
|
153 | return false;
|
154 | }
|
155 | }
|
156 |
|
157 | bool DigitalInput(U08 inputs)
|
158 | {
|
159 | if(In.Inputs & (1 << (15+inputs)))
|
160 | {
|
161 | return true;
|
162 | }
|
163 | else
|
164 | {
|
165 | return false;
|
166 | }
|
167 | }
|
168 |
|
169 | void SetDigitalOutput(U08 outputs)
|
170 | {
|
171 | U32 OutputBit = 1 << (15+outputs);
|
172 | InOut.Outputs = InOut.Outputs | OutputBit;
|
173 | }
|
174 |
|
175 | void ClearDigitalOutput(U08 outputs)
|
176 | {
|
177 | U32 OutputBit = 1 << (15+outputs);
|
178 | InOut.Outputs = InOut.Outputs & ~OutputBit;
|
179 | }
|
180 |
|
181 | void ModesOfOperation(S08 Mode)
|
182 | {
|
183 | Out.ModesOfOperation = Mode;
|
184 | }
|
185 |
|
186 | S08 ModesOfOperationDisplay()
|
187 | {
|
188 | return In.ModesOfOperationDisplay;
|
189 | }
|
190 |
|
191 | S16 AnalogInput()
|
192 | {
|
193 | return In.AnalogInput;
|
194 | }
|
195 |
|
196 |
|
197 | #endif /*NANOTEC_H_*/
|