tiny2313a, как определить битую флеш?

Обсуждаем контроллеры компании Atmel.
Ответить
LowBass
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср июн 06, 2012 22:01:04

tiny2313a, как определить битую флеш?

Сообщение LowBass »

Всем привет.
Вопрос такой. Написал программу, прогнал в отладчике 6 студии, в протеусе. Развёл плату. Распаял, прошил. Подключил питание, проверил работу. Всё ок. Отключил питание. После этого снова подключаю питание, и обнаруживаю, что часть портов сконфигурирована неправильно. А именно: PA0, PA1 должны быть входами, в схеме подтянуты к плюсу питания. Вместо единицы на них почему-то жёсткий ноль. Хардварный ресет не помогает.
Читаю программатором флеш - верификацию проходит, всё ок. Но МК не работает. Прошиваю снова. Включаю схему -всё работает. После обесточивания, при повторном включении ситуация повторяется.
МК новый, прошивался от силы раз десять. Сейчас вот думаю, какие варианты... Если битая флеш, то может ли она при этом нормально читаться-писаться программатором? Питание при работе и при прошивке одинаковое, 3,3. Может, перенести программу директивой cseg чуть вправо? Сталкивался ли кто с такой ерундой?
Аватара пользователя
SergeBS
Вымогатель припоя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Re: tiny2313a, как определить битую флеш?

Сообщение SergeBS »

LowBass писал(а):Вместо единицы на них почему-то жёсткий ноль.

А это как? На жестком ноле можно спать, но жестко? А есть мягкий, на котором спать мягко? Так? :)

1. Проверить питание. От чего МК питается - неизвестно. Не от диодного мостика случайно?
2. Проверить наличие конденсаторов в питании.
3. Вымыть плату и осмотреть на предмет качества пайки.
4. Не умничать, а померенное при экспериментах изложить так, чтобы было понятно без телепатии, что, где, как и чем мерялось. А то я логическим анализатором померяю питание, а тестером проверю тактировку.
Сейчас например непонятно, снималось ли питание после программирования, программировалось в панельке программатора или как-то иначе, МК в панельке или впаян в плату, какая включена тактировка и какие фузы вообще. Схема включения - тоже не вижу.
Достаточно выводу Reset болтаться без правильного включения, и МК на рабочий режим уже не выйдет. А программатор его в этот режим выведет. До следующего выключения питания все будет работать.
Вот так как-то.
Человек - это звучит гордо, а обезьяна - объективно...
LowBass
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср июн 06, 2012 22:01:04

Re: tiny2313a, как определить битую флеш?

Сообщение LowBass »

1. Жёсткий, в данном случае, означает: не какой-нибудь гуляющий сигнал, а порт сконфигурирован как выход, и шлёт в пин 0, сажая 3,3 потдяжки на землю. Подтяжка 10К к плюсу.
2. Питание стабильное от БП АТХ (от SATA power моего десктопа). Через Шоттки получается 3,2В Естественно, у МК свои кондёры есть, в том числе 0,1мкф.
3. Плата в порядке, спасибо, что спросили.
4. Слово "обесточивание" Вам о чём-то говорит? Я имел в виду именно то, что оно означает.
МК распаян на плату, фьюзы дефолтные, программировался по ISP, с питанием от программатора. Ресет подтянут кверху, с кондёром 100пф
Аватара пользователя
SergeBS
Вымогатель припоя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Re: tiny2313a, как определить битую флеш?

Сообщение SergeBS »

LowBass писал(а):1. Жёсткий, в данном случае, означает: не какой-нибудь гуляющий сигнал, а порт сконфигурирован как выход, и шлёт в пин 0, сажая 3,3 потдяжки на землю. Подтяжка 10К к плюсу.
2. Питание стабильное от БП АТХ (от SATA power моего десктопа). Через Шоттки получается 3,2В Естественно, у МК свои кондёры есть, в том числе 0,1мкф.
3. Плата в порядке, спасибо, что спросили.
4. Слово "обесточивание" Вам о чём-то говорит? Я имел в виду именно то, что оно означает.
МК распаян на плату, фьюзы дефолтные, программировался по ISP, с питанием от программатора. Ресет подтянут кверху, с кондёром 100пф

По пунктам:
1. Вот так и надо описывать, без местных жаргонизмов.
2. Уже интересно. 5В(SATA) - 0.3В(Шоттки) это оказывается будет 3.2В? Что-то новое в арифметике. Про то, какие могут быть "иголки" на китайских БП при изменении нагрузки - есть обзоры. Но намерянного 3.2 В уже хватает для выводов - что-то не так.
3. У кой-кого и с программой тоже якобы в порядке. Раз эмуляция в Proteus проходит.
Все "в порядке", а чудеса наблюдаются. Подробнее. Я это плату не видел. Схему тоже.
И что значит на местном жаргоне "в порядке" - не в курсе. Раз к чудесам приводит, значит НЕ "в порядке" что-то где-то.
4. Ну вот и делаем первые выводы. При питании от программатора - работает. Конденсатор в "целых" 100 пФ в ресете? А подумать? Может все-таки 100 нФ надо? Это правда "немножко" больше, зато стандарт де-факто.

И пожалуйста без надувания щек насчет "говорит". По делу, т.е. подробнее.
Поскольку например п.2 меня откровенно повеселил. Аж по 3 причинам:
1. "Питание стабильное". См. обзоры по тестам БП и просвещаемся.
2. Номинал этого "стабильного" питания. Кто-то явно либо мерять не умеет, либо простейшую цепь описать без ошибок/замалчиваний существенных подробностей...
3. Диод Шоттки как способ получения пониженного номинала питания. Любят начинающие себе жизнь усложнять, применяя "дешевые" решения. Я это давно заметил.
Человек - это звучит гордо, а обезьяна - объективно...
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: tiny2313a, как определить битую флеш?

Сообщение Gudd-Head »

Без кода и схемы всё равно сложно что-то сказать.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: tiny2313a, как определить битую флеш?

Сообщение Alexeyslav »

На главный вопрос не ответил. Какая тактовая частота? при пониженном напряжении существует ограничение на максимальную частоту. И я бы первым делом посмотрел бы программу, которая выполняется.

Ну и потом, PA0 и PA1 - это выводы под кварц. Ты уверен что их сконфигурировал верно? Приоритет по их конфигурации находится у фьюзов, сначала нужно выбрать верный режим тактового генератора чтобы контроллер их "отпустил".
Аватара пользователя
SergeBS
Вымогатель припоя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Re: tiny2313a, как определить битую флеш?

Сообщение SergeBS »

Граждане, не все сразу... Надо все-таки по пунктам.
Вначале разобраться со "стабильным" питанием и платой "в порядке". Поскольку без этого все остальное преждевременно. А уж ПОТОМ!!!
А совсем потом при соответствующем художественном оформлении получится неплохая обучалка типа "Как бороться с чудесами без попов и "святой" воды, а технически". Юморные моменты уже есть, осталось добавить электроники...
Человек - это звучит гордо, а обезьяна - объективно...
LowBass
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср июн 06, 2012 22:01:04

Re: tiny2313a, как определить битую флеш?

Сообщение LowBass »

Чёрт)) Схемы нет под рукой. Ладно.
1.На правильном SATA коннекторе правильного БП есть 3,3, 5 и 12, это для тех кто задумался, как я получил 3,2 из 5. Те же 3,3 имею от лабораторника.
2. Диод применен для отрезания питания МК от питания схемы при отключении питания. Питания-питания-питания-питания))
После диода емкости 330, 47, 0,1, 0,0001 мкф. Для успешного завершения работы хватает.
3. Работает не только при питании от программатора. Работает при первом включении. Когда схема подключается/отключается к программатору, она обесточивается. Надолго. Достаточно, чтобы кондёры разрядились.
4. Про фьюзы писал - дефолтные. Тактовая частота, соответственно, тоже. 1мгц
Gudd-Head писал(а):Без кода и схемы всё равно сложно что-то сказать.

С этим согласен. Пока не могу предоставить. По сути, на плате, кроме МК, подтяжек, и компонентов вот этой viewtopic.php?p=1649321#p1649321 схемы. ничего нет. Могу вот сфоткать плату. https://dl.dropboxusercontent.com/u/684 ... C00819.JPG
Вопрос: Если в регистр не записать 0 командой ldi r20, 0 , будет ли он всегда равен 0, если в него ничего никогда не писать? То есть, по дефолту он же всё равно равен нулю? И какая вероятность, что в него будет записано что-то при включении без моего ведома? РОН же не сохраняются в памяти при обесточивании. Это же ОЗУ, так?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: tiny2313a, как определить битую флеш?

Сообщение Gudd-Head »

LowBass писал(а):Если в регистр не записать 0 командой ldi r20, 0 , будет ли он всегда равен 0, если в него ничего никогда не писать? То есть, по дефолту он же всё равно равен нулю? И какая вероятность, что в него будет записано что-то при включении без моего ведома? РОН же не сохраняются в памяти при обесточивании. Это же ОЗУ, так?

Собственно, поэтому я и просил код.
Нет, состояние ОЗУ после включения питания неизвестно, за исключением РВВ.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
LowBass
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср июн 06, 2012 22:01:04

Re: tiny2313a, как определить битую флеш?

Сообщение LowBass »

Gudd-Head писал(а):Собственно, поэтому я и просил код.
Нет, состояние ОЗУ после включения питания неизвестно, за исключением РВВ.

Вот, огромное спасибо)) Сэкономил на команде)) Посмотрю, отпишусь
Аватара пользователя
SergeBS
Вымогатель припоя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Re: tiny2313a, как определить битую флеш?

Сообщение SergeBS »

LowBass писал(а):Чёрт)) Схемы нет под рукой. Ладно.
1.На правильном SATA коннекторе правильного БП есть 3,3, 5 и 12, это для тех кто задумался, как я получил 3,2 из 5. Те же 3,3 имею от лабораторника.
2. Диод применен для отрезания питания МК от питания схемы при отключении питания. Питания-питания-питания-питания))
После диода емкости 330, 47, 0,1, 0,0001 мкф. Для успешного завершения работы хватает.
3. Работает не только при питании от программатора. Работает при первом включении. Когда схема подключается/отключается к программатору, она обесточивается. Надолго. Достаточно, чтобы кондёры разрядились.
4. Про фьюзы писал - дефолтные. Тактовая частота, соответственно, тоже. 1мгц
Gudd-Head писал(а):Без кода и схемы всё равно сложно что-то сказать.

С этим согласен. Пока не могу предоставить. По сути, на плате, кроме МК, подтяжек, и компонентов вот этой viewtopic.php?p=1649321#p1649321 схемы. ничего нет. Могу вот сфоткать плату. https://dl.dropboxusercontent.com/u/684 ... C00819.JPG
Вопрос: Если в регистр не записать 0 командой ldi r20, 0 , будет ли он всегда равен 0, если в него ничего никогда не писать? То есть, по дефолту он же всё равно равен нулю? И какая вероятность, что в него будет записано что-то при включении без моего ведома? РОН же не сохраняются в памяти при обесточивании. Это же ОЗУ, так?


Ну и опять по пунктам. Не будем нарушать традицию.
1, 2. С питанием наконец разобрались. Все не так уж и плохо, как могло быть.
3. Опять-таки что происходит, непонятно. По пунктам, пжалста, типа
а)подключил к программатору, включил питание.
б) запрограммировал. Проверил прошивку на правильность.
? проверка работы при питании от программатора - после ресета, после выкл/вкл питания?
? выключение и опять подача питания - сколько и когда, именно до падения в 0 питания, до сбойной работы при очередном включении.
4. По фото платы - у 19 лапы что-то непонятное на клемме левее СМД, который в компании с еще 3-мя СМД и выводами 18, 17, 16 идет на какую-то подтяжку и все это похоже на ISP разъем. Дублер того что сверху слева?
Ну так артефакт ликвидировать и подтяжку (СМД) к какой-то шине, общей в этом смысле подтяжки для 19,18,17,16 - тоже. А вместо нее сделать подтяжку на 0(общий), который там совсем рядом. Для SCK - так правильно.
Ну и главное: убрать с ресета управление через транзистор-компаратор, базу транзистора ткнув в 0 через резистор, а потом (после успеха повторных включений), проимитировать управление им кнопкой вместо компаратора.
Проверить конденсатор на ресете - 100 пФ - это несколько не то.
Человек - это звучит гордо, а обезьяна - объективно...
Аватара пользователя
SergeBS
Вымогатель припоя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Re: tiny2313a, как определить битую флеш?

Сообщение SergeBS »

Gudd-Head писал(а):Собственно, поэтому я и просил код.
Нет, состояние ОЗУ после включения питания неизвестно, за исключением РВВ.

Все гораздо хуже. И зависит конкретно от того, какой регистр. Например SP - не 0, а RAM top при включении. Регистры калибровки и фузов - как запрограммировано, а 2 регистра работы с EEPROM - почти что угодно. Т.е. см. Initial value для интересующих регистров. А PINх - зависит и от внешних цепей, и от конфигурирования... Тоже РВВ.
Но все это - головная боль ассемблерщиков, пытающихся экономить на спичках. Поскольку сэкономишь или нет - зависит от расклада, а вот проблемы будут точно.
Всякие ужимания, экономии - это когда основное все влезло и хочется фенечку втиснуть, а места маловато - чуть-чуть не хватает. До того - морочиться смысла нет.
Человек - это звучит гордо, а обезьяна - объективно...
LowBass
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср июн 06, 2012 22:01:04

Re: tiny2313a, как определить битую флеш?

Сообщение LowBass »

Про кондёр на ресее я опечатался, забыл сказать. 100нф. С платой всё хорошо. Разъем ISP у меня свой, нестандартный. При подключении программатора база транзистора вешается на землю. На том куске схемы, что я дал, это есть. Вот фото заготовки, вроде на ней все дороги видны. Только питание 393й по ошибке было разведено криво. Сейчас оно отрезано и кинуто МГТФом от 12В. https://dl.dropboxusercontent.com/u/684 ... C00815.JPG
А проблема, полагаю, именно в незаписи нуля в регистр. Щас пока проверить не могу. Но припоминаю в программе такое скользкое место, как раз при инициализации порта А
Последний раз редактировалось LowBass Вт апр 16, 2013 19:36:57, всего редактировалось 1 раз.
LowBass
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср июн 06, 2012 22:01:04

Re: tiny2313a, как определить битую флеш?

Сообщение LowBass »

Так и есть. Не записал 0 в регистр, считая, что он там и так есть. Попутно отловил ещё две переменных, равных нулю по умолчанию... Зашил, всё ок. Не знал про такие грабли. Конкретно на эти больше не наступлю)) Огромное всем спасибо, особенно Gudd-Head
Ответить

Вернуться в «AVR»