Комментарии 33
Еще одна фишка есть в новых атмеловских контроллерах: если порт настроен как выход (DDRxn = 1), то запись единицы в разряд PINxn инвертирует соответствующий бит PORTxn и переключает ногу (0→1, 1→0).
Да, например на ATMega48/88/168. Очень удобная штука, кстати.
Я бы сказал, что классическая ATMega8 уже сильно устарела, но для обучения сгодится.
О, тогда я прямо вам и задам вопрос. Точнее, предложу подправить исходный текст.
«Впрочем, диоды там хилые и защита эта помогает только от микроскопических импульсов от помех. Если же ты по ошибке вкачаешь в ножку микроконтроллера вольт 6-7 при 5 вольтах питания, то никакой диод его не спасет».
Диоды там достаточного размера, только это защита не от дурака, повесившего на вход то, что туда вешать нельзя, а от электростатического разряда, возникающего, например, когда дурак хватается за ножки контроллера руками — там быстро, зато может быть пара килоВольт в пике. И с этой функцией защитные диоды справляются обычно хорошо, а вот стравить постоянное перенапряжение больше 0.7 В никакой диод по физике своей не способен.
Ну 0.7 обычно редко является критичным перенапряжением для всей схемы МК. Те же AVR вполне переживают 6 вольт и даже на них работают приличное время. Без гарантий естественно.

(А STM32 не дохнут от 5 вольт, но работать перестают). А ток этих диодов реально какой то мизерный. Не помню сколько, что то около 1-2мА. Так что и от небольших перенапряжений по входу спасает.
Это экспериментальная практика. У меня за годы работы с МК что они только и не терпели. Особенно у такого «внимательного» как я. Вкорячить другую полярность? Забацать другой источник? Запаять не тот номинал? Это все ко мне.
А почему, простите, тот, кто хватает процессор за ножки — дурак?
Его левитацией, что-ли перемещать из магазина в панельку на плате?
Избаловали нас современными детальками. Раньше только пинцетом и в антистатическом браслете :)
МП-25 обычный биполярник, ему саттика не страшна. А пот полевики его времён и некоторые микросхемы очень даже боялись.
А продавщицам радиотоваров обычно пофигу: Хвать рукой горсть КП103Ж. И все, собственно, транзисторам приходит эта самая Ж.
Потому что при электростатическом разряде от человеческого тела напряжение может быть несколько киловольт, а пробивное напряжение подзатворного оксида входных полевых транзисторов — это единицы вольт, в лучшем случае — полтора десятка.
И если диод не успеет быстро стравить лишний заряд, то вход пробьется, и все.
В современных микросхемах обычно хорошая ESD защита, но злоупотреблять ей все равно не стоит, особенно если речь идёт о дорогих микросхемах, или о специализированных, где нормальную защиту по каким-то причинам поставить нельзя.
Не, я привык что мои статьи передирают и рерайтят все кому ни лень, но чтобы на хабр. Это что то новенькое :)
Без упячко-мэн-а это не то :)
Но зато тут картинки цветные, не то что у тебя :D
Мне особенно понравилось оригинальное решение в виде красных волнистых линий под надписями. Он это в PowerPoint что ли рисовал?..
Да, тут все не слава богу, одна «Робота» чего стоит — глазам больно…
Хорошо, хотя бы, что ссылка на оригинальную статью уже во-втором комментарии.
Спасибо, DIHALT, за науку и за картинки ржачные! :)
А подскажите, пожалуйста, в PIC'ах устройство портов аналогичное?

В том смысле, что если в PIC установлен, скажем TRIS = 1, то:
PORT = 0 переведёт порт в режим Hi-Z, а
PORT = 1 подтянет вход к питанию через резистор?
ХЗ, я не работал с пиками серьезно. Так что не скажу. Но по идее никто ничего нового тут не придумал. Смотрите даташит.
А что будет если вход висит в воздухе? А в этом случае напряжение будет на нем скакать в зависимости от внешних наводок, электромагнитных помех и вообще от фазы луны и погоды на Марсе (идеальный способ нарубить случайных чисел!). Очень часто на порту в этом случае нестабильный синус 50Гц — наводка от сети 220В, а в регистре PINn будет меняться 0 и 1 с частотой около 50Гц


Если это и правда так (1 и 0 чередуются с частотой 50гц), то качество такого генератора случайных чисел крайне низкое. Пожалуйста, не пишите что это «идеальный способ нарубить случайных чисел». Вдруг кому-то придет в голову использовать это свойство для генерации паролей или еще чего-нибудь.
Не все же оттуда брать. Несколько байт, для затравки, потом еще через что нибудь пропустить. Ну и чередование там не строго 50 герц, наводок же много, они пересекаются и смешиваются. Ничего другого более случайного вы в контроллере все равно не найдете.
Ничего другого более случайного вы в контроллере все равно не найдете

Шум АЦП
В старших битах, а в младших будет нормальный такой шум, с 50Гц не коррелирующий.
Правда на практике при слабых наводках его входная ёмкость может зарядиться (не знаю из-за чего, может утечки какие), и он уплывёт в единицу.
… и занимает места как две ATmegа'и :)
Если уж на то пошло, есть современные аппаратные генераторы случайных чисел. Но мы говорим о голом контроллере.
Кроме наводок 50Гц там еще есть шум от работы внутренних узлов контроллера. Но этот шум в широком смысле обладает слишком большой корреляцией чтобы считаться случайным. Вот шум pn-перехода германиевого транзистора при стабильной температуре и напряжении питания в принципе еще можно считать более-менее случайным. Но собрать такой узел чтобы на него не действовали посторонние наводки задача не такая простая как может показаться с первого взгляда.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.