在11.0592MHz的Arduino.修改Timer0,delayMicroseconds()

Arduino at 11.0592MHz. Modify Timer0, delayMicroseconds()

本文关键字:delayMicroseconds Timer0 修改 0592MHz Arduino      更新时间:2023-10-16

我在Arduino环境中使用11.0592MHz的ATMega328P。我发现delayMicroseconds()函数的速度快了27%。原因是布线.c中的代码假设时钟速度现在是8MHz。

现在我试着修复它。我发现了不同的帖子,但我不确定什么是最兼容Arduino的方式。你能推荐什么?

  1. 如果F_CPU为11.0592MHz,将布线.c中的变量"us"乘以1.27?很简单,但只影响延迟微秒,而不是毫秒()、微秒()、延迟()等
  2. 将预缩放因子从64更改为

其他想法或指南?

提前谢谢。

Felix

Arduino的方法是为您的板制作一个具有新F_CPU速度的自定义平台。核心库应该携带这个F_CPU。

这很容易,只需制作一个带有差异的boards.txt文件。其中文件的位置(两者相同)在两个当前IDE之间不同。在Arduino IDE 1.0.5的情况下:

C:\Users\mflaga\Documents\Arduino\hardware\myArduino11MgHz\boards.txt

并且在1.5.5的情况下:

C:\Users\mflaga\Documents\Arduino\hardware\myArduino11MgHz\avr\boards.txt

在您的情况下,草图目录会有所不同。

# See: http://code.google.com/p/arduino/wiki/Platforms
##############################################################
myArduino11MgHz.name=Arduino 11MgHz
myArduino11MgHz.vid.0=0x2341
myArduino11MgHz.pid.0=0x0043
myArduino11MgHz.vid.1=0x2341
myArduino11MgHz.pid.1=0x0001
myArduino11MgHz.upload.tool=avrdude
myArduino11MgHz.upload.protocol=arduino
myArduino11MgHz.upload.maximum_size=32256
myArduino11MgHz.upload.maximum_data_size=2048
myArduino11MgHz.upload.speed=115200
myArduino11MgHz.bootloader.tool=avrdude
myArduino11MgHz.bootloader.low_fuses=0xFF
myArduino11MgHz.bootloader.high_fuses=0xDE
myArduino11MgHz.bootloader.extended_fuses=0x05
myArduino11MgHz.bootloader.unlock_bits=0x3F
myArduino11MgHz.bootloader.lock_bits=0x0F
myArduino11MgHz.bootloader.file=optiboot/optiboot_atmega328.hex
myArduino11MgHz.build.mcu=atmega328p
myArduino11MgHz.build.f_cpu=11059200L
myArduino11MgHz.build.board=AVR_myArduino11MgHz
myArduino11MgHz.build.core=arduino:arduino
myArduino11MgHz.build.variant=arduino:standard
##############################################################

这是一个第三方图形用户界面编辑器的board.txt。

免责声明。以上内容确实可以编译,应该可以正常工作。我还没有真正测试并加载到一个单元中。


也就是说,我希望引导加载程序的F_CPU不匹配。对此有三种可能的解决方案。

第一个;optiboot加载程序应该有一个具有以下偏差的相应目标:

\arduino-1.5.5\hardware\ardui诺\avr\bootloader\optiboot\Makefile

myArduino11MgHz: AVR_FREQ = 11059200L

;更改boards.txt上传速度以匹配=115200*(11059200/1600000)的更改。

myArduino11MgHz.upload.speed=79626

这是一个非典型的波特率,avrdude或串行端口可能支持它

第三;不要使用引导加载,通过ISP程序员上传。


我同样计划用不同的F_CPU制作一块板,但实际上只是以相同的速度制作定制板。我很想知道,在你的情况下,以上是否真的有效。

相关文章:
  • 没有找到相关文章