Программа ATtiny85 работает на частоте 16 Килогерц

Я установил предохранители моего attiny85 так, чтобы он использовал внутренние тактовые частоты 128 кГц, предварительно настроенные так, чтобы они были 16 кГц. Я также установил предохранитель CKOUT, чтобы я мог проверить часы с помощью осциллографа на выводе 3, и да, это 16 кГц.

Теперь моя проблема в том, что в Arduino IDE у меня нет возможности скомпилировать код для тактовой частоты 16 кГц. Самый медленный, который у меня есть, - 128 кГц, что приводит к тому, что скетч "мигания" работает в течение 8 секунд, что на 8 секунд меньше моего внимания вместо 1 секунды.

Я попробовал с "attiny" от Дэвида А. Меллиса, используя https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json (Самый медленный : 1 МГц) и "ATTinyCore" от Спенса Конде с использованием http://drazzy.com/package_drazzy.com_index.json (Самый медленный : 128 кГц).

Кто-нибудь знает, как я могу настроить Arduino IDE для компиляции кода для attiny85 с использованием внутренних часов 16 кГц ?

(Пожалуйста, без вопросов "зачем использовать часы с частотой 16 кГц ?". Дело в том, что этот чип может быть настроен на тактовую частоту 16 кГц, поэтому должна быть возможность запрограммировать его на использование такой тактовой частоты)

- Спасибо.

, 👍1

Обсуждение

Я предлагаю вам выбрать то ядро, которое вам больше всего нравится, а затем открыть выпуск github (или где бы он ни размещался), чтобы добавить соответствующие настройки тактовой частоты., @Majenko

@Majenko Спасибо вам за предложение. Я надеюсь, что уже есть один, обеспечивающий такую тактовую частоту, и кто-нибудь укажет на это здесь, но если нет, я сделаю так, как вы говорите., @Squall124

Для ATTinyCore вы можете изменить в boards.txt настройка для используемого вами варианта (https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/boards.txt#L409-L412). В первую очередь измените "f_cpu". Я не знаю о "clocksource = 3", хотя посмотрите это в коде. В boards.txt должен ли он быть в " C:\Users\\AppData\Local\Arduino15\packages\ATTinyCore\hardware\avr\1.5.2<user>`, @Maximilian Gerhardt

Это должно быть просто вопросом корректировки boards.txt файл для ядра, но может быть какая-то техническая причина (расчеты, которые не выполняются) на этой тактовой частоте, по которой он еще не реализован., @Majenko

@MaximilianGerhardt Я изменил значения f_cpu и low_fuses на свои значения (16000L и 0x24), и это работает ! Спасибо! Я не изменял clocksource=3, так как не знаю, что это значит., @Squall124

https://arduinoprosto.ru/q/54484/adding-a-custom-board-to-the-arduino-ide/60660#60660, @Juraj


1 ответ


Лучший ответ:

1

Ядро Arduino, на которое вы ссылались (и почти все остальные ядра AVR Arduino тоже), определяет тактовую частоту, на которой работает конкретная выбранная плата в boards.txt файл. В platform.txt затем файл извлекает это значение и создает макрос F_CPU с тактовой частотой в герцах в качестве значения.

Для ATTinyCore от Spence Konde определением платы ATtiny85 является раздел attinyx5. Там вы можете либо добавить новый пункт меню выбора часов, либо изменить настройки существующего, например

https://github.com/SpenceKonde/ATTinyCore/blob/f5eabc8fb97e8fd72f1782a5e97345729e42ec47/avr/boards.txt#L409-L412

attinyx5.menu.clock.128internal=128 kHz (internal WDT)
attinyx5.menu.clock.128internal.bootloader.low_fuses=0xC4
attinyx5.menu.clock.128internal.build.f_cpu=128000L
attinyx5.menu.clock.128internal.build.clocksource=3

Файл находится локально под C:\Users\<пользователь>\AppData\Локальный\Arduino15\пакеты\ATTinyCore\оборудование\avr\1.5.2<пользователь>.

Там f_cpu следует изменить на 16000L для 16 кГц, значение low_fuses (lfuse) должно быть равно 0x24, а текст "128 кГц" также должен быть адаптирован. Это работает в соответствии с комментарием к вопросу.

В заключение следует отметить, что вам следует создать проблему в репозитории ядра, чтобы по умолчанию было добавлено 16 кГц.

Кроме того, вам может быть проще работать с PlatformIO (+VSCode) вместо Arduino IDE. Страница "Начало работы" находится здесь. В PlatformIO вместо необходимости изменять внутреннюю boards.txt файл, вы можете создать файл конфигурации проекта (platformio.ini), в котором вы указываете ту же настройку.

[env:attiny85]
platform = atmelavr
board = attiny85
framework = arduino
board_build.f_cpu = 16000L
; for upload settings, see 
; https://docs.platformio.org/en/latest/platforms/atmelavr.html#upload-using-programmer
,

Спасибо вам за всю информацию ! Много чего нужно прочитать, многому научиться, много чего попробовать ! :p, @Squall124