首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >arduino适合高频应用吗?

arduino适合高频应用吗?
EN

Stack Overflow用户
提问于 2015-06-01 15:44:58
回答 2查看 1.3K关注 0票数 1

是否可以将arduino用于频率为4 MHz的应用程序?

我需要用这个频率创建一个时钟,并在上升沿和下降沿发送和接收数据。这不是一个普通的SPI接口,我有我自己的条件,所以我需要手动完成。

如果不合适,技术上可行吗?

EN

回答 2

Stack Overflow用户

发布于 2015-06-01 15:50:04

使用arduino Mega2560,您可以生成的最大PWM为62500 Hz。我不认为你能超越这一点。Method

您可以使用内部SPI,因此与16 MHz振荡器,您可以有一些地方从16 MHz到(16/128)MHz。Method

票数 1
EN

Stack Overflow用户

发布于 2017-01-21 01:43:07

您可以使用Timer1 (ATMega328和ATmega32U4)以4 4MHz的频率进行脉宽调制输出,以下是UNO/NANO (ATMega328)的示例:

代码语言:javascript
复制
    pinMode(10, OUTPUT); // Output pin
    // Set Timer1 to phase and frequency correct mode. NON-inverted mode
    TCCR1A = _BV(COM1A1) | _BV(COM1B1); 

    // Set prescaler to clk/1 (outputs from 122,072Hz to 4MHz
    TCCR1B = _BV(WGM13) | _BV(CS10);

    //ICR Register, which controls the PWM total pulse length
    ICR1 = 2; // value 2 makes pulse width = 2 clock cycles (with clk/1 prescaler)
    //OCR Registers, which control the PWM duty cycle.
    // OCR1A + OCR1B must be = IRC1.
    OCR1A = 1; // 1 pulse of the IRC1 total pulse length will be HIGH
    OCR1B = 1; // 1 pulse of the IRC1 total pulse length will be HIGH

提示:您可以将其他IRC1和OCR1值用于其他频率和占空比。频率= 8000000/IRC1。

示例: IRC1 = 4,OCR1A = 1,OCR1B =3

将输出如下所示的PWM:

频率8000000/IRC1 = 8000000/4= 200000 of =2 2MHz

1个时钟周期为高(OCRA1=1),3个时钟周期为低(OCR1B=3)

OCR1A/IRC1的占空比= 1/4 = 25%

注意:在此之后,任何使用TIMER1的Arduino代码都将无法工作(或者将不稳定地工作)。Arduino使用TIMER1作为伺服库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30568178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档