mik32-pac 1.1.0

Peripheral access crate for the MIK32 Amur (К1948ВК018) RISC-V microcontroller
Documentation
#[doc = "Register `CTRL` reader"]
pub type R = crate::R<CtrlSpec>;
#[doc = "Register `CTRL` writer"]
pub type W = crate::W<CtrlSpec>;
#[doc = "Инверсия контрольной суммы. Некоторые протоколы подсчета контрольной суммы требуют инверсии вычисленного значения контрольной суммы (выполняется операция XOR со значением 0xFFFFFFFF)\n\nValue on reset: 0"]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[repr(u8)]
pub enum Fxor {
    #[doc = "0: Инверсия выключена"]
    InversionDisable = 0,
    #[doc = "1: Инверсия включена (операция XOR выполняется)"]
    InversionEnable = 1,
}
impl From<Fxor> for u8 {
    #[inline(always)]
    fn from(variant: Fxor) -> Self {
        variant as _
    }
}
impl crate::FieldSpec for Fxor {
    type Ux = u8;
}
impl crate::IsEnum for Fxor {}
#[doc = "Field `FXOR` reader - Инверсия контрольной суммы. Некоторые протоколы подсчета контрольной суммы требуют инверсии вычисленного значения контрольной суммы (выполняется операция XOR со значением 0xFFFFFFFF)"]
pub type FxorR = crate::FieldReader<Fxor>;
impl FxorR {
    #[doc = "Get enumerated values variant"]
    #[inline(always)]
    pub const fn variant(&self) -> Option<Fxor> {
        match self.bits {
            0 => Some(Fxor::InversionDisable),
            1 => Some(Fxor::InversionEnable),
            _ => None,
        }
    }
    #[doc = "Инверсия выключена"]
    #[inline(always)]
    pub fn is_inversion_disable(&self) -> bool {
        *self == Fxor::InversionDisable
    }
    #[doc = "Инверсия включена (операция XOR выполняется)"]
    #[inline(always)]
    pub fn is_inversion_enable(&self) -> bool {
        *self == Fxor::InversionEnable
    }
}
#[doc = "Field `FXOR` writer - Инверсия контрольной суммы. Некоторые протоколы подсчета контрольной суммы требуют инверсии вычисленного значения контрольной суммы (выполняется операция XOR со значением 0xFFFFFFFF)"]
pub type FxorW<'a, REG> = crate::FieldWriter<'a, REG, 2, Fxor>;
impl<'a, REG> FxorW<'a, REG>
where
    REG: crate::Writable + crate::RegisterSpec,
    REG::Ux: From<u8>,
{
    #[doc = "Инверсия выключена"]
    #[inline(always)]
    pub fn inversion_disable(self) -> &'a mut crate::W<REG> {
        self.variant(Fxor::InversionDisable)
    }
    #[doc = "Инверсия включена (операция XOR выполняется)"]
    #[inline(always)]
    pub fn inversion_enable(self) -> &'a mut crate::W<REG> {
        self.variant(Fxor::InversionEnable)
    }
}
#[doc = "Назначение регистра данных\n\nValue on reset: 0"]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Was {
    #[doc = "0: Записываем данные"]
    Data = 0,
    #[doc = "1: Записываем начальное значение"]
    InitData = 1,
}
impl From<Was> for bool {
    #[inline(always)]
    fn from(variant: Was) -> Self {
        variant as u8 != 0
    }
}
#[doc = "Field `WAS` reader - Назначение регистра данных"]
pub type WasR = crate::BitReader<Was>;
impl WasR {
    #[doc = "Get enumerated values variant"]
    #[inline(always)]
    pub const fn variant(&self) -> Was {
        match self.bits {
            false => Was::Data,
            true => Was::InitData,
        }
    }
    #[doc = "Записываем данные"]
    #[inline(always)]
    pub fn is_data(&self) -> bool {
        *self == Was::Data
    }
    #[doc = "Записываем начальное значение"]
    #[inline(always)]
    pub fn is_init_data(&self) -> bool {
        *self == Was::InitData
    }
}
#[doc = "Field `WAS` writer - Назначение регистра данных"]
pub type WasW<'a, REG> = crate::BitWriter<'a, REG, Was>;
impl<'a, REG> WasW<'a, REG>
where
    REG: crate::Writable + crate::RegisterSpec,
{
    #[doc = "Записываем данные"]
    #[inline(always)]
    pub fn data(self) -> &'a mut crate::W<REG> {
        self.variant(Was::Data)
    }
    #[doc = "Записываем начальное значение"]
    #[inline(always)]
    pub fn init_data(self) -> &'a mut crate::W<REG> {
        self.variant(Was::InitData)
    }
}
#[doc = "Бит занятости автомата. После записи в регистр данных слова для вычисления контрольной суммы бит занятости перейдет в состояние единицы через один такт после такта записи. То есть чтение регистра управления, идущее на шине AHB сразу на следующем такте после записи данных, вернет результат с нулевым (еще не обновленным) значением бита Busy\n\nValue on reset: 0"]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Busy {
    #[doc = "0: Автомат закончил вычисления"]
    Ready = 0,
    #[doc = "1: Автомат занят"]
    Busy = 1,
}
impl From<Busy> for bool {
    #[inline(always)]
    fn from(variant: Busy) -> Self {
        variant as u8 != 0
    }
}
#[doc = "Field `Busy` reader - Бит занятости автомата. После записи в регистр данных слова для вычисления контрольной суммы бит занятости перейдет в состояние единицы через один такт после такта записи. То есть чтение регистра управления, идущее на шине AHB сразу на следующем такте после записи данных, вернет результат с нулевым (еще не обновленным) значением бита Busy"]
pub type BusyR = crate::BitReader<Busy>;
impl BusyR {
    #[doc = "Get enumerated values variant"]
    #[inline(always)]
    pub const fn variant(&self) -> Busy {
        match self.bits {
            false => Busy::Ready,
            true => Busy::Busy,
        }
    }
    #[doc = "Автомат закончил вычисления"]
    #[inline(always)]
    pub fn is_ready(&self) -> bool {
        *self == Busy::Ready
    }
    #[doc = "Автомат занят"]
    #[inline(always)]
    pub fn is_busy(&self) -> bool {
        *self == Busy::Busy
    }
}
#[doc = "Перестановки битов/байтов выходных данных\n\nValue on reset: 0"]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[repr(u8)]
pub enum Totr {
    #[doc = "0: Перестановка выключена"]
    None = 0,
    #[doc = "1: Биты в байтах перестанавливаются (бит 7 с битом 0, бит 6 с битом 1 и т.д.; бит 15 c битом 8, бит 14 с битом 9 и т.д., с остальными байтами так же), байты НЕ перестанавливаются"]
    Bits = 1,
    #[doc = "2: Перестанавливаются и биты, и байты"]
    BitsBytes = 2,
    #[doc = "3: Биты в байтах НЕ перестанавливаются, байты перестанавливаются (меняются местами байты 3 и 0, 2 и 1);"]
    Bytes = 3,
}
impl From<Totr> for u8 {
    #[inline(always)]
    fn from(variant: Totr) -> Self {
        variant as _
    }
}
impl crate::FieldSpec for Totr {
    type Ux = u8;
}
impl crate::IsEnum for Totr {}
#[doc = "Field `TOTR` reader - Перестановки битов/байтов выходных данных"]
pub type TotrR = crate::FieldReader<Totr>;
impl TotrR {
    #[doc = "Get enumerated values variant"]
    #[inline(always)]
    pub const fn variant(&self) -> Totr {
        match self.bits {
            0 => Totr::None,
            1 => Totr::Bits,
            2 => Totr::BitsBytes,
            3 => Totr::Bytes,
            _ => unreachable!(),
        }
    }
    #[doc = "Перестановка выключена"]
    #[inline(always)]
    pub fn is_none(&self) -> bool {
        *self == Totr::None
    }
    #[doc = "Биты в байтах перестанавливаются (бит 7 с битом 0, бит 6 с битом 1 и т.д.; бит 15 c битом 8, бит 14 с битом 9 и т.д., с остальными байтами так же), байты НЕ перестанавливаются"]
    #[inline(always)]
    pub fn is_bits(&self) -> bool {
        *self == Totr::Bits
    }
    #[doc = "Перестанавливаются и биты, и байты"]
    #[inline(always)]
    pub fn is_bits_bytes(&self) -> bool {
        *self == Totr::BitsBytes
    }
    #[doc = "Биты в байтах НЕ перестанавливаются, байты перестанавливаются (меняются местами байты 3 и 0, 2 и 1);"]
    #[inline(always)]
    pub fn is_bytes(&self) -> bool {
        *self == Totr::Bytes
    }
}
#[doc = "Field `TOTR` writer - Перестановки битов/байтов выходных данных"]
pub type TotrW<'a, REG> = crate::FieldWriter<'a, REG, 2, Totr, crate::Safe>;
impl<'a, REG> TotrW<'a, REG>
where
    REG: crate::Writable + crate::RegisterSpec,
    REG::Ux: From<u8>,
{
    #[doc = "Перестановка выключена"]
    #[inline(always)]
    pub fn none(self) -> &'a mut crate::W<REG> {
        self.variant(Totr::None)
    }
    #[doc = "Биты в байтах перестанавливаются (бит 7 с битом 0, бит 6 с битом 1 и т.д.; бит 15 c битом 8, бит 14 с битом 9 и т.д., с остальными байтами так же), байты НЕ перестанавливаются"]
    #[inline(always)]
    pub fn bits_(self) -> &'a mut crate::W<REG> {
        self.variant(Totr::Bits)
    }
    #[doc = "Перестанавливаются и биты, и байты"]
    #[inline(always)]
    pub fn bits_bytes(self) -> &'a mut crate::W<REG> {
        self.variant(Totr::BitsBytes)
    }
    #[doc = "Биты в байтах НЕ перестанавливаются, байты перестанавливаются (меняются местами байты 3 и 0, 2 и 1);"]
    #[inline(always)]
    pub fn bytes(self) -> &'a mut crate::W<REG> {
        self.variant(Totr::Bytes)
    }
}
#[doc = "Перестановка битов/байтов входных данных\n\nValue on reset: 0"]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[repr(u8)]
pub enum Tot {
    #[doc = "0: Перестановка выключена"]
    None = 0,
    #[doc = "1: Биты в байтах перестанавливаются (бит 7 с битом 0, бит 15 с битом 8, с остальными байтами так же), байты НЕ перестанавливаются;"]
    Bits = 1,
    #[doc = "2: Перестанавливаются и биты, и байты"]
    BitsBytes = 2,
    #[doc = "3: Биты в байтах НЕ перестанавливаются, байты перестанавливаются (меняются местами байты 3 и 0, 2 и 1);"]
    Bytes = 3,
}
impl From<Tot> for u8 {
    #[inline(always)]
    fn from(variant: Tot) -> Self {
        variant as _
    }
}
impl crate::FieldSpec for Tot {
    type Ux = u8;
}
impl crate::IsEnum for Tot {}
#[doc = "Field `TOT` reader - Перестановка битов/байтов входных данных"]
pub type TotR = crate::FieldReader<Tot>;
impl TotR {
    #[doc = "Get enumerated values variant"]
    #[inline(always)]
    pub const fn variant(&self) -> Tot {
        match self.bits {
            0 => Tot::None,
            1 => Tot::Bits,
            2 => Tot::BitsBytes,
            3 => Tot::Bytes,
            _ => unreachable!(),
        }
    }
    #[doc = "Перестановка выключена"]
    #[inline(always)]
    pub fn is_none(&self) -> bool {
        *self == Tot::None
    }
    #[doc = "Биты в байтах перестанавливаются (бит 7 с битом 0, бит 15 с битом 8, с остальными байтами так же), байты НЕ перестанавливаются;"]
    #[inline(always)]
    pub fn is_bits(&self) -> bool {
        *self == Tot::Bits
    }
    #[doc = "Перестанавливаются и биты, и байты"]
    #[inline(always)]
    pub fn is_bits_bytes(&self) -> bool {
        *self == Tot::BitsBytes
    }
    #[doc = "Биты в байтах НЕ перестанавливаются, байты перестанавливаются (меняются местами байты 3 и 0, 2 и 1);"]
    #[inline(always)]
    pub fn is_bytes(&self) -> bool {
        *self == Tot::Bytes
    }
}
#[doc = "Field `TOT` writer - Перестановка битов/байтов входных данных"]
pub type TotW<'a, REG> = crate::FieldWriter<'a, REG, 2, Tot, crate::Safe>;
impl<'a, REG> TotW<'a, REG>
where
    REG: crate::Writable + crate::RegisterSpec,
    REG::Ux: From<u8>,
{
    #[doc = "Перестановка выключена"]
    #[inline(always)]
    pub fn none(self) -> &'a mut crate::W<REG> {
        self.variant(Tot::None)
    }
    #[doc = "Биты в байтах перестанавливаются (бит 7 с битом 0, бит 15 с битом 8, с остальными байтами так же), байты НЕ перестанавливаются;"]
    #[inline(always)]
    pub fn bits_(self) -> &'a mut crate::W<REG> {
        self.variant(Tot::Bits)
    }
    #[doc = "Перестанавливаются и биты, и байты"]
    #[inline(always)]
    pub fn bits_bytes(self) -> &'a mut crate::W<REG> {
        self.variant(Tot::BitsBytes)
    }
    #[doc = "Биты в байтах НЕ перестанавливаются, байты перестанавливаются (меняются местами байты 3 и 0, 2 и 1);"]
    #[inline(always)]
    pub fn bytes(self) -> &'a mut crate::W<REG> {
        self.variant(Tot::Bytes)
    }
}
impl R {
    #[doc = "Bits 1:2 - Инверсия контрольной суммы. Некоторые протоколы подсчета контрольной суммы требуют инверсии вычисленного значения контрольной суммы (выполняется операция XOR со значением 0xFFFFFFFF)"]
    #[inline(always)]
    pub fn fxor(&self) -> FxorR {
        FxorR::new(((self.bits >> 1) & 3) as u8)
    }
    #[doc = "Bit 25 - Назначение регистра данных"]
    #[inline(always)]
    pub fn was(&self) -> WasR {
        WasR::new(((self.bits >> 25) & 1) != 0)
    }
    #[doc = "Bit 25 - Бит занятости автомата. После записи в регистр данных слова для вычисления контрольной суммы бит занятости перейдет в состояние единицы через один такт после такта записи. То есть чтение регистра управления, идущее на шине AHB сразу на следующем такте после записи данных, вернет результат с нулевым (еще не обновленным) значением бита Busy"]
    #[inline(always)]
    pub fn busy(&self) -> BusyR {
        BusyR::new(((self.bits >> 25) & 1) != 0)
    }
    #[doc = "Bits 28:29 - Перестановки битов/байтов выходных данных"]
    #[inline(always)]
    pub fn totr(&self) -> TotrR {
        TotrR::new(((self.bits >> 28) & 3) as u8)
    }
    #[doc = "Bits 30:31 - Перестановка битов/байтов входных данных"]
    #[inline(always)]
    pub fn tot(&self) -> TotR {
        TotR::new(((self.bits >> 30) & 3) as u8)
    }
}
impl W {
    #[doc = "Bits 1:2 - Инверсия контрольной суммы. Некоторые протоколы подсчета контрольной суммы требуют инверсии вычисленного значения контрольной суммы (выполняется операция XOR со значением 0xFFFFFFFF)"]
    #[inline(always)]
    pub fn fxor(&mut self) -> FxorW<'_, CtrlSpec> {
        FxorW::new(self, 1)
    }
    #[doc = "Bit 25 - Назначение регистра данных"]
    #[inline(always)]
    pub fn was(&mut self) -> WasW<'_, CtrlSpec> {
        WasW::new(self, 25)
    }
    #[doc = "Bits 28:29 - Перестановки битов/байтов выходных данных"]
    #[inline(always)]
    pub fn totr(&mut self) -> TotrW<'_, CtrlSpec> {
        TotrW::new(self, 28)
    }
    #[doc = "Bits 30:31 - Перестановка битов/байтов входных данных"]
    #[inline(always)]
    pub fn tot(&mut self) -> TotW<'_, CtrlSpec> {
        TotW::new(self, 30)
    }
}
#[doc = "Регистр управления\n\nYou can [`read`](crate::Reg::read) this register and get [`ctrl::R`](R). You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`ctrl::W`](W). You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
pub struct CtrlSpec;
impl crate::RegisterSpec for CtrlSpec {
    type Ux = u32;
}
#[doc = "`read()` method returns [`ctrl::R`](R) reader structure"]
impl crate::Readable for CtrlSpec {}
#[doc = "`write(|w| ..)` method takes [`ctrl::W`](W) writer structure"]
impl crate::Writable for CtrlSpec {
    type Safety = crate::Unsafe;
}
#[doc = "`reset()` method sets CTRL to value 0"]
impl crate::Resettable for CtrlSpec {}