Представьте себе, что вы попали на необитаемый остров. И вам жизненно необходимо запрограммировать микроконтроллер. Зачем, спросите вы? Ну, допустим, чтобы починить аварийный радиомаяк, без которого шансы на спасение резко падают.
Радуясь, что еще не забыли курс ассемблера, вы кое-как написали программу палочкой на песке. Среди уцелевших вещей каким-то чудом оказалась распечатка документации на контроллер (хорошо, что вы еще не успели пустить её на растопку!), и программу удалось перевести в машинные коды. Осталась самая ерунда — прошить её в контроллер. Но в радиусе 500 километров нет ни одного программатора, не говоря уже о компьютерах. У вас только источник питания (батарея из картошки кокосов) и пара кусков провода.
Как же прошить МК фактически голыми руками?
В качестве подопытного будет выступать МК ATtiny13 фирмы Atmel. Описанная методика работает практически с любым контроллером семейства AVR, разве что коды команд могут незначительно отличаться.
Интерфейс
Самым распространенным и удобным интерфейсом для прошивки AVR является SPI (Serial Peripheral Interface). Для подключения по SPI нужно всего четыре провода, не считая земли:
SCK — тактовый сигнал, синхронизирует все операции обмена данными;
MOSI (Master Out Slave In) — линия данных от ведущего устройства к ведомому;
MISO (Master In Slave Out) — линия данных, наоборот, от ведомого устройства к ведущему;
RESET — для разрешения прошивки по SPI нужно подать логический «0» на этот вывод.
Таким образом, нам необходимо сформировать три сигнала и (необязательно) прочитать один. Вот так выглядит простейшая схема для этого:
Рис. 1. Простейшая схема подключения по SPI.
Для своего же удобства можно добавить индикацию входных сигналов. Схема усложняется, но не чрезмерно:
Рис. 2. Схема с индикацией сигналов.
Защита от дребезга
К сожалению, просто используя кнопки для формированя сигналов SPI, хорошего результата мы не добьёмся. Причина этого — в неприятном явлении, которое называется дребезг контактов. При замыкании механические контакты соударяются, отскакивают друг от друга, и вместо одного импульса получается несколько. Для подавления дребезга придется собрать простую схему из пары логических элементов:
Read more: Habrahabr.ru
QR:
0 comments:
Post a Comment