Перейти к содержанию
    

Проблема с переходом от AS2 на AVRISP mkII

Здравствуйте! Не могли бы вы помочь со следующей проблемкой. В серийном производстве плат, на которых установлена 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), буду очень признателен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осциллоскопом посмотрите что на PDO\PDI\SCK\RESET в момент поптыки программирования. Найдите отличия м\у работой программаторов.

Да и потом, у as2 10-контактный разъем ISP, а у mkII 6-контактный. Правильно подключили?

 

PS: as2isp тоже умеет с командной строки; однако, сам не проверял...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осциллоскопом посмотрите что на PDO\PDI\SCK\RESET в момент поптыки программирования. Найдите отличия м\у работой программаторов.

Да и потом, у as2 10-контактный разъем ISP, а у mkII 6-контактный. Правильно подключили?

 

PS: as2isp тоже умеет с командной строки; однако, сам не проверял...

 

Да, подключил точно правильно, потому что переходник с 6-контектного на 10-контактный работает на другом стенде, при программировании других плат, которые тоже раньше работали через as2.

 

А по поводу командной строки, то как я понял, она работает в новой версии программы, которая для as2m-as3-as4, а со старыми программаторами эта версия проги не работает.

 

Вот, а по поводу осциллографа гляну чуть попозже, под рукой его нет, надо будет тащить к стенду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На счет обычных АВРов не скажу, я их другим программатором программирую (avreal+STK200).

А вот при программировании Хмеги через AVR ISP mkII заметил, что этот программатор достаточно щепетильно относится к контакту Vcc на разъеме. Как-то по ошибке подал туда напряжение на доли вольта отличающееся от напряжения питания контроллера. В результате программирование пошло с ошибками. Судя по всему программатор измеряет напряжение на этом пине и по нему выставляет уровни программирующих сигналов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На счет обычных АВРов не скажу, я их другим программатором программирую (avreal+STK200).

А вот при программировании Хмеги через AVR ISP mkII заметил, что этот программатор достаточно щепетильно относится к контакту Vcc на разъеме. Как-то по ошибке подал туда напряжение на доли вольта отличающееся от напряжения питания контроллера. В результате программирование пошло с ошибками. Судя по всему программатор измеряет напряжение на этом пине и по нему выставляет уровни программирующих сигналов.

 

Проверил прямо по схеме, на разъем идет то же напряжение, что и запитывает контроллер (2.8 В), дело точно не в этом :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пробежался по ножкам, reset идеальный, на хорошей и "плохой" плате не отличаются, а вот на SCK на неработающей с avrisp плате вмечто частоты какой-то мусор, а на хорошей все нормально. Означает ли это, что не хватает нагрузочной способности? Как я и говорил, эта цепь идет еще и на ножку TMS-а, больше никуда. Я ведь правильно понимаю, SCK генерируется программатором, мы же именно им частоту задаем? Может быть можно как-то усилить этот сигнал? Как-нибудь доработав программатор... Ни у кого нет его схемы (avrisp mkII имею в виду)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть можно как-то усилить этот сигнал? Как-нибудь доработав программатор... Ни у кого нет его схемы (avrisp mkII имею в виду)?

Может быть стоит пойти от обратного и убрать лишние рты?. подключить SCK только к SCK, а не к SCK и еще к TMS и еще к какой-то ботве.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть стоит пойти от обратного и убрать лишние рты?. подключить SCK только к SCK, а не к SCK и еще к TMS и еще к какой-то ботве.

 

К сожалению, проблема в том, что даже если это и поможет, пользы никакой не будет - плату то я менять не могу, не выпаивать же для прошивки атмеги BGA-шный TMS на всех сотнях/тысячах плат :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для уменьшения емкостной нагрузки поставьте на SCK последовательно резистор (100+ Ом) последовательно между мегой и TMS.

 

P.S. TMS случаем SCK'ем не пытается управлять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для уменьшения емкостной нагрузки поставьте на 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.

 

post-48715-1241774637_thumb.jpg

Изменено пользователем vul

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовать на период прошивки меги глушить TMS. Допустим ресет на нем активировать. Еще может мк2 отслеживает SCK и в случае мусора прекращает сеанс => через диод подать, чтобы просадку отсеять, а до диода подтянуть к питанию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К сожалению, допаивать что-то я могу только в разрыв между программатором и разъемом ISP, как, например, упомянутые подтяжка на SCK и 2к на RESET.

Ну и впаяйте туда буфер типа нс125. Или вообще одногейтовый только на SCK.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну и впаяйте туда буфер типа нс125. Или вообще одногейтовый только на SCK.

 

Тут подсказали идею, которая выглядит очень верно, только неясно что с этим делать. Дело в том, что этот супервизор TPS3801 задерживает низкое напряжение на выходе RESET относительно входа MR на 200 мс. Это означает, что avrisp уже давно снял ресет и продолжает формировать последующую временную диаграмму, а атмега еще в ресете. as2, по видимому, дольше выжидает после снятия ресета, поэтому с ним и меньше проблем. Возникает вопрос, нельзя ли найти прошивку, в которой это время увеличено. Все больше подозреваю, что дело все же в этом. Видел информацию о какой-то прошивке клона avrisp mkII, к родному программатору она подходит, никто не знает? И есть ли в этом смысл?

 

А по поводу буфера - может ли это помочь? И как его впаивать? Просто z-буфер, который пропускает информацию в направлении от ISP к атмеге на линии SCK? а открывать его каким сигналом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все больше подозреваю, что дело все же в этом.

Вы думаете что импульсов на SCK нет из за задержки снятия сигнала RESET? :biggrin:

А по поводу буфера - может ли это помочь? И как его впаивать? Просто z-буфер, который пропускает информацию в направлении от ISP к атмеге на линии SCK? а открывать его каким сигналом?

Пробуйте. Enable - RESET. Который, если буфер не одногейтовый, тоже можно отвязать - вход буфера на землю, выход на резет контроллера, enable на резет с программатора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема решается весьма просто !

Подключите выход супервизора ко входу RESET контроллера через резистор, например 1кОм,

а программатор непосредственно ко входу RESET.

В этом случае супервизор не будет "мешать" программатору

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...