|
Проблема с переходом от AS2 на AVRISP mkII |
|
|
|
May 6 2009, 08:18
|
Группа: Новичок
Сообщений: 7
Регистрация: 6-05-09
Пользователь №: 48 715

|
Здравствуйте! Не могли бы вы помочь со следующей проблемкой. В серийном производстве плат, на которых установлена AtMega128, мы долгое время использовали as2 (обычный, старый, не m) из-за того, что разработчики предоставили нам именно его. Сейчас мы закупили для другой цели несколько AVRISP mkII, в связи с чем я решил попробовать использовать один из них для прошивки тех плат. Нужно мне это из-за давней мечты о программировании из командной строки, раздражает меня программа as2isp. Так вот, проблема в следующем. Перепробовал несколько плат, стабильно avrisp работает только на одной, на остальных даже сигнатура не читается, Entering programming mode.. FAILED и все, причем выдает сообщение о том, что на SCK возможно КЗ. Хотя бывали моменты правильного чтения сигнатуры на этих платах, но это единичные случаи. С as2 те же самые платы работают без проблем, сигнатура сходу читается на частотах SPI вплоть до 115 кГц. С avrisp пробовал понижать частоту вплоть до 6 кГц, пробовал вроде и ниже на отдельных платах - не хотят и все. Возможно, проблема может быть в следующем: 1) На плате по SPI подключен еще и сигнальный процессор TMS, они с АтМегой иногда конфликтуют в случае неправильной прошивки, но в данном случае дело явно не в этом - на as2 все нормально. Может быть, линии слишком нагружены? 2) На линии RESET стоит микросхемина TPS3801L30, которая генерит низкий уровень ресета или из внешнего сигнала сброса (с разъема SPI), или из-за недостаточного напряжения питания (начальная инициализация). Я так понимаю, это стандартно, но вдруг именно она вносит какие-то искажения? 3) Может быть, влияет длина проводников? Плата подключается к программатору через контактные площадки (ложе гвоздей), потом идет на программатор, общая длина проводников для avrisp сантиметров 30-40, не больше, у as2 явно длиннее, там чуть ли не метр, так что это вряд ли. Думаю, понятно, что с первыми двумя пунктами я ничего поделать не могу, если только для интереса что-то выпаять, так как плата уже разведена так, а не иначе. Но если кто сможет помочь (например, поменять что-то в самом avrisp), буду очень признателен.
|
|
|
|
|
May 6 2009, 11:17
|
Группа: Новичок
Сообщений: 7
Регистрация: 6-05-09
Пользователь №: 48 715

|
Цитата(SysRq @ May 6 2009, 15:11)  Осциллоскопом посмотрите что на PDO\PDI\SCK\RESET в момент поптыки программирования. Найдите отличия м\у работой программаторов. Да и потом, у as2 10-контактный разъем ISP, а у mkII 6-контактный. Правильно подключили?
PS: as2isp тоже умеет с командной строки; однако, сам не проверял... Да, подключил точно правильно, потому что переходник с 6-контектного на 10-контактный работает на другом стенде, при программировании других плат, которые тоже раньше работали через as2. А по поводу командной строки, то как я понял, она работает в новой версии программы, которая для as2m-as3-as4, а со старыми программаторами эта версия проги не работает. Вот, а по поводу осциллографа гляну чуть попозже, под рукой его нет, надо будет тащить к стенду.
|
|
|
|
|
May 6 2009, 12:08
|
Группа: Новичок
Сообщений: 7
Регистрация: 6-05-09
Пользователь №: 48 715

|
Цитата(MDD @ May 6 2009, 15:46)  На счет обычных АВРов не скажу, я их другим программатором программирую (avreal+STK200). А вот при программировании Хмеги через AVR ISP mkII заметил, что этот программатор достаточно щепетильно относится к контакту Vcc на разъеме. Как-то по ошибке подал туда напряжение на доли вольта отличающееся от напряжения питания контроллера. В результате программирование пошло с ошибками. Судя по всему программатор измеряет напряжение на этом пине и по нему выставляет уровни программирующих сигналов. Проверил прямо по схеме, на разъем идет то же напряжение, что и запитывает контроллер (2.8 В), дело точно не в этом
|
|
|
|
|
May 6 2009, 13:26
|
Группа: Новичок
Сообщений: 7
Регистрация: 6-05-09
Пользователь №: 48 715

|
Пробежался по ножкам, reset идеальный, на хорошей и "плохой" плате не отличаются, а вот на SCK на неработающей с avrisp плате вмечто частоты какой-то мусор, а на хорошей все нормально. Означает ли это, что не хватает нагрузочной способности? Как я и говорил, эта цепь идет еще и на ножку TMS-а, больше никуда. Я ведь правильно понимаю, SCK генерируется программатором, мы же именно им частоту задаем? Может быть можно как-то усилить этот сигнал? Как-нибудь доработав программатор... Ни у кого нет его схемы (avrisp mkII имею в виду)?
|
|
|
|
|
May 7 2009, 05:32
|
Группа: Новичок
Сообщений: 7
Регистрация: 6-05-09
Пользователь №: 48 715

|
Цитата(defunct @ May 7 2009, 03:33)  Может быть стоит пойти от обратного и убрать лишние рты?. подключить SCK только к SCK, а не к SCK и еще к TMS и еще к какой-то ботве. К сожалению, проблема в том, что даже если это и поможет, пользы никакой не будет - плату то я менять не могу, не выпаивать же для прошивки атмеги BGA-шный TMS на всех сотнях/тысячах плат
|
|
|
|
|
May 8 2009, 09:23
|
Группа: Новичок
Сообщений: 7
Регистрация: 6-05-09
Пользователь №: 48 715

|
Цитата(Александр Куличок @ May 7 2009, 22:12)  для уменьшения емкостной нагрузки поставьте на SCK последовательно резистор (100+ Ом) последовательно между мегой и TMS.
P.S. TMS случаем SCK'ем не пытается управлять? Проблема в том, что я не знаю точно, что делает в этот момент TMS, но тем не менее с as2 все работает. Повозился еще с осциллографом, у меня получилось следующее. RESET и на плохих, и на хороших платах одинаковый (под плохими платами понимаю здесь те, на которых не получается считать сигнатуры атмеги с помощью avrisp, но c as2 сигнатура читается). Повесил на SCK подтяжку 5кОм. При этом на хороших платах на SCK после включения питания 2.8 В, а на плохих какое-то страное напряжение, порядка 1.5 В. Так вот, на плохих платах при попытке считать сигнатуру эти 1.5 В поднимаются на долю секунды до 2.8 В, а потом возвращаются к 1.5. Никаких синхроимпульсов там нет. На хороших же идут синхроимпульсы. Если же подключить as2, то там после 1.5 В идут синхроимпульсы с амплитудой 2.8 В, а потом, после чтения сигнатуры, напряжение возвращается к 1.5 В. То есть несмотря на эту подсадку, as2 нормально управляет этим выводом. Пробовал еще по советам повесить резистор 2кОм на RESET между разъемом ISP и супервизором, ничего не изменилось... Прилагаю к сообщению упрощенную схемку системы, может быть, посоветуете, что еще попробовать... К сожалению, допаивать что-то я могу только в разрыв между программатором и разъемом ISP, как, например, упомянутые подтяжка на SCK и 2к на RESET.
Сообщение отредактировал vul - May 8 2009, 09:24
|
|
|
|
|
May 8 2009, 15:31
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(vul @ May 8 2009, 12:23)  К сожалению, допаивать что-то я могу только в разрыв между программатором и разъемом ISP, как, например, упомянутые подтяжка на SCK и 2к на RESET. Ну и впаяйте туда буфер типа нс125. Или вообще одногейтовый только на SCK.
|
|
|
|
|
May 12 2009, 06:59
|
Группа: Новичок
Сообщений: 7
Регистрация: 6-05-09
Пользователь №: 48 715

|
Цитата(Qwertty @ May 8 2009, 19:31)  Ну и впаяйте туда буфер типа нс125. Или вообще одногейтовый только на SCK. Тут подсказали идею, которая выглядит очень верно, только неясно что с этим делать. Дело в том, что этот супервизор TPS3801 задерживает низкое напряжение на выходе RESET относительно входа MR на 200 мс. Это означает, что avrisp уже давно снял ресет и продолжает формировать последующую временную диаграмму, а атмега еще в ресете. as2, по видимому, дольше выжидает после снятия ресета, поэтому с ним и меньше проблем. Возникает вопрос, нельзя ли найти прошивку, в которой это время увеличено. Все больше подозреваю, что дело все же в этом. Видел информацию о какой-то прошивке клона avrisp mkII, к родному программатору она подходит, никто не знает? И есть ли в этом смысл? А по поводу буфера - может ли это помочь? И как его впаивать? Просто z-буфер, который пропускает информацию в направлении от ISP к атмеге на линии SCK? а открывать его каким сигналом?
|
|
|
|
|
May 12 2009, 07:12
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(vul @ May 12 2009, 09:59)  Все больше подозреваю, что дело все же в этом. Вы думаете что импульсов на SCK нет из за задержки снятия сигнала RESET? Цитата(vul @ May 12 2009, 09:59)  А по поводу буфера - может ли это помочь? И как его впаивать? Просто z-буфер, который пропускает информацию в направлении от ISP к атмеге на линии SCK? а открывать его каким сигналом? Пробуйте. Enable - RESET. Который, если буфер не одногейтовый, тоже можно отвязать - вход буфера на землю, выход на резет контроллера, enable на резет с программатора.
|
|
|
|
|
May 21 2009, 05:59
|
Группа: Новичок
Сообщений: 1
Регистрация: 3-04-08
Пользователь №: 36 438

|
Проблема решается весьма просто ! Подключите выход супервизора ко входу RESET контроллера через резистор, например 1кОм, а программатор непосредственно ко входу RESET. В этом случае супервизор не будет "мешать" программатору
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|