Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перестала шиться Мега128
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Andrey M
Перестала шиться Мега128 - пишет Not connected, еще вчера все было нормально, чип работает (предыдущая прошивка работает нормально), пробовал прошить другую плату с Мега16 - шьется нормально. Замыкал PEN на ноль - без результата. Пробовал менять синхронизацию -о16000 и другие варианты - пишет Can't resync.

avreal/WIN32 - AVR controllers LPT programmer by Redchuk Alexandr
v1.25rev5 (Jan 15 2007 20:02:38) http://www.ln.com.ua/~real/avreal
bug-reports, suggestions and so on mail to avreal@real.kiev.ua

Command:
-ab -p1 -o0 -e -w -v -fjtagen=1,boden=0,cksel=f,ckopt=0,brst=1,m103c=1,eesave=1 +mega128 -c pod.a90
Not connected
Can't continue
Reset pin released
Adapter disabled
Dog Pawlowa
Цитата(Andrey M @ Jun 10 2007, 11:07) *
Перестала шиться Мега128 - пишет Not connected, еще вчера все было нормально...

Оторвалось что-то, или снаружи или внутри Меги.
Внутри "отрывается" при нарушении правил заземления или хотя бы выравнивания потенциалов компьютера и устройства. Поклянитесь, что не убили Мегу при соединении и рассоединении! biggrin.gif
=AVR=
Я бы на ее месте тоже перестал шиться после того, как в меня зашили ассемблерный файл (pod.a90) вместо хекса smile.gif

Для начала дай диагностическую строку -ab -p1 -o100 -v -f +mega128 -% > info.txt и выложи сюда этот info.txt
Andrey M
Файл не ассемблерный, не первый день замужем.
Пытался подставлять разную синхронизацию, соединял RESET и PEN - все без толку.

avreal/WIN32 - AVR controllers LPT programmer by Redchuk Alexandr
v1.25rev5 (Jan 15 2007 20:02:38) http://www.ln.com.ua/~real/avreal
bug-reports, suggestions and so on mail to avreal@real.kiev.ua

Command:
-ab -p1 -o100 -v -f +mega128 -%
% LPT base port 0x378
% assume that LPT data writes not faster then 1uS
% ByteBlaster found
% ByteBlaster mode
% osc = 100kHz -> setup=20, hold=20,19
% Reset
% PgmOn reply 0xFFFFFFFF
% Try 1 to resync by reset pulse % PgmOn reply 0xFFFFFFFF
% Try 2 to resync by reset pulse % PgmOn reply 0xFFFFFFFF
% Try 3 to resync by reset pulse % PgmOn reply 0xFFFFFFFF
% Try 4 to resync by reset pulse % PgmOn reply 0xFFFFFFFF
Can't resync
Reset pin released
Adapter disabled


А вот это в принципе могло быть, т.к. "земли" не соединял, но хотелось бы убедиться что никаких шансов перепрошить не осталось. Само-то устройство работает без замечаний (вчерашняя прошивка)!
=AVR=
Не понял - какие земли не соединял - устройства и ВВ?? Тогда ничего не должно работать вообще!
SunnyAngel
Пробовали перегрузить компьютер, авр студию и устройство? Была аналогичная проблема - авр студия глючит.
=AVR=
Точно, точно. А еще можно попробовать лампочку в сортире включать-выключать - тоже, говорят, помогает :-)

КАКАЯ НА.. СТУДИЯ, ЕСЛИ ЧЕЛОВЕК ПОЛЬЗУЕТСЯ AVREAL???
SunnyAngel
Цитата(=AVR= @ Jun 10 2007, 13:39) *
Точно, точно. А еще можно попробовать лампочку в сортире включать-выключать - тоже, говорят, помогает :-)

КАКАЯ НА.. СТУДИЯ, ЕСЛИ ЧЕЛОВЕК ПОЛЬЗУЕТСЯ AVREAL???


Бывает, глюкнуло... Но можно и повключать/повыключать, если помогает, а тем более если Вы проверили.
Andrey M
Цитата(=AVR= @ Jun 10 2007, 13:32) *
Не понял - какие земли не соединял - устройства и ВВ?? Тогда ничего не должно работать вообще!


Имелось в виду "выравнивание потенциалов компьютера и устройства".

Сейчас протокол записи такой:

CODE
avreal/WIN32 - AVR controllers LPT programmer by Redchuk Alexandr
v1.25rev5 (Jan 15 2007 20:02:38) http://www.ln.com.ua/~real/avreal
bug-reports, suggestions and so on mail to avreal@real.kiev.ua

Command:
-ab -p1 -o0 -e -w -v -fjtagen=1,boden=0,cksel=f,ckopt=0,brst=1,m103c=1,eesave=1 +mega128 -c pod.a90 -%
% Fuse added: JTAGEN=1
% Fuse added: BODEN=0
% Fuse added: CKSEL=F
% Fuse added: CKOPT=0
% Fuse added: BRST=1
% Fuse added: M103C=1
% Fuse added: EESAVE=1
% LPT base port 0x378
% assume that LPT data writes not faster then 1uS
% ByteBlaster found
% ByteBlaster mode
% osc = 0kHz -> XTAL will be generated
% with SCK low 2 periods, high 2 periods
% Reset
% PgmOn reply 0xFFFF5300
% Synchronised after 1 try
% GetID reply 0x00000000
Not connected
Can't continue
Reset pin released
Adapter disabled

Посмотрел у Меги16 он такой:

avreal/WIN32 - AVR controllers LPT programmer by Redchuk Alexandr
v1.25rev5 (Jan 15 2007 20:02:38) http://www.ln.com.ua/~real/avreal
bug-reports, suggestions and so on mail to avreal@real.kiev.ua

Command:
-ab -p1 -o0 -e -w -v -fjtagen=1,boden=0,ckopt=0,cksel=f,brst=1,eesave=1 -l2 +mega16 -c dugisp.a90 -%
% Fuse added: JTAGEN=1
% Fuse added: BODEN=0
% Fuse added: CKOPT=0
% Fuse added: CKSEL=F
% Fuse added: BRST=1
% Fuse added: EESAVE=1
% LPT base port 0x378
% assume that LPT data writes not faster then 1uS
% ByteBlaster found
% ByteBlaster mode
% osc = 0kHz -> XTAL will be generated
% with SCK low 2 periods, high 2 periods
% Reset
% PgmOn reply 0xFFFF5300
% Synchronised after 1 try
% GetID reply 0x0030001E
% GetID reply 0x00300094
% GetID reply 0x00300003
% Read ID: 0x1E9403
Device connected, MEGA16 detected
% ReadLock command 0x58000000
% ReadLock reply 0x005800FC
Chip locked - reading and programming disabled
% ReadOsccal command 0x38000000
% ReadOsccal reply 0x003800BF
% ReadOsccal command 0x38000100
% ReadOsccal reply 0x003800BF
% ReadOsccal command 0x38000200
% ReadOsccal reply 0x003800B9
% ReadOsccal command 0x38000300
% ReadOsccal reply 0x003800B9
% Erase reply 0x00AC8000
Device erased
% Reset
% PgmOn reply 0xFFFF5300
% Synchronised after 1 try
% GetID reply 0x0030001E
% GetID reply 0x00300094
% GetID reply 0x00300003
% Read ID: 0x1E9403
Device connected, MEGA16 detected
% ReadLock command 0x58000000
% ReadLock reply 0x005800FF
% ReadFuses command 0x50000000
% ReadFuses reply 0x005000AF
% ReadFuses command 0x58000000
% ReadFuses reply 0x005800FF
% ReadFuses command 0x58080000
% ReadFuses reply 0x005808C9
Fuses
OSCCAL = BF, BF, B9, B9
BODLEVEL = 1
BODEN = 0
SUT = 2
CKSEL = F
BLB1 = 3
BLB0 = 3
OCDEN = 1
JTAGEN = 1
CKOPT = 0
EESAVE = 1
BOOTSZ = 0
BOOTRST = 1
Programming CODE memory
....... done
Verifying CODE memory
....... passed
done
Programming fuses
% WriteFuses command 0xACA000AF
% WriteFuses reply 0x00ACA000
% WriteFuses command 0xACA800E9
% WriteFuses reply 0xAFACA800
% ReadFuses command 0x50000000
% ReadFuses reply 0xE95000AF
% ReadFuses command 0x58000000
% ReadFuses reply 0x005800FF
% ReadFuses command 0x58080000
% ReadFuses reply 0x005808C9
New fuses value
OSCCAL = BF, BF, B9, B9
BODLEVEL = 1
BODEN = 0
SUT = 2
CKSEL = F
BLB1 = 3
BLB0 = 3
OCDEN = 1
JTAGEN = 1
CKOPT = 0
EESAVE = 1
BOOTSZ = 0
BOOTRST = 1
Verifying fuses
% ReadFuses command 0x50000000
% ReadFuses reply 0x005000AF
% ReadFuses command 0x58000000
% ReadFuses reply 0x005800FF
% ReadFuses command 0x58080000
% ReadFuses reply 0x005808C9
passed
% BLB* read 0x005800FF
% Lock command 0xACE000FC
% Lock reply 0x00ACE000
Device locked to level 2!
Reset pin released
Adapter disabled


Не определяется Device ID, неужели это смертельно!?
=AVR=
А -o0 поддержано физически - проводком с соответствующей ноги ВyteВlaster нв XTAL1?

Раз получена синхронизация, то на 99% дело в тактировании/питании. Замени -o0 на -o100, убери (если есть) соединение BB с XTAL1 (у тебя CKSEL/CKOPT нормально сконфигурированы на ВЧ кварц) и повтори попытку. Или наоборот, обеспечь это соединение и повторяй с -o0.

А принудительно заставить игнорировать определение устройства можно ключом -!, но может и не помочь
Andrey M
Цитата(=AVR= @ Jun 10 2007, 14:15) *
А -o0 поддержано физически - проводком с соответствующей ноги ВyteВlaster нв XTAL1?

Раз получена синхронизация, то на 99% дело в тактировании/питании. Замени -o0 на -o100, убери (если есть) соединение BB с XTAL1 (у тебя CKSEL/CKOPT нормально сконфигурированы на ВЧ кварц) и повтори попытку. Или наоборот, обеспечь это соединение и повторяй с -o0.

А принудительно заставить игнорировать определение устройства можно ключом -!, но может и не помочь


Опцией -о0 пользуюсь второй год если не больше (так как одно время столкнулся с проблемой синхронизации) и до сегодняшнего дня проблем не возникало.
Вот что с ключем -!

avreal/WIN32 - AVR controllers LPT programmer by Redchuk Alexandr
v1.25rev5 (Jan 15 2007 20:02:38) http://www.ln.com.ua/~real/avreal
bug-reports, suggestions and so on mail to avreal@real.kiev.ua

Command:
-ab -p1 -o0 -e -w -v -fjtagen=1,boden=0,cksel=f,ckopt=0,brst=1,m103c=1,eesave=1 -! +mega128 -c pod.a90 -%
% Fuse added: JTAGEN=1
% Fuse added: BODEN=0
% Fuse added: CKSEL=F
% Fuse added: CKOPT=0
% Fuse added: BRST=1
% Fuse added: M103C=1
% Fuse added: EESAVE=1
% LPT base port 0x378
% assume that LPT data writes not faster then 1uS
% ByteBlaster found
% ByteBlaster mode
% osc = 0kHz -> XTAL will be generated
% with SCK low 2 periods, high 2 periods
% Reset
% PgmOn reply 0xFFFF5300
% Synchronised after 1 try
% GetID reply 0x00000000
Not connected
% Read ID: 0x000000
% ReadLock command 0x58000000
% ReadLock reply 0x00000000
Chip locked - reading and programming disabled
% ReadOsccal command 0x38000000
% ReadOsccal reply 0x00000000
% ReadOsccal command 0x38000100
% ReadOsccal reply 0x00000000
% ReadOsccal command 0x38000200
% ReadOsccal reply 0x00000000
% ReadOsccal command 0x38000300
% ReadOsccal reply 0x00000000
% Erase reply 0x00000000
Device erased
% Reset
% PgmOn reply 0xFFFF5300
% Synchronised after 1 try
% GetID reply 0x00000000
Not connected
% Read ID: 0x000000
% ReadLock command 0x58000000
% ReadLock reply 0x00000000
Device type forced to MEGA128
Can't write to locked chip
Reset pin released
Adapter disabled
=AVR=
Ну вот все и прояснилось - чип залочен. Снимай лок - делай Chip Erase (только -e -! +mega128), затем передергивай питание и спокойно прожигай все, что хотел
IgorKossak
За пост №7 =AVR= получил предупреждение с лишением прав на неделю.

Andrey M скоро получит если не уберёт длинные тексты в приаттаченные файлы.
Andrey M
Цитата(=AVR= @ Jun 10 2007, 14:38) *
Ну вот все и прояснилось - чип залочен. Снимай лок - делай Chip Erase (только -e -! +mega128), затем передергивай питание и спокойно прожигай все, что хотел


Ничего не помогает!
Стирал, питание отключал, шил (и так по кругу раз десять), все равно не шьется!
Doka
Цитата(IgorKossak @ Jun 10 2007, 15:43) *
Andrey M скоро получит если не уберёт длинные тексты в приаттаченные файлы.


либо использовать таг "codebox" для оформления больших кусков кода (см.пост #9)
Andrey M
Сегодня сходил на работу, воспользовался осциллографом и решил проблему - мега живая и нормально шьется.
Оказалось что неудачно разработали схему устройства. На UART0 заложили оптоизолированный драйвер RS485 (MAX1480) - при программировании все ноги меги отключаются и драйвер переключается на передачу. Сам драйвер тоже какой-то кривой - в режиме передачи приемник не отключается! Получилось что сигнал MISO дублировался на линию MOSI! Отсюда и все проблемы.
До этого устройство нормально шилось оттого что в схеме была еще одна ошибка - у MAX1480 выход приемника (/RO) инверсный и у меня не принимались данные, а когда я поставил инвертор обмен данными пошел, а мега шиться перестала! Но опять не понятно, ведь сигнал MISO тоже дублировался на линию MOSI, правда с инверсией!?
И кстати после этой разработки никому не советую использовать MAX1480, столько проблем в одном месте я еще не встречал! Лучше использовать связку DC-DC преобразователь (типа P6KU-0505) и драйвер ADM2483.
Pyku_He_oTTyda
Цитата
И кстати после этой разработки никому не советую использовать MAX1480, столько проблем в одном месте я еще не встречал!

какие именно? Мы используем и не встречали проблем
Dog Pawlowa
Цитата(Andrey M @ Jun 11 2007, 19:16) *
...И кстати после этой разработки никому не советую использовать MAX1480, столько проблем в одном месте я еще не встречал! Лучше использовать связку DC-DC преобразователь (типа P6KU-0505) и драйвер ADM2483.

Оно может и лучше, только Вы свои ошибки на драйвер не сваливайте. В таких случаях обычно используется развязка на резисторах, снимающая подобные проблемы.
ReAl
Цитата(Andrey M @ Jun 11 2007, 18:16) *
Но опять не понятно, ведь сигнал MISO тоже дублировался на линию MOSI, правда с инверсией!?
Ну, значит, у MAX1480 выход относительно слабый и шинник адаптера его пересилил. А у инвертора выход посильнее и результат драки стал слабопредсказуемым. Если бы между выходом приёмника MAX1480 и точкой "вход RxD меги + сигнал MOSI колодки программирования" был врезан резистор (скажем, 1к или там 4.7к - что всё равно в схеме есть) - проблем с программированием не было бы вообще.
Andrey M
Цитата(Pyku_He_oTTyda @ Jun 11 2007, 21:10) *
какие именно? Мы используем и не встречали проблем


Ну давайте считать:
1. в режиме передачи приемник не отключается - что передает, то и принимает
2. выход приемника инверсный - нужен инвертор, да и судя по пдф-ке еще и по входам требуются повторители
3. шесть резисторов обвязки, плюс инвертор, плюс развязка на резисторах и прочие меры по обеспечению возможности программирования и плюс корпус DIP28 - в результате драйвер RS485 занимает пол-платы
SunnyDevil
Цитата(Andrey M @ Jun 12 2007, 11:24) *
Ну давайте считать:
1. в режиме передачи приемник не отключается - что передает, то и принимает

А должно быть по другому?

In the idle state, both transmitters are disabled, while all receivers in the system are enabled. If any device on the system has information for any other device, it starts sending its data onto the bus. Each data transmission on the bus retriggers the one-shot, keeping the sending transmitter enabled until there are no more transmissions. All receivers receive all data; if this is undesirable, the protocol must allow for an address field so receivers can ignore data not directed to them.

+ вся внутренняя схема разрисована и такое поведение весьма прозрачно прослеживается.

Цитата(Andrey M @ Jun 12 2007, 11:24) *
2. выход приемника инверсный - нужен инвертор, да и судя по пдф-ке еще и по входам требуются повторители


Судя по ПДФ-ке можно взять MAX1490 где выход не инверсный, а повторители показаны условно для отображения следующей информации:
The MAX1480A/MAX1480B/MAX1480C/MAX1490A/MAX1490B typically withstand 1600VRMS (1 minute) or
2000VRMS (1 second). The logic inputs can be driven from TTL/CMOS-logic with a series resistor, and the
received data output can directly drive TTL or CMOS logic families with only resistive pullup.
Посему есди у вас микрокотнроллер ТТЛ или КМОП, то тяните напрямую без повторителей.

Цитата(Andrey M @ Jun 12 2007, 11:24) *
3. шесть резисторов обвязки, плюс инвертор, плюс развязка на резисторах и прочие меры по обеспечению возможности программирования и плюс корпус DIP28 - в результате драйвер RS485 занимает пол-платы


Шесть резисторов это как-бы немного. Зато получаете в одном флаконе изолированый 485 + DC/DC. А можно резисторную сборочку поставить и вообще проблем не будет: 2 SMD компонента. Единственное что с размерами корпуса соглашусь, да великоват, но это ведь не проблема, почему же вы сразу не использовали "связку DC-DC преобразователь (типа P6KU-0505) и драйвер ADM2483"? Наверное вопрос в цене или в томже самом месте не плате?

Вывод: RTFM перед тем как что то делать.
GDI
Цитата
И кстати после этой разработки никому не советую использовать MAX1480, столько проблем в одном месте я еще не встречал! Лучше использовать связку DC-DC преобразователь (типа P6KU-0505) и драйвер ADM2483.
Согласен, могу добавить что помимо габаритов последняя связка дешевле и ещё вместо ADM2483 отлично встаёт MAX485 или совместимый, если нужно отказаться от опторазвязки, используются при этом по 4 средних пада с каждой стороны(которые разводились для ADM2483).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.