Может показаться, что существует великое множество программаторов для контроллеров ATmega и ATtiny, и незачем "изобретать велосипед". Однако простые программаторы капризны и неудобны, а сложные пугают плохой ремонтопригодностью при случайном повреждении (особенно при работе с неисправными модулями стиральных машин). В очередной раз наш программноаппаратный комплекс Postal programmer (см. предыдущие статьи [1-3]) предоставляет необходимые возможности.
Общие сведения
Микроконтроллеры фирмы Atmel имеют на своем кристалле перепрограммируемую память Flash-типа для хранения исполняемого кода. Также часто дополнительно имеется память EEPROM с увеличенным ресурсом на перезапись, обычно используемая для хранения настроечных данных. Память EEPROM предназначена для управления из основного кода, однако может быть также загружена и программатором, например, для начальной инициализации некоторых данных. Память программ Flash-типа должна быть обязательно загружена кодом перед использованием микроконтроллера (МК) в составе устройства. Это можно сделать несколькими способами, в том числе и сам МК может загружать эту память под управлением специальной программы-загрузчика. Тем не менее, для 8-битных контроллеров Atmel наиболее часто применяется так называемая "внутрисхемная" загрузка (ISP, In-System-Programming), выполняемая программатором по специальному протоколу. Протокол использует всего 4 вывода МК - MOSI, MISO, SCK и RESET, при этом предполагается, что программируемый контроллер получает питание и тактовую частоту. Вывод RESET служит для включения режима программирования, сигнал обычно имеет низкий активный уровень, удерживающий МК в неактивном состоянии "сброса" на все время программирования. У многих контроллеров Atmel этот вывод можно переключить в альтернативный режим, после чего ISP может оказаться невозможным. Такой эффект можно получить, неправильно запрограммировав конфигурационные ячейки (FUSES). Для доступа к памяти МК в этом случае придется использовать специальные режимы - HVSP и HVPP, для входа в которые необходимо подать напряжение 12 В на вывод RESET (требуется дополнительный источник). Режим HVPP (параллельное программирование) использует 10 выводов МК и в любом случае требует демонтажа МК с платы устройства. Программатору Postal не требуется поддерживать этот режим, чтобы избежать ошибок с установкой конфигурации, существуют другие решения, просто сбрасывающие конфигурацию в нормальное состояние, после чего ISP снова возможно. Однако у Atmel есть МК с малым количеством выводов (6- и 8-выводные), в таком случае переназначение вывода RESET для своих нужд оказывается необходимым условием. При выключенном сигнале RESET эти МК программируются по протоколу HVSP, он использует 4 вывода МК для передачи данных и обоснованно поддерживается программатором, что для некоторых пользователей может оказаться большим плюсом. Однако случаи, когда для ISP необходимо использовать протокол HVSP, достаточно редки, поэтому нуждающиеся в нем могут обратиться за подробностями в конференцию [4].
Подключение 8-битных микроконтроллеров Atmel для внутрисхемного программирования
Postal programmer поддерживает все известные на данный момент 8-битные МК фирмы Atmel, имеющие аппаратно реализованный режим ISP. Возможна работа не только с AVR, но и с 8051-со-вместимыми МК. Для загрузки памяти Flash, EEPROM и конфигурации (FUSES) используются 4 выходных линии: MOSI, MISO, SCK, RESET (см. разъем XT2 на рис. 2 в [1]). Соотнести эти выходы с соответствующими выводами МК Atmel проще всего по документации от производителя [5] на конкретный контроллер. Чаще всего применяют два распространенных типа ISP-разъемов для контроллеров Atmel - 6- и 10-контактные. Обычно их устанавливают на устройства для удобства обновления прошивки, причем 6-контактный разъем - более современный, он предпочтительнее 10-контактного, т.к. имеет меньшие габариты.
В таблице 1 приведено назначение контактов разъемов для ISP МК Atmel.
Таблица 1. Расположение контактов на разъемах для ISP МК Atmel
10-контактный разъем STK200/STK300 ISP Header | |||
Контакт | Сигнал | Контакт | Сигнал |
1 | MOSI | 2 | +5V |
3 | NC (led) | 4 | GND |
5 | RESET | 6 | GND |
7 | SCK | 8 | GND |
9 | MISO | 10 | GND |
6-контактный разъем AVR ISP Header | |||
1 | MISO | 2 | VCC |
3 | SCK | 4 | MOSI |
5 | RESET | 6 | GND |
Для обеспечения процесса программирования соединяют одноименные линии программатора и программируемого устройства.
В USB-варианте нашего программатора (PostalAVR) также используется 6-контактный разъем, но его основное назначение - обновление собственной памяти программ с помощью внешнего программатора. Поэтому при использовании USB-варианта для программирования МК Atmel линия RESET программируемого устройства подключается к линии SCL на плате программатора. Это единственное исключение, остальные линии берутся с ISP-разъема программатора как обычно (один к одному). Отметим, что программатор также может управлять питанием программируемого устройства через контакт SDA, однако это не востребовано (предполагалось более надежное включение в ISP).
LPT-вариант программатора также поддерживает программирование Atmel в полном объеме, но эта поддержка носит утилитарный характер, практический смысл состоит в обновлении прошивки МК ATmega, установленного в USB-вариант программатора (PostalAVR) с использованием привычного удобного интерфейса. LPT-вариант программатора позволяет использовать два способа соединения, один из них - широко распространенный STK200 или STK300 (на самом деле это не программатор, а просто буфер для линий LPT). В крайнем случае, для разовых работ можно использовать прямое подключение к порту LPT компьютера через ограничительные резисторы номиналом 47...200 Ом.
Также необходимы дополнительные пояснения относительно управления выводом RESET программируемого МК. Дело в том, что 8051-совместимые МК Atmel используют сброс высоким уровнем, а AVR-совместимые - низким. USB-вариант программатора согласованно меняет полярность на выводе SCL, но использует вариант управления с "открытым стоком", поэтому может понадобиться дополнительный подтягивающий резистор (1 кОм) между линией SCL и питанием VCC для достижения уровня сброса при программировании 8051-совме-стимых МК. Для "обычных" (AVR) МК это делать необязательно. Решение с "открытым стоком" использовано намеренно, чтобы не вывести из строя устройство, подключенное по шине I2C случайным включением режима "Atmel".
При соединении линий питания USB-программатора VCC, GND с программируемым устройством необходимо учитывать потребление этого устройства. Если программируемое устройство питается от программатора, то обычно нужно включить программатор на напряжение питания 5 В - большинство 8-битных МК Atmel программируются при этом напряжении. Однако, если программируемое устройство питается от отдельного источника, нужно переключить программатор на напряжение питания 3,3 В во избежание втекания тока от целевого устройства в линию питания интерфейса USB компьютера. При этом, если целевое устройство подает напряжение 5 В, программатор будет получать питание с внешней стороны. Дополнительное удобство создает нечувствительность программатора к изменению напряжения питания в процессе работы.
Примеры подключения совместимых модулей стиральных машин для перепрограммирования
При работе со стиральными машинами необходимо всегда считать штатно подключенный электронный модуль (ЭМ) гальванически связанным с питающей сетью.
И хотя USB-программатор, подключенный к автономно работающему ноутбуку, имеет естественную гальваническую развязку, программирование рассматривается на примере ЭМ, снятых со стиральных машин ЭМ. В этом случае они питаются от программатора.
Довольно много ЭМ построено на МК ATmega32, например, стиральные машины "Beko WM 5XXX" (ЭМ производится компанией Invensys), "Whirlpool AWG 2XX", Candy и много других моделей. Также в ЭМ применяется МК ATmega644, полностью совместимый по выводам с ATmega32. Необязательно знать точный тип МК Atmel (маркировка типа может быть затерта или заклеена), главное - определить, к каким выводам подключать программатор, и точный тип будет определен автоматически.
Если есть сомнения в типе МК, то нужно сверить номера выводов питания и кварцевого резонатора на плате с документацией на предполагаемую микросхему и если они совпадают, то известны и точки подключения программатора - MOSI, MISO, SCK, RESET - см. таблицу 2.
Таблица 2. Данные для проверки типа контроллера (ATmega32 или ATmega644) при нечитаемой маркировке (44-выводный корпус TQFP)
Номера вывода МК Atmel | Обозначение | Действие |
7 | XTAL2 (кварцевый резонатор) | Проверяют, подключен ли резонатор (он может отсутствовать) |
8 | XTAL1 (кварцевый резонатор) | |
5, 17 | Vcc (напряжение питания +5 В) | Проверяют, соединены ли между собой все выводы Vcc и AVcc. Соединяют с Vcc программатора на ISP-разъеме (программатор должен быть отключен от USB-интерфейса ПК) |
27 | AVCC (соединен с +5 В) | |
38 | Vcc (напряжение питания +5 В) | |
6, 18, 28, 39 | GND (общий) | Проверяют соединение всех выводов с GND. Соединяют с линией GND программатора на ISP-разъеме (программатор должен быть отключен от USB-интерфейса ПК) |
1 | MOSI (вход ведомого контроллера) | Соединяют с линией MOSI программатора на ISP-разъеме (программатор должен быть отключен от USB-интерфейса ПК) |
2 | MISO (выход ведомого контроллера) | Соединяют с линией MISO программатора на ISP-разъеме (программатор должен быть отключен от USB-интерфейса ПК) |
3 | SCK (тактирование данных) | Соединяют с линией SCK программатора на ISP-разъеме и через резистор 1 кОм подключают к GND* |
4 | RESET (аппаратный сброс, низкий уровень - активный) | Соединяют с линией SCL программатора и одновременно соединяют с GND* |
* Перемычка RESET-GND и резистор между линиями SCK и GND (560 Ом.1 кОм) необходимы только в случае, если производится чтение с контроллера заведомо исправной стиральной машины для создания точной копии памяти. При подключении программатора к USB на программируемый контроллер будет подано питание, а линии RESET и SCK будут неактивны. Поскольку к ЭМ не подключено исполнительных устройств, МК, исполняя управляющую программу, может заблокироваться по какой-либо ошибке и записать ее в свою память, что совсем не нужно. Если же сохранение состояния памяти МК перед чтением необязательно, или установлена новая микросхема взамен неисправной, то перемычка на RESET-GND и резистор на SCK-GND не нужны. |
МК фирмы Atmel могут иметь защиту своего содержимого от чтения программатором, некоторые производители стиральных машин эту возможность используют. Интересная особенность состоит еще в том, что МК может быть поврежден физически,тем не менее, возможно считывание его памяти для загрузки в новый МК.
Обычно потребление платы ЭМ не превышает 200 мА, поэтому возможно его программирование с питанием от USB-интерфейса. Однако, если речь идет о неисправном модуле, то на нем может быть замыкание по питанию либо чрезмерное потребление тока. Поэтому подключать питание лучше безопасным способом: сначала переключают USB-программатор на питание 3,3 В (джампер переключения напряжения питания на программаторе [1] снят), после этого подключают USB-программатор к ПК.
Программируемый ЭМ подключают к программатору заранее. Стабилизатор 3,3 В в этом случае выполняет роль ограничителя тока, а индикаторный диод программатора покажет, что питание присутствует. Если питание 3,3 В после этого присутствует (светодиод на программаторе мигает), на место установки джампера для включения напряжения 5 В вначале подключают мультиметр в режиме измерения тока. Если ток не вызывает опасений (менее 200 мА), то заменяют мультиметр замыкающим джампером, питание возрастает до требуемых 5 В - МК можно программировать. Если потребляемый ЭМ ток слишком большой - можно попробовать подключить внешний источник 5 В. Если предполагается чтение и установлен резистор SCK-GND, то дополнительно нужно проверить напряжение на линии SCK - там должен быть низкий уровень.
Рис. 1. Подключение к ЭМ стиральной машины BEKO WM 5458 Т
Рис. 2. Подключение к ЭМ стиральной машины Whirlpool AWG 247
Чаще всего для подключения программатора к ЭМ стиральной машины к плате модуля (к контрольным точкам либо непосредственно к выводам МК) припаивают провода. Подключаться удобней не к выводам МК, а к специальным контактным площадкам на плате, с которыми эти выводы соединены. На рис. 1 показаны точки подключения программатора к разъему реальной платы ЭМ стиральной машины "BEKO WM 5458 T", контакты разъема даже имеют обозначения (на обратной стороне платы), но будьте внимательны! В нашем случае линия +5V программатора подключается к линии 0V на плате ЭМ, а линия GND - к линии -5V. На рис. 2 показаны точки подключения программатора к ЭМ стиральной машины "Whirlpool AWG 247". Здесь, как и в первом случае, наибольшая проводящая площадь на плате ЭМ соответствует линии программатора VCC (+5V). Такое обозначение связано с применением в силовой части ЭМ симисторов, которые управляются отрицательным напряжением.
Продолжение следует
Автор: Валерия Ершова (г. Москва)
Источник: Ремонт и сервис