Обсуждаем контроллеры компании Atmel.
Ответить

Arduino Uno как программатор avrisp

Ср июл 03, 2019 07:27:35

Здравствуйте!
Появилось несколько вопросов, которые не получается решить. Очень надеюсь на помощь тех, кто уже прошел этот путь.
Используя плату Ардуино, мне удалось загрузить прошивку в Attiny13. Простейший blink. Но есть недопонимание.
Первоначально avrdude ни в какую не хотела понимать, что Ардуинка -- просто программатор, ругаясь что я указываю Attiny13 вместо Atmega328. Победить это удалось только установкой резистора в 100 Ом на Reset и программно задав скорость порта в 19200. Вопросы:
-- в интернете Reset подключают по-разному. Кто-то через резистор, кто-то через конденсатор.
https://habr.com/ru/post/144620/
http://freeduino.ru/arduino/isp.html
Каков смысл сего шаманства? :)) И вообще, для чего это неоходимо? Для сброса контроллера? А в какой момент? Или наоборот, чтобы не было сброса?
-- почему avrdude понимает, что первый контроллер ведущий, а второй ведомый, только на определенной скорости и после подключения кнопки Reset, а иначе пытается записать код в первый крнтроллер?
-- любой код я могу записать с помощью этого программатора из Ардуино? У меня есть еще 2113 и Atmega8, смогу я прошить их Ардуинкой? Поменять fuse?(мне хотелось бы собрать на одной из них программатор) Какие подводные камни будут ожидать меня на этом пути?
И еще вопрос про устройство.
У меня есть простейшее устройство: ИК-приемник, получающий единственный сигнал от пульта ДУ, и включающий нагрузку на другом выводе Ардуино, через транзистор. Скетч использует библиотеку IRemote.h. И в итоге занимает 7,8Кбайт.Если, скажем, взять hex этого скетча из ArduinoIDE и записать в Atmega8, то он займет почти всю память.(а там еще и стек, который вверх растет и может быть случайно затерт) Боюсь, что такой подход очень плохой.
А как в таком случае перенести программу на другой контроллер с меньшим количеством памяти? По какому пути пойти?
В сети есть попытки переписать IRemote. Там, например, уменьшают количество пультов ДУ, с которыми работает библиотека. У меня же вообще только одна кнопка задействована. Написать бы просто обработчик для нее. Но как это сделать, я не знаю :? (blink на Attiny13, например, занимает 80байт. В 100 раз меньше!) Если не сложно, подскажите, где подсмотреть, как делаются подобные обработчики.(для самых-самых начинающих)

P.S. Пожалуйста, не предлагайте купить программатор. У меня нет сейчас такой возможности (не финансовой). А попробовать и поразбираться время есть.
И да, я работаю только в Линукс. Windows не знаю вообще, и компьютера с ней у меня сейчас нет.

Re: Arduino Uno как программатор avrisp

Ср июл 03, 2019 11:02:03

Вопросы:
-- в интернете Reset подключают по-разному. Кто-то через резистор, кто-то через конденсатор.
https://habr.com/ru/post/144620/
http://freeduino.ru/arduino/isp.html
Каков смысл сего шаманства? :)) И вообще, для чего это неоходимо? Для сброса контроллера? А в какой момент? Или наоборот, чтобы не было сброса?

Чтобы не было сброса МК-программатора когда открывается COM порт на компе.

-- почему avrdude понимает, что первый контроллер ведущий, а второй ведомый, только на определенной скорости и после подключения кнопки Reset, а иначе пытается записать код в первый крнтроллер?

Скетч программатора гляньте - скорее всего там будет строка типа Serial.Begin(19200); вот это и есть та скорость, с которой программатор работает с компом. В первый контроллер код не загрузится если его не перезагружать reset'ом - для того и то шаманство выше.

-- любой код я могу записать с помощью этого программатора из Ардуино? У меня есть еще 2113 и Atmega8, смогу я прошить их Ардуинкой? Поменять fuse?(мне хотелось бы собрать на одной из них программатор) Какие подводные камни будут ожидать меня на этом пути?

Фиг знает... скорее всего можно все, что сможет avrdude.

У меня есть простейшее устройство: ИК-приемник, получающий единственный сигнал от пульта ДУ, и включающий нагрузку на другом выводе Ардуино, через транзистор. Скетч использует библиотеку IRemote.h. И в итоге занимает 7,8Кбайт.Если, скажем, взять hex этого скетча из ArduinoIDE и записать в Atmega8, то он займет почти всю память.(а там еще и стек, который вверх растет и может быть случайно затерт) Боюсь, что такой подход очень плохой.

Конечно плохой, ведь это дело для ардуин разработано, а в них Atmega8 давно не ставят.

А как в таком случае перенести программу на другой контроллер с меньшим количеством памяти? По какому пути пойти?

В сети есть попытки переписать IRemote. Там, например, уменьшают количество пультов ДУ, с которыми работает библиотека. У меня же вообще только одна кнопка задействована. Написать бы просто обработчик для нее. Но как это сделать, я не знаю :? (blink на Attiny13, например, занимает 80байт. В 100 раз меньше!) Если не сложно, подскажите, где подсмотреть, как делаются подобные обработчики.(для самых-самых начинающих)

Подобное не для начинающих. Делаются... ну представьте себе как бы вы сами интерпретировали осциллограмму НЧ сигнала с ИК приемника - определить тайминги, найти там нули и единицы, сложить в число.

Re: Arduino Uno как программатор avrisp

Ср июл 03, 2019 12:13:55

Для такого вообще-то может проще из ардуино-нанки программатор соорудить, воспользовавшись вот сим:
https://www.arduino.cc/en/tutorial/ArduinoISP
8)

Re: Arduino Uno как программатор avrisp

Ср июл 03, 2019 13:49:06

Чтобы не было сброса МК-программатора когда открывается COM порт на компе.

Ага...т.е. это тогда, когда я начинаю заливать прошивку.. Так я, в принципе, и думал. Спасибо!
Т.е. если на Reset высокий уровень, то МК не перегрузится. Понятно.

Скетч программатора гляньте - скорее всего там будет строка типа Serial.Begin(19200); вот это и есть та скорость, с которой программатор работает с компом.

Да. Посмотрел. Точно есть.


Подобное не для начинающих. Делаются... ну представьте себе как бы вы сами интерпретировали осциллограмму НЧ сигнала с ИК приемника - определить тайминги, найти там нули и единицы, сложить в число.

Я вот тут нашел..
http://we.easyelectronics.ru/Soft/prost ... ik-du.html
Попробую разобраться. Сейчас, чуть полегче будет(лежу болею, так что время есть).
Я хоть и маленький котенок, но с острыми зубками и коготочками. :))) Будем разбираться, что там с ИК-приемника приходит...

Спасибо большое за помощь!

Добавлено after 12 minutes 51 second:
Для такого вообще-то может проще из ардуино-нанки программатор соорудить, воспользовавшись вот сим:
https://www.arduino.cc/en/tutorial/ArduinoISP
8)

Да, спасибо! Я, в принципе, так и делал. Программатор из UNO работает. Будем дальше ковыряться :))
Ответить