atmega32u4 0.1.3

Low level access to ATmega32U4 registers
pub mod vector_macro;
use core::convert::TryFrom;
#[doc = r" Enumeration of all the interrupts"]
pub enum Interrupt {
    #[doc = "1 - External Interrupt 0"]
    INT0,
    #[doc = "2 - External Interrupt 1"]
    INT1,
    #[doc = "3 - External Interrupt 2"]
    INT2,
    #[doc = "4 - External Interrupt 3"]
    INT3,
    #[doc = "7 - External Interrupt 6"]
    INT6,
    #[doc = "10 - USB General Interrupt Request"]
    USB_GEN,
    #[doc = "11 - USB Endpoint/Pipe Interrupt Communication Request"]
    USB_COM,
    #[doc = "16 - Timer/Counter1 Capture Event"]
    TIMER1_CAPT,
    #[doc = "17 - Timer/Counter1 Compare Match A"]
    TIMER1_COMPA,
    #[doc = "18 - Timer/Counter1 Compare Match B"]
    TIMER1_COMPB,
    #[doc = "19 - Timer/Counter1 Compare Match C"]
    TIMER1_COMPC,
    #[doc = "20 - Timer/Counter1 Overflow"]
    TIMER1_OVF,
    #[doc = "21 - Timer/Counter0 Compare Match A"]
    TIMER0_COMPA,
    #[doc = "22 - Timer/Counter0 Compare Match B"]
    TIMER0_COMPB,
    #[doc = "23 - Timer/Counter0 Overflow"]
    TIMER0_OVF,
    #[doc = "31 - Timer/Counter3 Capture Event"]
    TIMER3_CAPT,
    #[doc = "32 - Timer/Counter3 Compare Match A"]
    TIMER3_COMPA,
    #[doc = "33 - Timer/Counter3 Compare Match B"]
    TIMER3_COMPB,
    #[doc = "34 - Timer/Counter3 Compare Match C"]
    TIMER3_COMPC,
    #[doc = "35 - Timer/Counter3 Overflow"]
    TIMER3_OVF,
    #[doc = "38 - Timer/Counter4 Compare Match A"]
    TIMER4_COMPA,
    #[doc = "39 - Timer/Counter4 Compare Match B"]
    TIMER4_COMPB,
    #[doc = "40 - Timer/Counter4 Compare Match D"]
    TIMER4_COMPD,
    #[doc = "41 - Timer/Counter4 Overflow"]
    TIMER4_OVF,
    #[doc = "42 - Timer/Counter4 Fault Protection Interrupt"]
    TIMER4_FPF,
}
unsafe impl ::bare_metal::Nr for Interrupt {
    #[inline]
    fn nr(&self) -> u8 {
        match *self {
            Interrupt::INT0 => 1,
            Interrupt::INT1 => 2,
            Interrupt::INT2 => 3,
            Interrupt::INT3 => 4,
            Interrupt::INT6 => 7,
            Interrupt::USB_GEN => 10,
            Interrupt::USB_COM => 11,
            Interrupt::TIMER1_CAPT => 16,
            Interrupt::TIMER1_COMPA => 17,
            Interrupt::TIMER1_COMPB => 18,
            Interrupt::TIMER1_COMPC => 19,
            Interrupt::TIMER1_OVF => 20,
            Interrupt::TIMER0_COMPA => 21,
            Interrupt::TIMER0_COMPB => 22,
            Interrupt::TIMER0_OVF => 23,
            Interrupt::TIMER3_CAPT => 31,
            Interrupt::TIMER3_COMPA => 32,
            Interrupt::TIMER3_COMPB => 33,
            Interrupt::TIMER3_COMPC => 34,
            Interrupt::TIMER3_OVF => 35,
            Interrupt::TIMER4_COMPA => 38,
            Interrupt::TIMER4_COMPB => 39,
            Interrupt::TIMER4_COMPD => 40,
            Interrupt::TIMER4_OVF => 41,
            Interrupt::TIMER4_FPF => 42,
        }
    }
}
#[derive(Debug, Copy, Clone)]
pub struct TryFromInterruptError(());
impl TryFrom<u8> for Interrupt {
    type Error = TryFromInterruptError;
    #[inline]
    fn try_from(value: u8) -> Result<Self, Self::Error> {
        match value {
            1 => Ok(Interrupt::INT0),
            2 => Ok(Interrupt::INT1),
            3 => Ok(Interrupt::INT2),
            4 => Ok(Interrupt::INT3),
            7 => Ok(Interrupt::INT6),
            10 => Ok(Interrupt::USB_GEN),
            11 => Ok(Interrupt::USB_COM),
            16 => Ok(Interrupt::TIMER1_CAPT),
            17 => Ok(Interrupt::TIMER1_COMPA),
            18 => Ok(Interrupt::TIMER1_COMPB),
            19 => Ok(Interrupt::TIMER1_COMPC),
            20 => Ok(Interrupt::TIMER1_OVF),
            21 => Ok(Interrupt::TIMER0_COMPA),
            22 => Ok(Interrupt::TIMER0_COMPB),
            23 => Ok(Interrupt::TIMER0_OVF),
            31 => Ok(Interrupt::TIMER3_CAPT),
            32 => Ok(Interrupt::TIMER3_COMPA),
            33 => Ok(Interrupt::TIMER3_COMPB),
            34 => Ok(Interrupt::TIMER3_COMPC),
            35 => Ok(Interrupt::TIMER3_OVF),
            38 => Ok(Interrupt::TIMER4_COMPA),
            39 => Ok(Interrupt::TIMER4_COMPB),
            40 => Ok(Interrupt::TIMER4_COMPD),
            41 => Ok(Interrupt::TIMER4_OVF),
            42 => Ok(Interrupt::TIMER4_FPF),
            _ => Err(TryFromInterruptError(())),
        }
    }
}