Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Использование (MOSI-MISO-SCK) как портов - ?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Gennadiy I.P.
Можно ли использовать в AVR-ах выводы для ISP программирования (MOSI-MISO-SCK) для своих (пользовательских) целей? Риск самопроизвольного перепрограммирования есть? Велик? Задача: хочу использовать их в качестве SPI-интерфейса для связи с внешним устройством индикации (т.е. - только на вывод, см. "Радиомир" 4/2008, стр. 18 "Универсальное устройство индикации"). Получается достаточно длинный кабель (до 70-100 см) - не сработаетли в качестве антенны? В смысле - прием наводок при работодающем электродвигателе со всеми вытекающими последствиями? В цикле статей С.Рюмика (журнал "Радиоаматор") встречал указание, что лучше эти выводы не трогать - притянуть к земле и все. Более того, даже штырьки разъема программирования в идеале (по этой же статье) должны отсутствовать, а для программирования можно припаять разъем временно на проводах. Но возникает законное недоумение - неужели Атмел чего-то не досмотрел? И еще - а как же серия "8-ножек" (Tiny) - если не использовать выводы программирования, минус две ноги на питание/общий - так там же для своих целей вообще ТРИ пина остается! Маловато будет... smile.gif Или нет?
dENIM
"слишком опасно, для того чтоб быть правдой"

Незнаю как на счет антенны из метрового шлейфа...гемора с этим наверно будет немало, а шьется контроллер исключительно в состоянии ресета. Если уж очень страшно - поставьте буфер, и управляйте им с контроллера.
defunct
Конечно можно, пользуйте наздоровье.
Цитата
Риск самопроизвольного перепрограммирования есть? Велик?

Риска самопроизвольного программирования нет!

В режим программирования по ISP МК входит только тогда, когда Reset == 0 (МК сброшен). Плюс должна быть подана специальная последовательность 0xAC 0x53 ... ..., которая случайной помехой не сгенерится. Плюс для того чтобы навредить чипу (например стереть флеш), надо подать еще и команду erase...
domowoj
Цитата(Gennadiy I.P. @ May 2 2008, 07:11) *
Можно ли использовать в AVR-ах выводы для ISP программирования (MOSI-MISO-SCK) для своих (пользовательских) целей?

Кнечно, выводы же многофункциональны.
Затруднения возникают, если эти выводы (MOSI-MISO-SCK) используются как входы с
подключенными к ним выходами других элементов схемы, приходится изощрятся,
включая в разрыв элементы с тремя состояниями.
INT1
Имеется такая конфигурация: контроллер на базе мега8, к-рый управляет технологической
линией. В непосредственной близости находятся 4е инвертора(частотника)(без фильтров), управляемые по ModBus от этого контроллера, 5ть электромагнитов, фотодатчик(с опторазвязкой). На SPI висит ИР8, а на ней светодиоды для индикации состояния, туда же вОткнут ISP->AVR910->COM->ноут->пром.сеть. Это я, чтоб представили картину и моих подобных опасений. Все это находится уже пару месяцев в стадии работы/отладки/модернизации. Никаких сбоев, а тем более самостирания, не наблюдалось. Всего один раз правда контроллер во время работы повис, но это я списал на то, что к нему вполтную подошли две женщины, с одинаковыми именами и отчествами, причем одна из них брюнетка, а вторая - блондинка (шютка). Ну и еще, я не сдернул шнурок программатора с SPI и его кто то примотал к сетевому проводу, чтоб не валялся на полу. Из эмпирического собственного опыта - ставить на SPI внешн. подтягивающие резисторы ~10к, если нет возможности делать гальваническую развязку, ставить на длинные провода ферритовые фильтры, по рабочекрестьянски- кольцо ~ K20 u1000-3000 несколько витков. По кр. мере, шлейфы от программатора у меня на них накручены.
ЗЫ, про ферр.фильтры на длинные провода: в пром/ условиях, при подключении БП к ноуту, USB AVR910 от prottoss вообще переставал определяться, там у меня их небыло.
Dog Pawlowa
Цитата(defunct @ May 2 2008, 04:24) *
... Плюс должна быть подана специальная последовательность 0xAC 0x53 ... ..., которая случайной помехой не сгенерится. Плюс для того чтобы навредить чипу (например стереть флеш), надо подать еще и команду erase...

Ха-ха-ха.
Помеха конечно, глупая, и последовательности не знает. Но это компенсируется временем ее действия и рано или поздно случайно эта последовательность и сгенерируется.
Дон Амброзио
Да.. Есть опасность.. Сам такого не встречал, но народ писал, что FLASH слетала даже у микроконтроллеров, у которых даже нет функции самопрограммирования и соответственно команд записи стирания FLASH в программме, а есть только возможность ISP. Именно из-за спровоцированного помехами входа в режим программирования


Причём не только FLASH слетает, но и случайным образом перепрограммируются FUSE-биты, что хуже не меньше чем слёт FLASH
WHALE
Цитата(Дон Амброзио @ May 2 2008, 09:48) *
Да.. Есть опасность.. Сам такого не встречал, но народ писал, что FLASH слетала даже у микроконтроллеров, у которых даже нет функции самопрограммирования и соответственно команд записи стирания FLASH в программме, а есть только возможность ISP. Именно из-за спровоцированного помехами входа в режим программирования
Причём не только FLASH слетает, но и случайным образом перепрограммируются FUSE-биты, что хуже не меньше чем слёт FLASH

"Сказки народов мира".
defunct
Цитата(Dog Pawlowa @ May 2 2008, 07:43) *
Помеха конечно, глупая, и последовательности не знает. Но это компенсируется временем ее действия и рано или поздно случайно эта последовательность и сгенерируется.

Я вообще-то о том, что на паре проводов SCK/MISO находящихся в одинаковой среде помеха будет одинаковой (во всяком случае можно утверждать, что вероятность этого высока). Ну а когда клок с данными совпадают читаться будет константа.

С проводами 70см - надо бы переживать не о самопроизвольном программировании, а о том что помеха может исказить данные при штатном программировании. ;>
Flasher
Цитата(Gennadiy I.P. @ May 2 2008, 03:11) *
Можно ли использовать в AVR-ах выводы для ISP программирования (MOSI-MISO-SCK) для своих (пользовательских) целей? Риск самопроизвольного перепрограммирования есть? Велик? Задача: хочу использовать их в качестве SPI-интерфейса для связи с внешним устройством индикации (т.е. - только на вывод, см. "Радиомир" 4/2008, стр. 18 "Универсальное устройство индикации"). Получается достаточно длинный кабель (до 70-100 см) - не сработаетли в качестве антенны? В смысле - прием наводок при работодающем электродвигателе со всеми вытекающими последствиями? В цикле статей С.Рюмика (журнал "Радиоаматор") встречал указание, что лучше эти выводы не трогать - притянуть к земле и все. Более того, даже штырьки разъема программирования в идеале (по этой же статье) должны отсутствовать, а для программирования можно припаять разъем временно на проводах. Но возникает законное недоумение - неужели Атмел чего-то не досмотрел? И еще - а как же серия "8-ножек" (Tiny) - если не использовать выводы программирования, минус две ноги на питание/общий - так там же для своих целей вообще ТРИ пина остается! Маловато будет... smile.gif Или нет?


Не слушайте никакой бред. Все будет нормально работать, если грамотно сделать. Провода 70 см- это не серъезно. Нужно ставить какой-нибудь буфер или опторазвязку в таких условиях- иначе все будет виснуть. Никакие бусинки и ферриты не помогут.
Stanislav_S
Бояться не стоит все будет работать, единственно конечно необходимо поставить буфер и подтяжки, я ставлю 4,7К. У меня такая конструкция живет в 15кВт преобразователе в электровозе, шнур порядка 1м, причем питание 3,3В и все работает отлично.
svl
Цитата(defunct @ May 2 2008, 11:43) *
С проводами 70см - надо бы переживать не о самопроизвольном программировании, а о том что помеха может исказить данные при штатном программировании. ;>


Последствия искажения данных при программировании должно исключаться верификацией, которая должна входить в обязательный цикл "прошивки" кристалла.
И какая же ЭМ помеха должна быть, чтоб исказить данные?

На вопрос автора темы "Возможно ли самопроизвольное стирание (перепрограммирование) памяти...", при соблюдении условий эксплуатации микроконтроллера, нет.
Nick_Shl
Цитата(Дон Амброзио @ May 2 2008, 08:48) *
Да.. Есть опасность.. Сам такого не встречал, но народ писал, что FLASH слетала даже у микроконтроллеров, у которых даже нет функции самопрограммирования и соответственно команд записи стирания FLASH в программме, а есть только возможность ISP. Именно из-за спровоцированного помехами входа в режим программирования
Причём не только FLASH слетает, но и случайным образом перепрограммируются FUSE-биты, что хуже не меньше чем слёт FLASH
У народа это вроде как происходило от того, что не был запрограммирован BODEN fuse, а вовсе не из-за ISP...
defunct
Цитата(svl @ May 2 2008, 13:54) *
И какая же ЭМ помеха должна быть, чтоб исказить данные?

Если помнить что помеха на SCL тоже приведет к искажению данных, тогда
переключения киловатного UPS'a на батарею и обратно может быть достаточно.

Вопрос только в выходном каскаде программатора и расстоянии проводов от UPS'a smile.gif
Арташес
У меня на этих линиях кнопки висят. Подтяжка к питанию 3.3 В через резисторы 18 кОм. В течение трех лет эксплуатации никаких нареканий не возникало. Провод от кнопок к плате приблизительно 1 м. Рядом с блоком работают мощные СВЧ устройства.
INT1
Кстати, вот подборка факов, которая уже лет десять в сети, может будет полезна, кто не читал:
http://faqs.org.ru/electron/embconst.htm
Кстати, авторы ответов посещают этот форум, мой им a14.gif .
MrYuran
Цитата(Дон Амброзио @ May 2 2008, 08:48) *
Да.. Есть опасность.. Сам такого не встречал, но народ писал, что FLASH слетала даже у микроконтроллеров, у которых даже нет функции самопрограммирования и соответственно команд записи стирания FLASH в программме, а есть только возможность ISP. Именно из-за спровоцированного помехами входа в режим программирования
Причём не только FLASH слетает, но и случайным образом перепрограммируются FUSE-биты, что хуже не меньше чем слёт FLASH

Подтверждаю. Если во время ресета на вход программирования приходит хрень, флешь запросто слетает. Сам я тоже не встречал, т.к. атмелами занимался мало и между делом, но один мой хороший знакомый из соседнего сектора очень живописным и убедительным матом описывал данный эффект
Flasher
Цитата(MrYuran @ May 3 2008, 16:59) *
Подтверждаю. Если во время ресета на вход программирования приходит хрень, флешь запросто слетает. Сам я тоже не встречал, т.к. атмелами занимался мало и между делом, но один мой хороший знакомый из соседнего сектора очень живописным и убедительным матом описывал данный эффект


Конечно,- это просто ужасно. Лучше вообще не использовать микроконтроллеры- они часто зависают и сбоят. В космосе, я слышал, используют исключительно ламповые процессоры на лампах военной приемки. Они гораздо надежнее и устойчивее ко всем вредным воздействиям. Я вот, после пары проектов на микроконтроллерах стал делать всю автоматику на реле и на лампах. Только их все сложнее стало покупать, а шаговые искатели стали вообще дефицитом. Зато все надежно.
defunct
Цитата(MrYuran @ May 3 2008, 16:59) *
Подтверждаю.
.....
Сам я тоже не встречал, т.к. атмелами занимался мало и между делом
...
очень живописным и убедительным матом описывал данный эффект

Бабка на базаре сказала....
Кино и немцы. biggrin.gif

Если вы не сталкивались с этим эффектом, то стало быть подтверждаете обратное.
Stanislav_S
Ну насчет АВР не скажу. а вот насчет атмеловских 51 было дело, правда давно года 4 назад, флэш слетала.
Дон Амброзио
Цитата(WHALE @ May 2 2008, 11:53) *
"Сказки народов мира".


"У меня был обратный случай - FLASH портилась при наличии внешнего супервизора в условиях сильных помех. Причем всё зависело от длины линии RESET и точки подключения земляного вывода супервизора. С внутренним BOD всё OK, никогда такого не наблюдалось. Больше внешний супервизор не ставлю."(с)
http://www.telesys.ru/wwwboards/mcontrol/2...es/466039.shtml


"А ЧТО САМОПРОГРАММРОВАНИЕ ЮЗАЛИ? отправлено С_а_ш_к_а__Ю_д_а_б_Э_п 23 апреля 2008 г. 12:12"(с)

"Я вообще использовал кристалл без возможности самопрограммирования. Насколько я понял, помехи переводили его в режим последовательного программирования.

Отправлено Леонид Иванович 23 апреля 2008 г. 13:19
"(с)

А тут ответ товарищу, у которого EEPROM портиться даже без обращения к ней
Maik-vs
Цитата(MrYuran @ May 3 2008, 17:59) *
Подтверждаю. Если во время ресета на вход программирования приходит хрень, флешь запросто слетает.

Ну так дурак он и ... сломает. Видел схему, где ресет подключен к электролиту на 100 мкф (!) типа для задержки включения. Почитайте процедуру запуска контроллера в даташите и в свете прочитанного посмотрите на форму напряжения питания. Там бывают неплавности. Или коллекторный двигатель на почти одном питании с контроллером - никто не ждёт, что он ещё и генератор smile.gif - может просадить птание с хорошими импульсами.
Наверное, длинные провода вешать не надо, а например кнопки, замыкающие на землю - пожалуйста. Они и программированию не мешают. Я часто использую разъём программирования для перемычек, какую-нибудь конфигурацию можно задать.
rx3apf
Цитата(defunct @ May 3 2008, 23:28) *
Бабка на базаре сказала....
Кино и немцы. biggrin.gif

Если вы не сталкивались с этим эффектом, то стало быть подтверждаете обратное.

На 90S2313 - искажение памяти программы наблюдалось. У S1200 - тоже (сталкивался лично). Дела давно минувших дней, но тем не менее... EEPROM данных у них слетала еще чаще, но по другой причине (плавное снижение напряжения питания). Уже на мегах такое мне лично не встречалось.

Но вынос SPI на 70 см - это серьезно. Обязательно согласовывать линии, иначе ведомое устройство будет вести себя непредсказуемо...
Gennadiy I.P.
Цитата(rx3apf @ May 5 2008, 16:15) *
Но вынос SPI на 70 см - это серьезно. Обязательно согласовывать линии, иначе ведомое устройство будет вести себя непредсказуемо...

В плане емкостной нагрузки? Я обдумал - поскольку порты работать будут лишь на выход - поставлю буферный услитель (К561ПУ4, аналог - HC4050). А пины МК - и так подтянуты резисторами на 10К к земле. Дополнительный плюс - даже сильная помеха не пройдет с выхода лог. элемента на его вход. Еще плюс - защита портов МК от случайного КЗ во внешнем кабеле (передавили, скажем).
Ресет через 4,7К - на +5В (зашунтирован диодом), на нем же - внешний супервизор питания (МС33064). Все логично?


Цитата(defunct @ May 2 2008, 11:43) *
С проводами 70см - надо бы переживать не о самопроизвольном программировании, а о том что помеха может исказить данные при штатном программировании. ;>

Разъем внешнего кабеля будет подключаться на ту же "гребенку", к которой подкючается и программатор, так что взаимовлияние автоматически исключается. И, кстати, очень рационально используется разъем, который УЖЕ есть и запаян на плате - не требуется вообще ничего паять (буферная микросхема будет врезена в кабель, т.к. на ISP-интерфейсе априори уже есть и питание и земля. Вариант кабеля "сотовый-ПК", однако... smile.gif


Цитата(Арташес @ May 3 2008, 05:25) *
У меня на этих линиях кнопки висят. Подтяжка к питанию 3.3 В через резисторы 18 кОм. В течение трех лет эксплуатации никаких нареканий не возникало. Провод от кнопок к плате приблизительно 1 м. Рядом с блоком работают мощные СВЧ устройства.

Так-так-так, а здесь подробней, плз: зачем же подтягивать к питанию? Можно и Pull-UPы включить, верно? И разве не логичней не "подтягивать" а "сажать" на землю? Это - вообще, т.к. в моем конкретном случае все порты будут работать на выход (через буфера, как я уже сообщал в предыдущем постинге).
Кстати - всех присутствующих с Днем Радио!
smile.gif
defunct
Цитата(Gennadiy I.P. @ May 9 2008, 04:06) *
Разъем внешнего кабеля будет подключаться на ту же "гребенку", к которой подкючается и программатор, так что взаимовлияние автоматически исключается.

Ну вот, отличное решение получилось. И с разъемом и с буфером в кабеле.
Теперь не о чем переживать.

Цитата
внешний супервизор питания (МС33064). Все логично?

Я бы просто включил встроенный BOD. Работает прекрасно.
Зачем ставить еще что-то внешнее?

Цитата(rx3apf @ May 5 2008, 16:15) *
На 90S2313 - искажение памяти программы наблюдалось. У S1200 - тоже (сталкивался лично). Дела давно минувших дней, но тем не менее... EEPROM данных у них слетала еще чаще, но по другой причине (плавное снижение напряжения питания).

Со слетом EEPROM сталкивался, а со слетом флеш (без SPM в программе) - ни разу.
Gennadiy I.P.
Цитата(defunct @ May 12 2008, 01:13) *
Ну вот, отличное решение получилось. И с разъемом и с буфером в кабеле.
Теперь не о чем переживать.
Я бы просто включил встроенный BOD. Работает прекрасно.
Зачем ставить еще что-то внешнее?

Спасибо. А зачем "внешнее"? Да просто уже с год стоит, работает, не жалуюсь.
smile.gif
А идея подключения внешнего индикатора, малой кровью и без новых шишек (в т.ч. - гемороидальных) возникла только сейчас. Долго мыслил, как ноги размультиплексировать (индикаторный выход и так на вход работате - от датчиков). Глаз упал на неиспользованные МОСю энд компани...
smile.gif
Так и возникла эта ветка.
rx3apf
Цитата(Gennadiy I.P. @ May 9 2008, 05:06) *
В плане емкостной нагрузки? Я обдумал - поскольку порты работать будут лишь на выход - поставлю буферный услитель (К561ПУ4, аналог - HC4050).

Нет, емкость линии тут не столь существенна. Речь именно о согласовании линии. При отсутствии оного согласования устройство, вынесенное на такое расстояние, вполне может получать ложные фронты из-за "звона" кабеля. Я такое видел и при метровом куске ленточного кабеля на LPT при программировании AVR через байтбластер, и на 30-см куске кабеля 74hc595 загружали белиберду, то работали, то глючили. Либо 100-омные резисторы со стороны передатчика последовательно с линией, либо RC-цепочки со стороны приемника. По крайней мере на тактирующих сигналах.
Gennadiy I.P.
Цитата(rx3apf @ May 13 2008, 15:02) *
Нет, емкость линии тут не столь существенна. Речь именно о согласовании линии. При отсутствии оного согласования устройство, вынесенное на такое расстояние, вполне может получать ложные фронты из-за "звона" кабеля. Я такое видел и при метровом куске ленточного кабеля на LPT при программировании AVR через байтбластер, и на 30-см куске кабеля 74hc595 загружали белиберду, то работали, то глючили. Либо 100-омные резисторы со стороны передатчика последовательно с линией, либо RC-цепочки со стороны приемника. По крайней мере на тактирующих сигналах.

Точно! Совсем упустил - большое спасибо. И - персональная благодарность всем остальным отзывчивым людям (отозвавшимся на зов о помощи). Удачи!
smile.gif
Верталь
У меня на ATmega16 на этих выводах висит ЖКИ индикатор - шина DB7-DB4. И програмируется все это не отключая ЖКИ через USBasp. beer.gif все прекрасно работает.
svs39
Цитата(Верталь @ May 27 2008, 20:31) *
У меня на ATmega16 на этих выводах висит ЖКИ индикатор - шина DB7-DB4. И програмируется все это не отключая ЖКИ через USBasp. beer.gif все прекрасно работает.

Аналогично на ATmega8 c программатором PonyProg/STK200. ЖКИ подключен через резисторы 22 Ом
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.