Я использую Boarduino и 30-рядную макетную плату для программирования своей ATtiny. Я загружаю не слишком сложный скетч, называемый ArduinoISP (теперь он включен по умолчанию в Arduino IDE), и вдруг у меня появляется работающий программист. Atmel продает хорошего программиста за 30-40 долларов, и есть множество наборов для создания более дешевых.
Я был очень счастлив, когда получил своего работающего программиста и заставил крошечного моргнуть несколькими светодиодами. Однако, теперь мой бедный boarduino застрял на обязанности программиста.
Насколько я могу судить, этот программист удерживает нажатой кнопку сброса, а затем передает и принимает сигналы MOSI и MISO. Я думаю, что SCK не используется или, по крайней мере, не нужен. (Согласно спецификации ATtiny необходим SCK, мой программист не работает без него, и я не могу найти место, которое, как мне показалось, я прочитал, не нужно).
Зачем мне аппаратный программист, чтобы просто передавать последовательный? Я имею в виду, давайте предположим, что я хочу удерживать кнопку сброса пальцем вместо использования IC. Все, что осталось - это последовательная отправка и получение, поэтому все, что мне нужно, это три провода GND, RXD и TXD. Черт возьми, если у меня есть линия «DTR» или что-то еще, вы можете даже удерживать кнопку сброса с помощью последовательного кабеля.
Почему существуют все эти аппаратные решения, которые также требуют модного программного обеспечения (например, AVRdude, или AVR studio, или что-то еще)?
Я имею в виду, что мог бы понять маленький USB-кабель, который представлял микроконтроллер как устройство хранения данных и позволял вам перетаскивать двоичные файлы для программирования (например, на эту плату разработки ARM ). Только аппаратное обеспечение с использованием стандартных драйверов программного обеспечения.
Я также мог понять только программное решение (по модулю подключать провода от USB к чипу, используя что-то вроде чипа FTDI, чтобы упростить то, что идет по проводам). Весь причудливый протокол программирования будет обрабатываться программным обеспечением на компьютере, а аппаратное обеспечение будет просто проводом.
Почему у нас есть (сложное) программное и аппаратное обеспечение? Я имею в виду, насколько я могу судить, программирование микроконтроллеров довольно просто, но когда я только начинал в этом разбираться, я действительно беспокоился о том, как я собираюсь когда-либо покупать чип от mouser или digikey, не платя гуру за программирование загрузчика для меня.
Я уверен, что есть веская причина (это не значит, что я написал программное обеспечение или начал производство USB-программатора с технологией drag-n-drop), но как новичок я понятия не имею, что это такое.