Go to the documentation of this file.
99 #define wdt_reset() __asm__ __volatile__ ("wdr")
103 # define _WD_PS3_MASK _BV(WDP3)
105 # define _WD_PS3_MASK 0x00
109 # define _WD_CONTROL_REG WDTCSR
111 # define _WD_CONTROL_REG WDTCR
115 #define _WD_CHANGE_BIT WDTOE
117 #define _WD_CHANGE_BIT WDCE
133 #if defined(__AVR_ATxmega16A4__) \
134 || defined(__AVR_ATxmega16D4__) \
135 || defined(__AVR_ATxmega32A4__) \
136 || defined(__AVR_ATxmega32D4__) \
137 || defined(__AVR_ATxmega64A1U__) \
138 || defined(__AVR_ATxmega64A3__) \
139 || defined(__AVR_ATxmega64D3__) \
140 || defined(__AVR_ATxmega128A1__) \
141 || defined(__AVR_ATxmega128A1U__) \
142 || defined(__AVR_ATxmega128A3__) \
143 || defined(__AVR_ATxmega128D3__) \
144 || defined(__AVR_ATxmega192A3__) \
145 || defined(__AVR_ATxmega192D3__) \
146 || defined(__AVR_ATxmega256A3__) \
147 || defined(__AVR_ATxmega256D3__) \
148 || defined(__AVR_ATxmega256A3B__)
153 #define wdt_enable(value) \
154 __asm__ __volatile__ ( \
155 "in __tmp_reg__, %0" "\n\t" \
156 "out %1, %3" "\n\t" \
157 "sts %2, %4" "\n\t" \
159 "out %0, __tmp_reg__" "\n\t" \
161 : "M" (_SFR_MEM_ADDR(RAMPD)), \
162 "M" (_SFR_MEM_ADDR(CCP)), \
163 "M" (_SFR_MEM_ADDR(WDT_CTRL)), \
164 "r" ((uint8_t)0xD8), \
165 "r" ((uint8_t)(WDT_CEN_bm | WDT_ENABLE_bm | value)) \
170 #elif defined(__AVR_AT90CAN32__) \
171 || defined(__AVR_AT90CAN64__) \
172 || defined(__AVR_AT90CAN128__) \
173 || defined(__AVR_AT90PWM1__) \
174 || defined(__AVR_AT90PWM2__) \
175 || defined(__AVR_AT90PWM216__) \
176 || defined(__AVR_AT90PWM2B__) \
177 || defined(__AVR_AT90PWM3__) \
178 || defined(__AVR_AT90PWM316__) \
179 || defined(__AVR_AT90PWM3B__) \
180 || defined(__AVR_AT90PWM81__) \
181 || defined(__AVR_AT90USB1286__) \
182 || defined(__AVR_AT90USB1287__) \
183 || defined(__AVR_AT90USB162__) \
184 || defined(__AVR_AT90USB646__) \
185 || defined(__AVR_AT90USB647__) \
186 || defined(__AVR_AT90USB82__) \
187 || defined(__AVR_ATmega1280__) \
188 || defined(__AVR_ATmega1281__) \
189 || defined(__AVR_ATmega1284P__) \
190 || defined(__AVR_ATmega128RFA1__) \
191 || defined(__AVR_ATmega164__) \
192 || defined(__AVR_ATmega164A__) \
193 || defined(__AVR_ATmega164P__) \
194 || defined(__AVR_ATmega165__) \
195 || defined(__AVR_ATmega165A__) \
196 || defined(__AVR_ATmega165P__) \
197 || defined(__AVR_ATmega168__) \
198 || defined(__AVR_ATmega168A__) \
199 || defined(__AVR_ATmega168P__) \
200 || defined(__AVR_ATmega169__) \
201 || defined(__AVR_ATmega169A__) \
202 || defined(__AVR_ATmega169P__) \
203 || defined(__AVR_ATmega169PA__) \
204 || defined(__AVR_ATmega16HVA__) \
205 || defined(__AVR_ATmega16HVA2__) \
206 || defined(__AVR_ATmega16HVB__) \
207 || defined(__AVR_ATmega16HVBREVB__) \
208 || defined(__AVR_ATmega16M1__) \
209 || defined(__AVR_ATmega16U2__) \
210 || defined(__AVR_ATmega16U4__) \
211 || defined(__AVR_ATmega2560__) \
212 || defined(__AVR_ATmega2561__) \
213 || defined(__AVR_ATmega324__) \
214 || defined(__AVR_ATmega324A__) \
215 || defined(__AVR_ATmega324P__) \
216 || defined(__AVR_ATmega324PA__) \
217 || defined(__AVR_ATmega325__) \
218 || defined(__AVR_ATmega325A__) \
219 || defined(__AVR_ATmega325P__) \
220 || defined(__AVR_ATmega3250__) \
221 || defined(__AVR_ATmega3250A__) \
222 || defined(__AVR_ATmega3250P__) \
223 || defined(__AVR_ATmega328__) \
224 || defined(__AVR_ATmega328P__) \
225 || defined(__AVR_ATmega329__) \
226 || defined(__AVR_ATmega329A__) \
227 || defined(__AVR_ATmega329P__) \
228 || defined(__AVR_ATmega329PA__) \
229 || defined(__AVR_ATmega3290__) \
230 || defined(__AVR_ATmega3290A__) \
231 || defined(__AVR_ATmega3290P__) \
232 || defined(__AVR_ATmega32C1__) \
233 || defined(__AVR_ATmega32HVB__) \
234 || defined(__AVR_ATmega32HVBREVB__) \
235 || defined(__AVR_ATmega32M1__) \
236 || defined(__AVR_ATmega32U2__) \
237 || defined(__AVR_ATmega32U4__) \
238 || defined(__AVR_ATmega32U6__) \
239 || defined(__AVR_ATmega406__) \
240 || defined(__AVR_ATmega48__) \
241 || defined(__AVR_ATmega48A__) \
242 || defined(__AVR_ATmega48P__) \
243 || defined(__AVR_ATmega640__) \
244 || defined(__AVR_ATmega644__) \
245 || defined(__AVR_ATmega644A__) \
246 || defined(__AVR_ATmega644P__) \
247 || defined(__AVR_ATmega644PA__) \
248 || defined(__AVR_ATmega645__) \
249 || defined(__AVR_ATmega645A__) \
250 || defined(__AVR_ATmega645P__) \
251 || defined(__AVR_ATmega6450__) \
252 || defined(__AVR_ATmega6450A__) \
253 || defined(__AVR_ATmega6450P__) \
254 || defined(__AVR_ATmega649__) \
255 || defined(__AVR_ATmega649A__) \
256 || defined(__AVR_ATmega6490__) \
257 || defined(__AVR_ATmega6490A__) \
258 || defined(__AVR_ATmega6490P__) \
259 || defined(__AVR_ATmega649P__) \
260 || defined(__AVR_ATmega64C1__) \
261 || defined(__AVR_ATmega64HVE__) \
262 || defined(__AVR_ATmega64M1__) \
263 || defined(__AVR_ATmega88__) \
264 || defined(__AVR_ATmega88A__) \
265 || defined(__AVR_ATmega88P__) \
266 || defined(__AVR_ATmega88PA__) \
267 || defined(__AVR_ATmega8HVA__) \
268 || defined(__AVR_ATmega8U2__) \
269 || defined(__AVR_ATtiny48__) \
270 || defined(__AVR_ATtiny88__) \
271 || defined(__AVR_ATtiny87__) \
272 || defined(__AVR_ATtiny167__) \
273 || defined(__AVR_AT90SCR100__) \
274 || defined(__AVR_ATA6289__)
278 #define wdt_enable(value) \
279 __asm__ __volatile__ ( \
280 "in __tmp_reg__,__SREG__" "\n\t" \
284 "out __SREG__,__tmp_reg__" "\n\t" \
287 : "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \
288 "r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \
289 "r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \
290 _BV(WDE) | (value & 0x07)) ) \
294 #define wdt_disable() \
295 __asm__ __volatile__ ( \
296 "in __tmp_reg__, __SREG__" "\n\t" \
298 "sts %0, %1" "\n\t" \
299 "sts %0, __zero_reg__" "\n\t" \
300 "out __SREG__,__tmp_reg__" "\n\t" \
302 : "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \
303 "r" ((uint8_t)(_BV(_WD_CHANGE_BIT) | _BV(WDE))) \
313 #define wdt_enable(value) \
314 __asm__ __volatile__ ( \
315 "in __tmp_reg__,__SREG__" "\n\t" \
319 "out __SREG__,__tmp_reg__" "\n\t" \
322 : "I" (_SFR_IO_ADDR(_WD_CONTROL_REG)), \
323 "r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \
324 "r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \
325 _BV(WDE) | (value & 0x07)) ) \
335 #define wdt_disable() \
336 __asm__ __volatile__ ( \
337 "in __tmp_reg__, __SREG__" "\n\t" \
339 "out %0, %1" "\n\t" \
340 "out %0, __zero_reg__" "\n\t" \
341 "out __SREG__,__tmp_reg__" "\n\t" \
343 : "I" (_SFR_IO_ADDR(_WD_CONTROL_REG)), \
344 "r" ((uint8_t)(_BV(_WD_CHANGE_BIT) | _BV(WDE))) \
403 #if defined(__DOXYGEN__) || defined(WDP3)
Automatically generated by Doxygen 1.8.7 on Tue Jul 8 2014. Dash Docset conversion by Matt Kane