Arduino на 11.0592 МГц. Изменить Timer0, delayMicroseconds ()

Я использую ATMega328P с частотой 11.0592 МГц в среде Arduino. Я понял, что функция delayMicroseconds () работает примерно на 27% быстрее. Причина в том, что код в wiring.c предполагает, что тактовая частота теперь составляет 8 МГц.

Сейчас я пытаюсь это исправить. Я нашел разные посты, но я не уверен, что наиболее совместим с Arduino. Что вы можете порекомендовать?

  1. Умножьте переменную «нас» в wiring.c на 1,27, если F_CPU равен 11,0592 МГц? Легко, но влияет только на delayMicroseconds, а не на millis (), micros (), delay () и т. Д.
  2. Измените коэффициент предварительной шкалы с 64 на ???

Другие идеи или руководства?

Заранее спасибо.

Феликс

1

Решение

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 \ АРН \ 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

##############################################################

Вот Сторонний редактор GUI Board.txt.

Отказ от ответственности. Вышесказанное компилируется и должно работать нормально. Где я на самом деле не тестировал и не загружал в блок.


Тем не менее, я ожидаю, что F_CPU загрузчика не будет соответствовать. Есть три возможных решения этого.

Первый; загрузчик optiboot должен иметь соответствующую цель со следующим отклонением:

\ Arduino-1.5.5 \ HARDWARE \ Arduino \ АРН \ загрузчики \ optiboot \ Makefile

myArduino11MgHz: AVR_FREQ = 11059200L

второй; Измените скорость загрузки board.txt, чтобы она соответствовала изменению = 115200 * (11059200/16000000).

myArduino11MgHz.upload.speed=79626

Это нестандартная скорость передачи данных, либо avrdude, либо последовательный порт могут ее поддерживать.

В третьих; Не используйте загрузку, загружая через программиста ISP.


Я также планировал сделать плату с другим F_CPU, но только на самом деле, изготовленную на заказ, с той же скоростью. Мне было бы интересно узнать, работает ли вышеизложенное на самом деле, в вашем случае.

0

Другие решения

Других решений пока нет …