Настройка Arduino Uno как ArduinoISP для программирования attiny45
У меня есть Arduino Uno SMD и attiny45, которые я хочу использовать в качестве датчика, обменивающегося данными через i2c. В качестве первого шага в изучении того, как работать с attiny45, я просто хочу использовать attiny в качестве контроллера для мигающего светодиода.
При первой настройке Arduino как "Arduino as ISP" возникли вопросы:
Я нашел много разной информации о том, стоит ли использовать конденсатор между RESET и GND на Arduino. Также емкость различается между 0,1 мкФ и 10 мкФ. К сожалению, я не нашел ни одного комментария, зачем нужен (или нет) этот конденсатор и какие емкости подходят. Во всех уроках использовались электролитические конденсаторы (которые у меня есть только на 100 мкФ). У меня под рукой есть 10нФ и 0,1мкФ, но только пленочные конденсаторы. Было бы здорово, если бы кто-нибудь помог мне решить, стоит ли мне использовать конденсатор, какой из них подходит и в чем причина его использования.
Мой второй вопрос касается тактовой частоты, которую я должен установить в Arduino IDE. Я добавил пакет платы из https://github.com/SpenceKonde/ATTinyCore в свою IDE Arduino, которая предлагает большое разнообразие тактовые частоты в раскрывающемся меню инструментов. В некоторых туториалах упоминалось, что крайне важно выбрать правильную тактовую частоту, чтобы не повредить компьютер. Но, к сожалению, упомянутые тактовые частоты варьируются от «1 МГц (внутренняя)» до и "8 МГц (внутренний)". В техническом описании attiny45 (http:/ /ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf). это часы, установленные в только что поставленных микросхемах, которые, как я понимаю, работают на частоте 8 МГц. Но в техническом описании также говорится, что предохранитель CKDIV8 установлен при поставке, что приводит к значению предварительной шкалы тактовой частоты 8 и к тактовой частоте 1 МГц. Я очень запутался... Может быть, кто-нибудь здесь поможет мне найти правильную тактовую частоту для установки.
Надеюсь, я не забыл ничего важного. Если да, дайте мне знать.
С уважением и заранее спасибо, Матиас
@Matthias Jung, 👍1
1 ответ
Лучший ответ:
Конденсатор предназначен для предотвращения сброса программирования Arduino. Обычно, когда вы открываете последовательное соединение, Arduino сбрасывается и сначала запускается в загрузчик (который будет использоваться для его программирования). Но при использовании Arduino в качестве программатора ISP вам не нужно запускать загрузчик программатора. Вы хотите, чтобы скетч-программист работал так, как задумано. Таким образом, вы хотите предотвратить сброс программатора при последовательном соединении. Конденсатор между сбросом и землей удерживает уровень 5 В на контакте сброса в течение того времени, пока импульс сброса от микросхемы USB Serial пытается перевести контакт на низкий уровень. Таким образом, это предотвращает сброс.
Номинал и тип конденсатора здесь не имеют решающего значения. Я всегда использую конденсатор с биполярным электролитом на 47 мкФ, потому что у меня их куча. Значение просто не должно быть необоснованно маленьким или большим. Упомянутый вами диапазон просто дает вам подсказку, в каком порядке должно быть значение. Также вы можете просто проверить, происходит ли сброс с вашим конденсатором. Вы не можете сломать вещи с неправильным значением здесь.
Используемая тактовая частота зависит от ваших конкретных требований. Нет никакой частоты "это лучшее на все случаи жизни". Кроме того, вы не разрушаете Attiny ни с одной из тактовых частот. Хотя вы должны отметить, что выбор внешнего источника синхронизации означает, что вам действительно нужно предоставить этот источник синхронизации для работы ATTiny. Фьюзы можно перепрограммировать, если вы случайно выбрали не ту частоту.
В техническом описании указано именно то, что вы написали. Внутренний осциллятор по умолчанию настроен на 8 МГц, а прескалер делит его до 1 МГц в качестве тактовой частоты основного процессора. Таким образом, по умолчанию ATTiny работает на частоте 1 МГц. Вы можете изменить это, если хотите.
Для моих Attiny85 я всегда использовал внутреннюю частоту 8 МГц в качестве настройки (опция, которая появляется в меню IDE). Это самый простой способ (внутренний означает, что вам не нужны внешние компоненты для часов), и, я думаю, это самая высокая скорость, которую вы можете получить с внутренними часами.
- При использовании Arduino Uno в качестве ISP: "Yikes! Invalid device signature" - плохое соединение, неверную конфигурацию или неверную версию avrdude?
- Какую скорость передачи данных com порта можно использовать без ошибок?
- Связь ATtiny85 с компьютером через USB
- Получить доступ к EEPROM ATtiny с помощью кода Arduino?
- avrdude: ошибка проверки, первое несоответствие в байте 0x0000 : 0x00 != 0x16 с использованием USBasp
- Насколько холодным или горячим может быть Arduino Uno?
- Радиочастотное дистанционное управление с использованием VirtualWire на ATtiny85, работающем на частоте 8 МГц на внутреннем генераторе
- I2C с ATtiny85 на частоте 8 МГц с использованием библиотеки TinyWireM
Отлично, это мне очень помогло. Большое спасибо @chrisl, @Matthias Jung
Импульс сброса проходит через конденсатор 0,1 мкФ, поэтому удерживающий конденсатор 0,1 мкФ действительно является пограничным. Я бы стремился к ≥ 0,47 мкФ или 0,22 мкФ как минимум., @Edgar Bonet