【问题标题】:High Frequency GPIO toggle AVR高频 GPIO 切换 AVR
【发布时间】:2016-10-01 16:45:49
【问题描述】:

我有一个基本的 AVR 设置,带有 ATmega328P 和一个在其上运行的 FreeRTOS 内核。我想在 30kHz-60kHz 之间切换一个设置为高频输出的 GPIO 引脚。 GPIO 切换的频率由其他 RTOS 任务和功能连续确定,介于 30kHz-60kHz 之间。

我想问如何在不断变化的如此高频率下切换 GPIO。我正在使用 Atmel Studio 7。请帮助。

【问题讨论】:

  • 您考虑过使用 PWM 还是要手动切换?
  • 我不知道@Julien 有什么更好的方法。如果我选择 PWM,我不能在旅途中改变频率(这就是我的想法,如果我错了,请告诉我)。但是如果我选择普通的 GPIO,我不知道如何快速切换它并在旅途中改变它的频率。
  • 还很大程度上取决于您可能希望软件执行的其他操作 - 定期切换信号与定时循环非常有效,以防您的软件没有其他事情可做。一旦你有很多中断,它往往会变得有点毛茸茸。

标签: toggle avr gpio freertos atmelstudio


【解决方案1】:

如果您计划以大约每 2 个脉冲更改频率,那么软件可能是一个解决方案。如果频率会保持几个 10th 或 100ds 的脉冲,PWM 绝对是不错的方法。

当然,您可以随时随地管理 PWM 频率和周期。您将需要使用datasheet 的 PWM 部分读取 timer/counterX。如果您始终需要 50% 的占空比,第 15.7.2 节是最好的配置方式。如果您需要占空比和频率,则适用 §15.7.3。

涵盖所有可能的配置在此处编写将过于宽泛,但如果您开始实施并遇到问题,您可以提出新问题。

【讨论】:

  • 在阅读了一些教程和数据表之后,我对我必须做的事情有了一个大致的了解@Julien。所以,我总结了我的理解(如果我错了,请纠正我) - 当我改变频率(通过改变最高值)时,占空比无论如何都会受到影响。感谢您让我走到这一步。
  • @PrabhatNarang 如果您使用方法 §15.7.2 更改 TOP 值将更改频率并将 TCCRxA COMxA1:0 位配置为在溢出时切换,您将始终保持 50% 的占空比,而无需重新配置。当然,如果您需要另一个超过 50% 的占空比,这是行不通的,更改 TOP 值将改变占空比。所以你总是需要同时重新配置两者
猜你喜欢
  • 2022-01-14
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多