mirror of
https://github.com/italicsjenga/rp-hal-boards.git
synced 2025-01-23 09:46:33 +11:00
Correct clobbering registers in pwm subsystem
This commit is contained in:
parent
d3cb29b113
commit
bfe6903751
1 changed files with 18 additions and 18 deletions
|
@ -102,8 +102,8 @@ impl $PXi {
|
||||||
pwm.reset_bring_up(resets);
|
pwm.reset_bring_up(resets);
|
||||||
io.reset_bring_up(resets);
|
io.reset_bring_up(resets);
|
||||||
|
|
||||||
pad.gpio[self.pin].write(|w| w.ie().set_bit());
|
pad.gpio[self.pin].modify(|_, w| w.ie().set_bit());
|
||||||
pad.gpio[self.pin].write(|w| w.od().clear_bit());
|
pad.gpio[self.pin].modify(|_, w| w.od().clear_bit());
|
||||||
unsafe {
|
unsafe {
|
||||||
io.gpio[self.pin].gpio_ctrl.write_with_zero(|w| w.funcsel().pwm_a_0());
|
io.gpio[self.pin].gpio_ctrl.write_with_zero(|w| w.funcsel().pwm_a_0());
|
||||||
}
|
}
|
||||||
|
@ -161,39 +161,39 @@ impl $PXi {
|
||||||
|
|
||||||
#[doc = "Enables phase correct mode"]
|
#[doc = "Enables phase correct mode"]
|
||||||
pub fn set_ph_correct(&self) {
|
pub fn set_ph_correct(&self) {
|
||||||
self.csr().write(|w| w.ph_correct().set_bit());
|
self.csr().modify(|_, w| w.ph_correct().set_bit());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[doc = "Disales phase correct mode"]
|
#[doc = "Disales phase correct mode"]
|
||||||
pub fn clr_ph_correct(&self) {
|
pub fn clr_ph_correct(&self) {
|
||||||
self.csr().write(|w| w.ph_correct().clear_bit());
|
self.csr().modify(|_, w| w.ph_correct().clear_bit());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[doc = "Sets the integer part of the clock divider"]
|
#[doc = "Sets the integer part of the clock divider"]
|
||||||
pub fn set_div_int(&self, value: u8) {
|
pub fn set_div_int(&self, value: u8) {
|
||||||
self.div().write(|w| unsafe { w.int().bits(value) });
|
self.div().modify(|_, w| unsafe { w.int().bits(value) });
|
||||||
}
|
}
|
||||||
|
|
||||||
#[doc = "Sets the fractional part of the clock divider"]
|
#[doc = "Sets the fractional part of the clock divider"]
|
||||||
pub fn set_div_frac(&self, value: u8) {
|
pub fn set_div_frac(&self, value: u8) {
|
||||||
self.div().write(|w| unsafe { w.frac().bits(value) });
|
self.div().modify(|_, w| unsafe { w.frac().bits(value) });
|
||||||
}
|
}
|
||||||
|
|
||||||
#[doc = "Enables output inversion"]
|
#[doc = "Enables output inversion"]
|
||||||
pub fn set_inv(&self) {
|
pub fn set_inv(&self) {
|
||||||
if (self.pin % 2 == 0) {
|
if (self.pin % 2 == 0) {
|
||||||
self.csr().write(|w| w.a_inv().set_bit());
|
self.csr().modify(|_, w| w.a_inv().set_bit());
|
||||||
} else {
|
} else {
|
||||||
self.csr().write(|w| w.b_inv().set_bit());
|
self.csr().modify(|_, w| w.b_inv().set_bit());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[doc = "Disables output inversion"]
|
#[doc = "Disables output inversion"]
|
||||||
pub fn clr_inv(&self) {
|
pub fn clr_inv(&self) {
|
||||||
if (self.pin % 2 == 0) {
|
if (self.pin % 2 == 0) {
|
||||||
self.csr().write(|w| w.a_inv().clear_bit());
|
self.csr().modify(|_, w| w.a_inv().clear_bit());
|
||||||
} else {
|
} else {
|
||||||
self.csr().write(|w| w.b_inv().clear_bit());
|
self.csr().modify(|_, w| w.b_inv().clear_bit());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,22 +204,22 @@ impl $PXi {
|
||||||
|
|
||||||
#[doc = "Sets the divmode to div. Use this if you aren't reading a PWM input."]
|
#[doc = "Sets the divmode to div. Use this if you aren't reading a PWM input."]
|
||||||
pub fn divmode_div(&self) {
|
pub fn divmode_div(&self) {
|
||||||
self.csr().write(|w| w.divmode().div());
|
self.csr().modify(|_, w| w.divmode().div());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[doc = "Sets the divmode to level."]
|
#[doc = "Sets the divmode to level."]
|
||||||
pub fn divmode_level(&self) {
|
pub fn divmode_level(&self) {
|
||||||
self.csr().write(|w| w.divmode().level());
|
self.csr().modify(|_, w| w.divmode().level());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[doc = "Sets the divmode to rise."]
|
#[doc = "Sets the divmode to rise."]
|
||||||
pub fn divmode_rise(&self) {
|
pub fn divmode_rise(&self) {
|
||||||
self.csr().write(|w| w.divmode().rise());
|
self.csr().modify(|_, w| w.divmode().rise());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[doc = "Sets the divmode to fall."]
|
#[doc = "Sets the divmode to fall."]
|
||||||
pub fn divmode_fall(&self) {
|
pub fn divmode_fall(&self) {
|
||||||
self.csr().write(|w| w.divmode().div());
|
self.csr().modify(|_, w| w.divmode().div());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,11 +227,11 @@ impl PwmPin for $PXi {
|
||||||
type Duty = u16;
|
type Duty = u16;
|
||||||
|
|
||||||
fn disable(&mut self) -> () {
|
fn disable(&mut self) -> () {
|
||||||
self.csr().write(|w| w.en().clear_bit());
|
self.csr().modify(|_, w| w.en().clear_bit());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn enable(&mut self) -> () {
|
fn enable(&mut self) -> () {
|
||||||
self.csr().write(|w| w.en().set_bit());
|
self.csr().modify(|_, w| w.en().set_bit());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_duty(&self) -> Self::Duty {
|
fn get_duty(&self) -> Self::Duty {
|
||||||
|
@ -248,9 +248,9 @@ impl PwmPin for $PXi {
|
||||||
|
|
||||||
fn set_duty(&mut self, duty: Self::Duty) {
|
fn set_duty(&mut self, duty: Self::Duty) {
|
||||||
if (self.pin % 2 == 0) {
|
if (self.pin % 2 == 0) {
|
||||||
self.cc().write(|w| unsafe { w.a().bits(duty) });
|
self.cc().modify(|_, w| unsafe { w.a().bits(duty) });
|
||||||
} else {
|
} else {
|
||||||
self.cc().write(|w| unsafe { w.b().bits(duty) });
|
self.cc().modify(|_, w| unsafe { w.b().bits(duty) });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue