реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ATMega->SPI->AT45DB, Сбои при программировании МК
prottoss
сообщение Aug 13 2007, 13:01
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Привет всем!

Сильно меня проблема эта не волнует, но все же пытливый ум smile.gif не дает покоя.

Проблема такова. Цепляю DataFlash AT45DB к Меге. Сначала прицепил ATmega16. Начались сбои при программировании. Програматор - LPT STK200, ПО - PonyProg2000. После нажатия два-три раза на кнопку Programm прошивка заливается. Все нормально. Думал, что DataFlash AT45DB нагружает линии MISO-MOSI. Счас новый проект на ATmega128 - то же самое - но данный МК программируется по другим линям, кроме SCK и RESET - симптомы точно такие же. Пробовал другими программаторами - такая же картина. Схема с М128 вот такая:
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
GDI
сообщение Aug 13 2007, 14:03
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Были похожие проблемы в проекте с мега16 и ат45, схемы подключения была очень похожа, если не идентична, приведенной, и программатор был тоже STK200 на HC244, может проблема в самом программаторе? Может помехи какие? Программатор у меня дох по линии MISO причем хитро это проявлялось, линия просаживалась до первой операции прошивки программатором и проявлялось в том что не работали операции записи-чтения в ат45 пока к схеме был подключен программатор и до того момента пока я не перешивел мегу - после этого все работало нормально... Еще мое устройство при отладке питалось от импульсного источника питания и мне припоминается, что у моего соседа тоже были проблемы с прошивкой пока работал этот источник...т.е. на лицо влияние помех.
P.S. А куда же делся крутейший программатор AVR910-USB? smile.gif
P.P.S Тогда я этот вопрос не решил, просто тихо матерился и перешивал по 3 раза smile.gif Но при производстве прошивку производили программатором AVR910-COM с довольно коротким шлейфом и проблем, насколько я помню не было...


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
oll
сообщение Aug 13 2007, 16:13
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 10-10-05
Пользователь №: 9 463



Попробуйте "прицепить" электролит 33мкФ на питание AT45
Go to the top of the page
 
+Quote Post
_Алекс
сообщение Aug 13 2007, 16:55
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 14-09-06
Пользователь №: 20 377



У меня работает и программатор и флеш, схему включения приводил здесь, между собой не конфликтуют, ветка «Небольшая скорость чтения Flash AT45DB».
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
_Sam_
сообщение Aug 13 2007, 17:49
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031



У меня такая память в двух проектах используется с mega48 и mega128. Программирую ByteBlaster + avreal. Проблем нет. Схема вроде такая же. Можно попробовать 100pF на sck повесить.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 14 2007, 07:08
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(GDI @ Aug 13 2007, 22:03) *
P.S. А куда же делся крутейший программатор AVR910-USB? smile.gif
Вы не внимательно читаете посты. Было написано - "...Пробовал другими программаторами - такая же картина..."

Цитата(oll @ Aug 14 2007, 00:13) *
Попробуйте "прицепить" электролит 33мкФ на питание AT45
А смысл? И почему именно 33мкФ а не, допустим 47 или 20???

Цитата(_Sam_ @ Aug 14 2007, 01:49) *
У меня такая память в двух проектах используется с mega48 и mega128. Программирую ByteBlaster + avreal. Проблем нет. Схема вроде такая же. Можно попробовать 100pF на sck повесить.
не хотелось бы навешивать всякие не стабильные элементы на SCK.



По идее должно все и так программироваться нормально... Память, кстати, AT45DB081RI, используется в обоих случаях. Я все же склоняюсь к мысли, что виноват не SCK, а RESET. Заливаю прошивку в МК я не слишком часто, по этому сигналы не анализировал...


--------------------
Go to the top of the page
 
+Quote Post
INT1
сообщение Aug 14 2007, 07:49
Сообщение #7


deleted
****

Группа: Свой
Сообщений: 555
Регистрация: 28-08-05
Пользователь №: 8 024



2 prottoss, а где же Ваша мега на схеме?, попробуйте поставить подтягивающие резисторы на SPI, что то похожее было, точно не помню, для какой то ATxxxLV
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 14 2007, 07:58
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(INT1 @ Aug 14 2007, 15:49) *
2 prottoss, а где же Ваша мега на схеме?, попробуйте поставить подтягивающие резисторы на SPI, что то похожее было, точно не помню, для какой то ATxxxLV
А зачем ее показывать? Сигналы проставлены... В первом случае МК - ATmega16-16PI, во втором - ATmega128-16AU


--------------------
Go to the top of the page
 
+Quote Post
GDI
сообщение Aug 14 2007, 12:14
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



В моем том проекте тоже стояла AT45DB081RI


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 15 2007, 08:19
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(prottoss @ Aug 14 2007, 10:58) *
А зачем ее показывать? Сигналы проставлены...
Правильно ли я понял, что у вас на вход reset процессора подается сигнал RESET_M, т.е. в случае программирования сигнал reset программатора, "обработанный" ADM1232? Если да, то наверное правильнее будет поставить резистор 1-10К между RESET_M и 6 ножкой ADM + R18, а RESET с разъема ISP завести на RESET_M.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 15 2007, 09:38
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(prottoss @ Aug 14 2007, 11:08) *
Вы не внимательно читаете посты. Было написано - "...Пробовал другими программаторами - такая же картина..."

А смысл? И почему именно 33мкФ а не, допустим 47 или 20???

не хотелось бы навешивать всякие не стабильные элементы на SCK.

К слову о элементах - если подключаемся к LPT на длинном кабеле - лучше обеспечить согласование, и именно по SCK (до буфера). И не просто конденсатором, а RC-цепочкой (100 Ohm+100 pF). Имел удовольствие бороться с плавающими и совершенно дикими глюками при записи и чтении через byteblaster на метровом ленточном удлинителе. Пока скопом не глянул...
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 15 2007, 11:48
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Сергей Борщ @ Aug 15 2007, 16:19) *
Правильно ли я понял, что у вас на вход reset процессора подается сигнал RESET_M, т.е. в случае программирования сигнал reset программатора, "обработанный" ADM1232? Если да, то наверное правильнее будет поставить резистор 1-10К между RESET_M и 6 ножкой ADM + R18, а RESET с разъема ISP завести на RESET_M.
Да - RESET_M (RESET, активный нулем) заведен на вывод RESET МК. Можно сделать и так, как Вы предлагаете, ибо вывод RST# ADM1232 - типа ОК (открытый коллектор). Но тогда на время программирования на линии RESET_P будут импульсы от WDT ADM1232, что не приятно мнеsmile.gif К тому же я не вижу принципиальных отличий, ибо схема работает без DatаFlash отлично, и мне не понятно, от чего она не хочет работать нормально с DataFlash. К слову, до осциллографа руки пока так и не доходят smile.gif - дела, черт бы их побрал biggrin.gif


--------------------
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 15 2007, 13:37
Сообщение #13


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(prottoss @ Aug 15 2007, 14:48) *
Но тогда на время программирования на линии RESET_P будут импульсы от WDT ADM1232, что не приятно мнеsmile.gif
Да, засада. Но так они и сейчас там должны быть, ибо при программировании программатор лишь кратковременно "прижимает" Reset. А поскольку программатор обычно имеет пуш-пульный выход на reset, при его подключении в предложенном мной варианте (на RESET_M) срабатывание собаки в ADM будут отсекаться.
Цитата(prottoss @ Aug 15 2007, 14:48) *
К тому же я не вижу принципиальных отличий, ибо схема работает без DatаFlash отлично, и мне не понятно, от чего она не хочет работать нормально с DataFlash.
Действительно чуднО. В приложенной схеме программируется и с DataFlash и без. В ней Reset формируется подтягивающим резистором к +3.3В
Прикрепленные файлы
Прикрепленный файл  sch.pdf ( 77.24 килобайт ) Кол-во скачиваний: 282
 


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 15 2007, 14:00
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Сергей Борщ @ Aug 15 2007, 21:37) *
Да, засада. Но так они и сейчас там должны быть, ибо при программировании программатор лишь кратковременно "прижимает" Reset. А поскольку программатор обычно имеет пуш-пульный выход на reset, при его подключении в предложенном мной варианте (на RESET_M) срабатывание собаки в ADM будут отсекаться.
Неа. Если я сажаю линию RESET от программатора как у меня в схеме (линия MSTR_RESET) - WDT ADM1213 прибивается и он активирует линии сброса RESET_M и RESET_P. Если делать, как предложили Вы выше, то линия RESET_M прибъется к нулю сигналом RESET программатора. При чем не кратковременно, а на весь период программирования/чтения программатором памяти МК. Но так как WDT ADM1213 будет работать - его то мы не тормознули! - то по линии RESET_P будут генерится импульсы сброса...



Еще выяснился один интересный ньюанс - если в прошивке заливаемой МК убрать блок активирования SPI-модуля и работы с DataFlash - сбои при программировании прекращаются! Более того - цепляю туда же AT25256 - МК работает и программируется без проблем 07.gif . Очучение, что DataFlash гонит... В первом и во втором случае использовались буквально одни и те же микросхемы. Менялись четыре штуки из одной и той же партии.


--------------------
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 15 2007, 16:42
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(prottoss @ Aug 15 2007, 17:00) *
Неа.
Точно, ступил. Программатор зажимает reset на все время программирования.
Цитата(prottoss @ Aug 15 2007, 17:00) *
Еще выяснился один интересный ньюанс - если в прошивке заливаемой МК убрать блок активирования SPI-модуля и работы с DataFlash - сбои при программировании прекращаются!
Чудесатые чудеса. Даже если предположить, что после включения питания проц успевает начать обмен с флешкой, то сброс от программатора должен а) сбросить саму флешку аппаратно и б) перевести ногу, управляющующую CS флешки в третье состояние и за счет резистора подтяжки вторично деактивировать флешку. А если выпаять микросхему флешки или обрезать DB_CS?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 22:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.03368 секунд с 7
ELECTRONIX ©2004-2016