RadioRadar - Радиоэлектроника, даташиты, схемы

https://www.radioradar.net/repair_electronic_technics/repair_home_appliances/postal_programmer_8_bit_microcontrollers_atmega_attiny_atmel_part1.html

Postal programmer — умный программатор. Работа c с 8-битными микроконтроллерами ATmega, ATtiny фирмы Atmel и примеры подключения к модулям стиральных машин (часть 1)

Может показаться, что существует великое множество программаторов для контроллеров 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 - там должен быть низкий уровень.

Подключение к ЭМ стиральной машины BEKO WM 5458 Т

Рис. 1. Подключение к ЭМ стиральной машины BEKO WM 5458 Т

 

Подключение к ЭМ стиральной машины Whirlpool AWG 247

Рис. 2. Подключение к ЭМ стиральной машины Whirlpool AWG 247

 

Чаще всего для подключения программатора к ЭМ стиральной машины к плате модуля (к контрольным точкам либо непосредственно к выводам МК) припаивают провода. Подключаться удобней не к выводам МК, а к специальным контактным площадкам на плате, с которыми эти выводы соединены. На рис. 1 показаны точки подключения программатора к разъему реальной платы ЭМ стиральной машины "BEKO WM 5458 T", контакты разъема даже имеют обозначения (на обратной стороне платы), но будьте внимательны! В нашем случае линия +5V программатора подключается к линии 0V на плате ЭМ, а линия GND - к линии -5V. На рис. 2 показаны точки подключения программатора к ЭМ стиральной машины "Whirlpool AWG 247". Здесь, как и в первом случае, наибольшая проводящая площадь на плате ЭМ соответствует линии программатора VCC (+5V). Такое обозначение связано с применением в силовой части ЭМ симисторов, которые управляются отрицательным напряжением.

Продолжение следует

Автор: Валерия Ершова (г. Москва)

Источник: Ремонт и сервис