use atsamd_hal::adc::Adc;
use atsamd_hal::clock::GenericClockController;
use atsamd_hal::pac::gclk::pchctrl::Genselect::Gclk11;
use atsamd_hal::pac::{Adc1, Mclk, Tcc0};
use atsamd_hal::prelude::*;
use atsamd_hal::pwm::{TCC0Pinout, Tcc0Pwm};
use super::pins::aliases::*;
pub struct Buzzer {
pub ctr: BuzzerCtrlReset,
}
impl Buzzer {
pub fn init(
self,
clocks: &mut GenericClockController,
tcc0: Tcc0,
mclk: &mut Mclk,
) -> Tcc0Pwm<BuzzerCtrlId, BuzzerCtrlMode> {
let pinout = TCC0Pinout::Pd11(self.ctr);
let gclk0 = clocks.gclk0();
let pwm0 = Tcc0Pwm::new(
&clocks.tcc0_tcc1(&gclk0).unwrap(),
1.kHz(),
tcc0,
pinout,
mclk,
);
pwm0
}
}
pub struct Microphone {
pub mic: MicOutputReset,
}
impl Microphone {
pub fn init(
self,
adc: Adc1,
clocks: &mut GenericClockController,
mclk: &mut Mclk,
) -> (Adc<Adc1>, MicOutput) {
let adc1 = Adc::adc1(adc, mclk, clocks, Gclk11);
(adc1, self.mic.into())
}
}