Страница 1 из 1

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

Добавлено: Ср июл 03, 2019 07:27:35
tttt000
Здравствуйте!
Появилось несколько вопросов, которые не получается решить. Очень надеюсь на помощь тех, кто уже прошел этот путь.
Используя плату Ардуино, мне удалось загрузить прошивку в 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
Morroc
[uquote="tttt000",url="/forum/viewtopic.php?p=3660234#p3660234"]Вопросы:
-- в интернете Reset подключают по-разному. Кто-то через резистор, кто-то через конденсатор.
https://habr.com/ru/post/144620/
http://freeduino.ru/arduino/isp.html
Каков смысл сего шаманства? :)) И вообще, для чего это неоходимо? Для сброса контроллера? А в какой момент? Или наоборот, чтобы не было сброса?[/uquote]
Чтобы не было сброса МК-программатора когда открывается COM порт на компе.

[uquote="tttt000",url="/forum/viewtopic.php?p=3660234#p3660234"]-- почему avrdude понимает, что первый контроллер ведущий, а второй ведомый, только на определенной скорости и после подключения кнопки Reset, а иначе пытается записать код в первый крнтроллер?[/uquote]
Скетч программатора гляньте - скорее всего там будет строка типа Serial.Begin(19200); вот это и есть та скорость, с которой программатор работает с компом. В первый контроллер код не загрузится если его не перезагружать reset'ом - для того и то шаманство выше.

[uquote="tttt000",url="/forum/viewtopic.php?p=3660234#p3660234"]-- любой код я могу записать с помощью этого программатора из Ардуино? У меня есть еще 2113 и Atmega8, смогу я прошить их Ардуинкой? Поменять fuse?(мне хотелось бы собрать на одной из них программатор) Какие подводные камни будут ожидать меня на этом пути?[/uquote]
Фиг знает... скорее всего можно все, что сможет avrdude.

[uquote="tttt000",url="/forum/viewtopic.php?p=3660234#p3660234"]У меня есть простейшее устройство: ИК-приемник, получающий единственный сигнал от пульта ДУ, и включающий нагрузку на другом выводе Ардуино, через транзистор. Скетч использует библиотеку IRemote.h. И в итоге занимает 7,8Кбайт.Если, скажем, взять hex этого скетча из ArduinoIDE и записать в Atmega8, то он займет почти всю память.(а там еще и стек, который вверх растет и может быть случайно затерт) Боюсь, что такой подход очень плохой.[/uquote]
Конечно плохой, ведь это дело для ардуин разработано, а в них Atmega8 давно не ставят.

[uquote="tttt000",url="/forum/viewtopic.php?p=3660234#p3660234"]А как в таком случае перенести программу на другой контроллер с меньшим количеством памяти? По какому пути пойти?

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

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

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

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

Добавлено: Ср июл 03, 2019 13:49:06
tttt000
[uquote="Morroc",url="/forum/viewtopic.php?p=3660384#p3660384"]Чтобы не было сброса МК-программатора когда открывается COM порт на компе.[/uquote]
Ага...т.е. это тогда, когда я начинаю заливать прошивку.. Так я, в принципе, и думал. Спасибо!
Т.е. если на Reset высокий уровень, то МК не перегрузится. Понятно.

[uquote="Morroc",url="/forum/viewtopic.php?p=3660384#p3660384"]Скетч программатора гляньте - скорее всего там будет строка типа Serial.Begin(19200); вот это и есть та скорость, с которой программатор работает с компом.[/uquote]
Да. Посмотрел. Точно есть.


[uquote="Morroc",url="/forum/viewtopic.php?p=3660384#p3660384"]Подобное не для начинающих. Делаются... ну представьте себе как бы вы сами интерпретировали осциллограмму НЧ сигнала с ИК приемника - определить тайминги, найти там нули и единицы, сложить в число.[/uquote]
Я вот тут нашел..
http://we.easyelectronics.ru/Soft/prost ... ik-du.html
Попробую разобраться. Сейчас, чуть полегче будет(лежу болею, так что время есть).
Я хоть и маленький котенок, но с острыми зубками и коготочками. :))) Будем разбираться, что там с ИК-приемника приходит...

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

Добавлено after 12 minutes 51 second:
[uquote="BOB51",url="/forum/viewtopic.php?p=3660418#p3660418"]Для такого вообще-то может проще из ардуино-нанки программатор соорудить, воспользовавшись вот сим:
https://www.arduino.cc/en/tutorial/ArduinoISP
8)[/uquote]
Да, спасибо! Я, в принципе, так и делал. Программатор из UNO работает. Будем дальше ковыряться :))