atmega_hal/
wdt.rs
1#[allow(unused_imports)]
2pub use avr_hal_generic::wdt::{Timeout, WdtOps};
3
4pub type Wdt = avr_hal_generic::wdt::Wdt<crate::Atmega, crate::pac::WDT>;
5
6#[cfg(not(any(feature = "atmega8", feature = "atmega16", feature = "atmega32a", feature = "atmega128a")))]
7avr_hal_generic::impl_wdt! {
8 hal: crate::Atmega,
9 peripheral: crate::pac::WDT,
10 mcusr: crate::pac::cpu::MCUSR,
11 wdtcsr_name: wdtcsr,
12 timeout: |to, w| match to {
13 Timeout::Ms16 => w.wdpl().cycles_2k_512k(),
14 Timeout::Ms32 => w.wdpl().cycles_4k_1024k(),
15 Timeout::Ms64 => w.wdpl().cycles_8k(),
16 Timeout::Ms125 => w.wdpl().cycles_16k(),
17 Timeout::Ms250 => w.wdpl().cycles_32k(),
18 Timeout::Ms500 => w.wdpl().cycles_64k(),
19 Timeout::Ms1000 => w.wdpl().cycles_128k(),
20 Timeout::Ms2000 => w.wdpl().cycles_256k(),
21 Timeout::Ms4000 => w.wdph().set_bit().wdpl().cycles_2k_512k(),
22 Timeout::Ms8000 => w.wdph().set_bit().wdpl().cycles_4k_1024k(),
23 },
24}
25
26#[cfg(any(feature = "atmega8", feature = "atmega32a", feature = "atmega128a"))]
27avr_hal_generic::impl_wdt! {
28 hal: crate::Atmega,
29 peripheral: crate::pac::WDT,
30 mcusr: crate::pac::cpu::MCUCSR,
31 wdtcsr_name: wdtcr,
32 timeout: |to, w| match to {
33 Timeout::Ms16 => w.wdpl().cycles_16k(),
34 Timeout::Ms32 => w.wdpl().cycles_32k(),
35 Timeout::Ms64 => w.wdpl().cycles_64k(),
36 Timeout::Ms125 => w.wdpl().cycles_128k(),
37 Timeout::Ms250 => w.wdpl().cycles_256k(),
38 Timeout::Ms500 => w.wdpl().cycles_512k(),
39 Timeout::Ms1000 => w.wdpl().cycles_1024k(),
40 Timeout::Ms2000 => w.wdpl().cycles_2048k(),
41 Timeout::Ms4000 => panic!(), Timeout::Ms8000 => panic!() },
44}