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!(), // Does not exist for ATmega8 ...
42        Timeout::Ms8000 => panic!() // Does not exist for ATmega8 ...
43    },
44}