Handle differences between PACs
This commit is contained in:
parent
0c0597f775
commit
87ca902e44
1 changed files with 7 additions and 15 deletions
|
@ -143,17 +143,17 @@ impl<'d, T: Instance> Timer<'d, T> {
|
||||||
|
|
||||||
/// Starts the timer.
|
/// Starts the timer.
|
||||||
pub fn start(&self) {
|
pub fn start(&self) {
|
||||||
T::regs().tasks_start.write(|w| w.tasks_start().trigger())
|
T::regs().tasks_start.write(|w| unsafe { w.bits(1) })
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Stops the timer.
|
/// Stops the timer.
|
||||||
pub fn stop(&self) {
|
pub fn stop(&self) {
|
||||||
T::regs().tasks_stop.write(|w| w.tasks_stop().trigger())
|
T::regs().tasks_stop.write(|w| unsafe { w.bits(1) })
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Reset the timer's counter to 0.
|
/// Reset the timer's counter to 0.
|
||||||
pub fn clear(&self) {
|
pub fn clear(&self) {
|
||||||
T::regs().tasks_clear.write(|w| w.tasks_clear().trigger())
|
T::regs().tasks_clear.write(|w| unsafe { w.bits(1) })
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the START task, for use with PPI.
|
/// Returns the START task, for use with PPI.
|
||||||
|
@ -194,11 +194,7 @@ impl<'d, T: Instance> Timer<'d, T> {
|
||||||
fn on_interrupt(_: *mut ()) {
|
fn on_interrupt(_: *mut ()) {
|
||||||
let regs = T::regs();
|
let regs = T::regs();
|
||||||
for n in 0..T::CCS {
|
for n in 0..T::CCS {
|
||||||
if regs.events_compare[n]
|
if regs.events_compare[n].read().bits() != 0 {
|
||||||
.read()
|
|
||||||
.events_compare()
|
|
||||||
.is_generated()
|
|
||||||
{
|
|
||||||
// Clear the interrupt, otherwise the interrupt will be repeatedly raised as soon as the interrupt handler exits.
|
// Clear the interrupt, otherwise the interrupt will be repeatedly raised as soon as the interrupt handler exits.
|
||||||
// We can't clear the event, because it's used to poll whether the future is done or still pending.
|
// We can't clear the event, because it's used to poll whether the future is done or still pending.
|
||||||
regs.intenclr.write(|w| match n {
|
regs.intenclr.write(|w| match n {
|
||||||
|
@ -274,7 +270,7 @@ impl<'a, T: Instance> Cc<'a, T> {
|
||||||
|
|
||||||
/// Capture the current value of the timer's counter in this register, and return it.
|
/// Capture the current value of the timer's counter in this register, and return it.
|
||||||
pub fn capture(&self) -> u32 {
|
pub fn capture(&self) -> u32 {
|
||||||
T::regs().tasks_capture[self.n].write(|w| w.tasks_capture().trigger());
|
T::regs().tasks_capture[self.n].write(|w| unsafe { w.bits(1) });
|
||||||
self.read()
|
self.read()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -457,13 +453,9 @@ impl<'a, T: Instance> Cc<'a, T> {
|
||||||
poll_fn(|cx| {
|
poll_fn(|cx| {
|
||||||
T::waker(self.n).register(cx.waker());
|
T::waker(self.n).register(cx.waker());
|
||||||
|
|
||||||
if regs.events_compare[self.n]
|
if regs.events_compare[self.n].read().bits() != 0 {
|
||||||
.read()
|
|
||||||
.events_compare()
|
|
||||||
.is_generated()
|
|
||||||
{
|
|
||||||
// Reset the register for next time
|
// Reset the register for next time
|
||||||
regs.events_compare[self.n].write(|w| w.events_compare().not_generated());
|
regs.events_compare[self.n].reset();
|
||||||
Poll::Ready(())
|
Poll::Ready(())
|
||||||
} else {
|
} else {
|
||||||
Poll::Pending
|
Poll::Pending
|
||||||
|
|
Loading…
Reference in a new issue