Блок питания Atten PPS3005S - лечим отзывчивость интерфейса

pps3005sПроблемы блока питания Atten PPS3005S давно изучены, но на русском информации нигде нет.
Из чисто софтовых проблем реально мешают две:

1) Интерфейс крайне неотзывчив, кнопки опрашиваются очень медленно.
2) При переключении диапазона установки напряжения (на токе пока такого не замечал), может самопроизвольно включиться выход и текущее установленное напряжение пойдет на выход.

Вторая проблема с ходу не решаема и требует доработки прошивки (или написания новой), ну а первая довольно просто излечима. На плате управления блоком (на базе MCU ATMEGA88PA) установлен кварц на 8Mhz, но на заводе чип почему-то всегда прошивают в режим использования внутреннего RC генератора (вполне возможно это такой китайский метод «лечения» багов прошивки).

Чтобы «починить» интерфейс достаточно заменить кварц на 16Mhz и прошить соответствующие fuses, благо на плате выведен ISP интерфейс. Если вам не хочется (или некогда) лезть с паяльником в блок, то имеет смысл прошить fuses на использования внешнего кварца на 8Mhz, интерфейс блока начнет работать намного лучше.

Рекомендуемые (проверенные мной) fuses для кварца 8Mhz:
HFUSE: DC
LFUSE: DE
EFUSE: 01

ISP разъем:
1: GROUND
2: VCC
3: MOSI
4: MISO
5: RESET
6: SCK

Памятка:
1) Перед прошивкой крайне полезно сохранить оригинальную прошивку вашего блока (вдруг вам попадется новая ревизия, возможно не совместимая).
2) Для лечения интерфейса достаточно прошить только fuses, прошивку трогать не нужно.

Бонус:
Заводская прошивка для Atten PPS3005S (220V/RS232) в архиве для тех, кто убил свою :)

Комментарии (9)

RSS свернуть / развернуть
Пару картинок для приличия не помешало бы, чтоб стало понятно о чём речь, иначе совсем скучно
0
Добавил пару картинок.
0
Стало читабельней, спасибо
0
А разве они не защитили LOCK битами прошивку?
0
Нет. По крайне мере в большей части выпущенных блоков читается и прошивается все без проблем (судя по отзывам в сети).
Жаль сама прошивка глючная.
0
Давно бы дизассемблировали и допилили.
0
Желание сделать нормальную прошивку есть, но пока нет возможности.
Дизассемблер прошивки давно уже лежит, все упирается в свободное время, которого почти нет.
Да и с AVR asm я не знаком настолько, чтобы сделать что-то быстро (объем кода прошивки почти 8kb).
По сути мне сейчас нужно изучить atmega88 чип, потом avr ассемблер, а только потом браться за прошивку.
Просто исправлением пары инструкций там скорее всего не обойдется, т.к. по моему там проблемы с атомарностью
операций и (или) обработкой прерываний. Вероятно придется изучить железо, что и куда пишут и написать нормальный код с 0. Возможно я ошибаюсь, но надежды мало :)
+1
Да и с AVR asm я не знаком настолько, чтобы сделать что-то быстро
Для ковыряния прошивки достаточно таблицы команд из даташита (плюс общее знание ассемблера). 8кб — довольно много, но если есть желание, расколупать его вполне реально. По времени, полагаю, займет с недельку (не по полчаса в день, разумеется).
По сути мне сейчас нужно изучить atmega88 чип
Как и с ассемблером, достаточно заглядывать в даташит за используемыми прошивкой регистрами. И общее представление о том, как процы вообще работают.
Отладчик — подспорье полезное, но не необходимое. Задача вполне реальная, я подобным занимался.

Вариант «написать свой код с нуля», впрочем, может оказаться самым простым, для него достаточно реверсировать железо. Но можно и вляпаться в какие-нибудь грабли.
0
Возможно я возьмусь за это, когда у меня будет нормальный внутрисхемный отладчик.
Сейчас кроме usbasp для avr у меня ничего нет.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.