#timer #peripheral #mcu #found #microchip #control #waveform

no-std samd-timer

Microchip SAM MCU上TC/TCC外设的高层API

2个不稳定版本

0.2.0 2020年3月16日
0.1.0 2020年3月8日

#1869 in 嵌入式开发

MIT许可协议

70KB
1.5K SLoC

SAMD Timer

Microchip SAMD和SAME MCU上TCC/TC外设的高层API。

Crates.io Crates.io Crates.io

此库可使用(即我正在使用它),但可能包含错误。使用风险自担。

此库提供了用于安全地处理TC和TCC外设的TimerControlTimer类型。完全支持波形生成功能、双缓冲和捕获模式。

atsamd-hal提供的抽象提供了更细粒度的计时器控制。只需将库添加到项目中;它与atsamd-hal时钟系统兼容。

用法

将以下行添加到您的Cargo.toml中。

samd-timer = "0.2.0"

以下功能标志控制您针对哪个MCU变体。

名称 # TC # TCC 板子
samd21g18a 3 3 Circuit Playground Express, Feather M0, Metro M0, MKR ZERO, SAMD21 Mini, SODAQ ONE
samd21e18a 3 3 Gemma M0, Trinket M0, Serpente
samd21j18a 5 3 SODAQ SARA AFF
samd51j19a 6 5 EdgeBadge, Feather M4, Metro M4
samd51j20a 6 5 PyPortal
samd51g19a 4 3 ItsyBitsy M4, Trellis M4
same54p20a 8 5 PathfinderZA Proto1

示例

use atsamd_hal::target_device::Peripherals;
use atsamd_hal::clock::GenericClockController;
use samd_timer::{TimerConfig, Timer, Prescaler, Synchronization, TimerWaveGen};

fn main() {
    let mut peri = Peripherals.take().unwrap();

    let mut clocks = GenericClockController::with_internal_32kosc(
        peri.GCLCK,
        &mut peri.MCLK,
        &mut peri.OSC32KCTRL,
        &mut peri.OSCCTRL,
        &mut peri.NVMCTRL
    );

    let timer_clock = clocks.gclk1();
    let tc_clock = clocks.tc0_tc1(&timer_clock).unwrap();

    /// Create a 8-bit width timer configuration.
    let mut config = TimerConfig::count8();
    config.prescaler(Prescaler::Div64)
        .sync(Synchronization::Prescaler)
        .wave_gen(TimerWaveGen::NPWM);

    /// Initialise the timer instance.
    let mut timer = config.tc0(&mut peri.MCLK, &tc_clock, peri.TC0);

    // Output a PWM wave with a period of 2 secs and duty cycle of 50%
    timer.set_period(999);
    timer.set_cc0(499);
    timer.enable();
}

功能

TCC

  • 单次操作
  • 中断控制
  • 方向改变
  • 波形生成
  • 波形输出反转
  • 抖动
  • 死区时间插入生成器
  • 输出矩阵
  • 图案生成
  • 故障控制
  • 事件控制
  • 主从操作
  • 双缓冲

TC

  • 8位模式(包括PER寄存器)
  • 16位模式
  • 32位模式
  • 中断控制
  • 单次操作
  • 方向改变
  • 波形生成
  • 波形输出反转
  • 捕获通道
  • 事件控制
  • 双缓冲(SAMx5x)
  • 捕获模式(SAMx5x)
  • 捕获引脚(SAMx5x)

许可协议

samd-timer采用MIT许可协议分发。请参阅LICENSE文件以获取许可协议的完整内容。

依赖关系

~3.5–9MB
~243K SLoC