Только в этом месяце - скидки на паяльники и электронику с нашими кодами (123avr.com) :




Страницы курса:

Уроки

Задания


index.htm
01.htm
02.htm
03.htm
04.htm
05.htm
06.htm
07.htm
08.htm
09.htm


z1.htm
z2.htm
z3.htm
z4.htm
z5.htm
z6.htm
z7.htm
z8.htm
z9.htm
z10.htm
z11.htm

New! - ФОРУМ!

Совет - умейте правильно находить информацию!


ХОЧЕШЬ РАЗМЕСТИТЬ ТУТ СВОЮ РЕКЛАМУ ИЛИ ЛИНК?
Предлагаю меняться линками или баннерами.
Пиши на  info
sobaka 123avr.com

Добавить страницу в закладки:

- стр. 2 -

Советую читать курс с начала !

  • Что такое Микроконтроллер (МК) ?

  • Почему AVR ? 

  • Главное по устройству МК. 

  • Внешние сигналы. 

  • Как МК решает, что на ножке: "1" или "0"

  • Ножки - выводы МК - какие они бывают.

  
Я считаю, что МК это микросхема (чип, камень, IC) - которая в ответ на внешние электрические сигналы действует в соответствии с :

  • - возможностями заложенными производителем 

  • - электроникой подключенной к МК

  • - программой которую в него загрузите ВЫ.

Возможность МК действовать по вашей программе - вот суть-соль МК.  Это главное отличие МК от "обычных" НЕ программируемых  микросхем.

Что такое  AVR ?

Это семейство МК (Таблица всех МК AVR) от компании ATMEL разработанных
с учетом особенностей и удобства написания программ на языке Си.

Книги и учебники по  AVR тут

Почему  AVR ?

Это не дорогие, широко доступные, надежные, простые, довольно быстро считающие  большинство инструкций выполняется за 1 такт - т.е. при кварце 10 МГц выполняется до 10 млн. инструкций в секунду ! 

AVR имеют развитую периферию, т.е. набор аппаратуры окружающей процессор-вычислитель в одном корпусе МК или набор встроенных в МК электронных устройств, блоков, модулей. 

Вот основные параметры AVR:

  • - тактовая частота до 20 МГц ; 

  • - встроенный программируемый RC-генератор, частота 1, 2, 4, 8 МГц; 

  • - Flash-ПЗУ программ, программируемое в системе, 10 000 циклов перезаписи; 

  • - EEPROM данных (100 000 циклов) - она не "забывает" при откл. питания; 

  • - внутреннее ОЗУ со временем доступа 1 такт; 

  • - 6 аппаратных команд умножения (для семейства mega); 

  • - развитая система адресации, оптимизированная для работы с С-компиляторами; 

  • - 32 регистра общего назначения (аккумулятора); 

  • - синхронный (USART) или асинхронный (UART) (в mega64 и mega128 их по 2); 

  • - синхронный последовательный порт (SPI); 

  • - двухпроводный интерфейс TWI, совместимый с интерфейсом I2C; 

  • - многоканальный PWM 8-, 9-, 10-, 16-битный ШИМ-модулятор; 

  • - 10-битный АЦП с дифференциальными входами; 

  • - программируемый коэффициент усиления перед АЦП  1, 10 и 200; 

  • - встроенный источник опорного напряжения 2,56 В; 

  • - аналоговый компаратор; 

  • - сторожевой таймер  - перезагружает МК при "зависании"; 

  • - настраиваемая схема задержки запуска после подачи питания; 

  • - схема слежения за уровнем напряжения питания; 

  • - JTAG-интерфейс для подключения эмулятора (в МК с объемом ПЗУ от 16 кбайт); 

  • - микропотребление (менее 100 мкА в активном режиме на частоте 32 кГц);

  • - датчик температуры (в ATtiny25 ATtiny45 ATtiny85).

Существуют AVR-ы со встроенными интерфейсами USB, CAN и со встроенными радио приемо-передатчиками.Есть специализированные МК AVR для управления электроприводом электродвигателями - серия AT90PWMxxxx

Очень важный, Добрый совет вам : 

Вы начинающий и наверно благоразумно не планируете делать сразу серийное коммерческое устройство, а хотите использовать МК для любительских штучных изделий, Используйте в ваших устройствах какой-то один  и тот же "многоногий" МК AVR серии ATmega Желательно один из этих: 

- они позволяют выполнить любую задачу любительского уровня (и многие 
  задачи профессионального уровня - это же серийный МК)  
- они поддерживаются симуляторами электронных устройств на AVR - VMLAB (о нем чуть позже и подробней) и супер-пупер симулятором PTOTEUS  (он кстати  позволяет симулировать  и другие МК семейств PIC, 8051, ARM7, Motorola). 
- они имеют достаточно оперативной памяти и памяти для вашей программы  
- они имеют много выводов (ножек) - это очень удобно !
- они имеют встроенный RC генератор и могут работать без внешнего кварца - достаточно подать питание на новый МК и он "затикает" !


Credit Star


  Используйте один и тот же МК и он станет вам "своим в доску" . Вы сможете: 

  • - хорошо изучить его устройство и особенности

  • - распечатать важные страницы ДатаШита

  • - не тратить каждый раз время на изучение особенностей другого МК, 
      на поиск "граблей" у новичка, 

  • - у вас будут накапливаться куски программ уже проверенных вами 
      именно на этом МК

  • - вам будет ВСЕГДА хватать ножек (выводов) МК и памяти для программы

Вам будет ОЧЕНЬ удобно работать a это важно для уверенного старта. Вы будете знать всего один МК , но будете знать его очень хорошо !  

Не бойтесь многоногих ATmega с большим количеством "периферии"  (встроенных в МК, полезных, но возможно не нужных вам пока устройств с непонятными названиями).   Все они изначально - "по умолчанию" обычно отключены и о них можно не думать. Вам нужно будет позаботится о включении и конфигурации только 
тех из них, которые понадобятся вам а вашем устройстве.Забегая вперед скажу что сделать это очень просто благодаря встроенным в компиляторы CVAVR и ICC  интерактивным визадам мастерам начальной конфигурации МК и создающим начальный текст программы.
     Если вы хотите только помигать для начала светодиодом
- то даже на ATmega128 вам нужно всего лишь подключить к МК :

  • - питание от 4 до 5.5 вольт (3 пальчиковых батарейки например) 

  • - 5 проводков на принтерный порт ПК для ISP "прошивания" программы в МК (подробнее об этом на стр. 7 курса

  • - светодиод  (катод (черточка на схеме) к ножке МК а анод светодиода к + питания МК через резистор 430-750 Ом ) 

  • - написать программу мигания светодиодом и загрузить (=прошить=прожечь) её в МК.   

Вас совершенно не тронет и не напряжет та "навороченность" что заложена в ATmega128. Она будет тихо ждать пока вы ее не затребуете!

Четкое понимание алгоритма работы устройства это основа - базис для успешной разработки самого устройства и программы для МК ! 

Микроконтроллер  AVR  ATmega  - ключевые моменты устройства 

Напомню: Самая подробная и полная информация по МК содержится КОНЕЧНО же в его ДШ.Он доступен в оригинале и на русском языке.  

Подробнее об основах и тонкостях устройства МК AVR и работе с ними читайте в книгах :  

об основах и тонкостях электроники и схемотехники читайте в настольной книге электронщика:  П.Хоровиц, У.Хилл. Искусство схемотехники - общепризнанная 
библия электронщика на РУССКОМ языке. Уже 5-е издание.

Я уже предупреждал вас выше: МК является микросхемой которая в ответ на внешние электрические сигналы действует в соответствии с возможностями заложенными производителем, электроникой подключенной к МК, программой которую в него загружена, например вами. Разберем по пунктам: 

Внешние электрические сигналы 

Это напряжения и токи поступающие к МК от подключенных к нему проводниками других компонентов электронного устройства. Важнейший из них - это напряжение питания МК. МК AVR серии ATmega могут работать, т.е. исполнять заложенную в них программу уже при подаче одного напряжения питания, а узнать о том что он работает мы можем по изменению тока потребляемого МК по проводу питания. 
   Диапазон допустимых напряжений питания указан на первой странице ДШ 
и составляет обычно 4.5 - 5.5 вольт постоянного напряжения - плюс которого подключается к выводам  VCC   МК. 
  Для МК ATmaga с буквой L в названии диапазон питания 2.7 - 5.5 вольт - он шире (достаточно литиевой батарейки или двух пальчиковых) но зато максимальная частота тактирования МК в 2 раза ниже и обычно составляет 8 МГц.  
   Отрицательный вывод источника питания подключается к выводам МК  GND и его потенциал принимается за ноль вольт и относительно него измеряются все другие напряжения на ножках МК. 
   Проводник соединенный с выводами GND МК называют общим или нулевым или "земля" и на схеме обозначают специальным символом - например жирной горизонтальной черточкой или несколькими горизонтальными полосками друг под другом убывающей длины.

  Электрические сигналы это  токи  и вызываемые их протеканием  напряженияНо говоря о сигналах поступающих в МК мы рассматриваем их как некоторые напряжения измеряемые относительно ножек GND МК. Любой электрический сигнал является аналоговым  т.е. имеет определенное значение в каждый момент времени и если он был 2 вольта а стал 4 вольта то он обязательно принимал все значения лежащие
между 2-мя и 4-мя вольтами.

( ВАЖНО ! )В цифровой технике приняты некоторые правила по которым можно представить аналоговый сигнал допустимый для подачи на ножку МК (он должен быть выше -0.5 вольт и ниже чем напряжение питания МК увеличенное на 0.5 вольта, я советую 0.3 вольта ) как 1-битный цифровой сигнал или как одно из двух значений: 

  • "1" - высокий логический уровень (ВЛУ)  - логическая единица        

  • "0" - низкий логический уровень (НЛУ) - логический ноль

Эти правила для ножек МК которые могут быть входами (и кроме XTAL1 и RESET) 
в МК AVR описаны в разделе ДШ "Electrical Characteristics" и иллюстрированы графиками :  

 

Попробуйте поискать полезную инормацию в Гугле - ее там море !  Учитесь искать!

 

График 181 из ДШ на МК ATmega16 

Показывает зависимость порогового (Threshold) напряжения переключения из "0" в "1" от напряжения питания МК.

 


Очень важно правильно понять этот график ! 

   Он означает следующее:  Если МК считал напряжение на ножке (левая вертикальная шкала графика) логическим нулем и это напряжение было ниже линии графика, то при достижения напряжением на ножке этой линии графика - МК начинает считать что теперь на ножке присутствует логическая единица - "1". Значит теперь в регистре PINX порта_Х которому принадлежит эта ножка соответствующий ей бит стал "1" - единицей (а был "0" - нулем) Это типовое значение !  т.е. наиболее вероятное для вашего МК.  По графику при напряжении питания МК 5 вольт этот порог примерно 1.9 вольт в диапазоне температур от -40 до 85 градусов.
   Но есть еще и гарантированное значение напряжения при превышении которого МК будет считать, что на ножке появилось напряжение соответствующее логической единице. Оно равно 60% от напряжения питания МК - для 5 вольт это будет 3 вольта.

Запомните !  Что бы быть уверенным что МК AVR (питающийся от 5 вольт) воспримет входной сигнал (входное напряжение) как "1" вы должны позаботится о том что бы это напряжение  было не ниже чем 3 вольта !  Уточняйте в разделе ДШ "Electrical Characteristics" для вашего МК !

 

График 182 из ДШ на МК ATmega16 

Показывает зависимость порогового (Threshold) напряжения переключения из "1" в "0" от напряжения питания МК.

 

Он означает следующее:  Если МК считал напряжение на ножке логической единицей и оно было выше линии графика, то при снижении напряжения на ножке МК до линии графика - МК начинает считать что теперь на ножке присутствует логический ноль - "0". Значит теперь в регистре PINX порта_Х которому принадлежит эта ножка соответствующий ей бит стал "0" - нулем - НЛУ (а был "1" - ВЛУ)

Это типовое значение !  т.е. наиболее вероятное для вашего МК. 
По графику при напряжении питания МК 5 вольт этот порог примерно 1.3-1.4 вольта в диапазоне температур от -40 до 85 градусов.

Но опять существует  гарантированное значение напряжения ниже которого МК будет считать, что на ножке появилось напряжение соответствующее логическому нулю.  Оно равно 20% от напряжения питания МК - для 5 вольт это будет 1 вольт. Что бы быть уверенным что МК ATmega16 (питающийся от 5 вольт) воспримет входной сигнал (входное напряжение) как "0" вы должны позаботится о том что бы это напряжение  было не выше 1 вольта !   

Запомните: 

  • Напряжение на ножке выше чем 60% напряжения питания МК гарантировано воспринимается им как ВЛУ или "1" - высокий логический уровень

  • Напряжение на ножке ниже чем 20% напряжения питания МК гарантировано воспринимается им как НЛУ или "0" - низкий логический уровень

  • Эти пороговые уровни для напряжения питания 5 вольт будут 3 и 1 вольт

  • Это справедливо для диапазона напряжений питания VCC = 2.7-5.5V

   Возникает вопрос - а чем будет считать МК сигнал 1.7 или скажем 1.46 вольта ? т.е. как МК интерпретирует напряжение на ножке между рассмотренными выше пороговыми уровнями ?  Это зависит от того чему был равен соответствующий этой ножке бит в регистре PIN_X (т.е. от того каким ЛУ считал МК напряжение на ножке) до появления напряжения попадающего между двумя порогами переключения  - и по приведенным выше двум правилам - этот бит не может изменится !
   Важный вывод
- любое изменение напряжения на ножке МК лежащее между двумя пороговыми напряжениями не ведет к изменению того каким логическим уровнем считает МК напряжение на этой ножке в данный момент !  

   Внимательно прочитайте и поймите, запомните - все входные сигналы с ножек МК поступают на встроенные триггеры Шмитта (аналогичные двум последовательно включенным элементам микросхемы 74HC14) - это устройства имеющие гистерезис (иначе - разность напряжений) по входному напряжению переключения их выходов из "1" в "0" и наоборот. 

По графику 183 в AVR гистерезис составляет примерно 0.57 вольта  при VCC 5 вольт 

 

Г  истерезис по входному напряжению позволяет отсечь помеху (существующую во входном сигнале и/или наводку - напряжение создаваемое внешними электромагнитными полями в проводнике подводящем сигнал ко входу приемника - в нашем случае к ножке МК) с размахом до величины гистерезиса и четко распознать преобразовать в логические единицы и нули зашумленный цифровой сигнал.

Если подключить двух лучевой осциллограф ко входу и выходу триггера Шмитта и подать на его вход смесь цифрового сигнала размахом 4-5 вольт и шумового сигнала размахом чуть меньше гистерезиса - мы увидим следующую картину: На входе тригера Шмитта будет черти что в котором будет угадываться цифровой сигнал а на выходе будет чистенький прямоугольный цифровой сигнал !(Вы можете смоделировать это в PROTEUS или в MicroCAP)

Подробнее об основах и тонкостях электроники и схемотехники читайте в книге оглавление которой на заглавной странице.

Теперь вы знаете как AVR преобразует напряжения на его ножках в "1" или "0" 


МК внешние сигналы : 

1)  сигнал сброса RESET - при "0" на этой ножке МК останавливает выполнение программы, содержимое регистров МК становится начальным (см. таблицу регистров в конце ДШ - в основном все биты нули) а все выводы становятся высокоомными входами (говорят: Z - состояние).  

После появления на этой ножке "1" и наличии питания МК - выполнение программы начнется с начала, как после включения питания МК    Подробней см.  в разделе "Resetting the AVR" ДШ.  Эту ножку можно ни куда не подключать благодаря внутреннему резистору "подтягивающему" ( подающему ток от источника более высокого напряжения) ее к питанию МК, но я бы посоветовал не оставлять reset в воздухе а "заземлить" конденсатором 0.1 мкФ - а еще лучше и подключить к  reset диод типа 4148 черточкой к + питания МК и параллельно диоду резистор 5-12 КОм.

Запомните:

  • Черточка над названием сигнала: SIGNAL означает что активный уровень этого сигнала  "0" - т.е. событие соответствующее ему происходит при НЛУ.

  • Косая черта / может означать в описании бита : 

    • R/W  - если бит "1" режим R а если бит "0" режим W

    • R/W  - может еще означать возможность записи и чтения этого бита

2) питание аналоговой части МК, АЦП (входы ADC_x ) ножка AVCC - ее нужно соединить с выводом VCC питания МК даже если вы не предполагаете использовать АЦП.

3) опорное напряжение для АЦП  (входы ADC_x ) ножка AREF - напряжение на ней должно быть от 2 вольт до напряжения питания МК.  Напряжение на входах АЦП равное или превышающее AREF  будет оцифровываться в код 1023 (давать результат АЦП равный 1023.   Всегда желательно заземлять эту ножку конденсатором на 0.1 мкФ.     Вы можете использовать внутренний источник опорного напряжения на 2,56 вольт. (МК AVR ATmega имеет встроенный 8-ми канальный (АЦП) Аналого Цифровой Преобразователь  -  он позволяет преобразовать напряжение на ножках МК подключаемых к АЦП в число от 0 до 1023  - т.е.  в 10 битный результат.)

4) ножки для подключения кварца или керамического резонатора XTAL1 XTAL2. Для работы МК необходимритм или тактирование.   Нужен некоторый периодический сигнал в соответствии с которым МК сможет шагать по заложенной в него программе, кроме того тактовый сигнал нужен для работы периферии МК. Хотя МК ATmega имеют встроенный источник тактовой частоты RC-генератор (с завода он включен на частоту 1 МГц обычно) и к этим выводам можно ни чего не подключать, чаще требуется более точный источник тактирования - наиболее популярный это кварц - правильнее кварцевый резонатор - его подключают между этими ножками МК, а с самих ножек подключают конденсаторы 22-33 пФ на землю. 
  Важно установить фьюзы (Fuses) в соответствии с параметрами нужного вам тактового сигнала и его источника. Читайте раздел ДШ "Sestem clock and Clock options" и таблицу 2. "device clocking options select" . FUSE (фьюз)
- Это в общем то обычный бит в регистрах фьюзов но программа МК не может их изменить. Вы можете менять их только программатором.

  • Фьюз "запрограммирован" - его значение "0"

  • Фьюз "НЕ запрограммирован" - его значение "1"

С завода МК поставляется с определенной комбинацией фьюзов - все указано в ДШ. Будьте внимательны с фьюзами! Прежде чем менять фьюзы определите точно что вы делаете, иначе вы можете по ошибке отключить режим ISP программирования и МК можно будет перепрограммировать только специальным программатором. Список фьюзов для каждого МК удобно смотреть и устанавливать их состояние в диалоге настройки программирования компилятора CodeVisionAVR.

Вот список комбинаций состояний фьюзов для МК ATmega128 с кратким описанием их назначения:


Не пугайтесь! В большинстве МК их гораздо меньше. 

МК ATmega16 поставляется с такой комбинацией 6-ти фьюзов относящейся к
источнику тактового сигнала - абзац "Default Clock Source" :  

SKSEL 0001     SUT 10   

Это означает - включен внутренний  источник тактовой частоты - RC-генератор
и генерируемая частота 1 МГц. Подробней о фьюзах на стр. 7 курса.  О фьюзах AVR рассказано и внизу этой страницы.

По умолчанию в МК включен интерфейс JTAG - поэтому 4 ножки в PORTC не доступны для обычного использования. Чтобы отключить JTAG нужно изменить фьюз JTAGEN в "1". JTAG можно выключить и программно - для этого нужно два раза подряд вписать "1" в бит JTD  в регистре MCUCSR в течении 4 тактов МК. Чтобы опять включить JTAG  нужно два раза подряд вписать "0" в бит JTD

Ножки - выводы МК - какие они бывают.

   Если вам нужно тактировать МК внешним сигналом (например от другого МК в системе или какой либо микросхемы имеющий собственное тактирование) то его нужно подать на  ножку XTAL1 , а ножку XTAL2 оставить свободной.  Параметры такого сигнала см. в ДШ.

 Есть еще выводы и для подключения очень точного но медленного часового кварца - обычно это маленький цилиндрик с двумя гибкими ножками, конденсаторы ему обычно не нужны, да и сам этот кварц нужен если вы хотите сделать например часы реального времени - т.е. он совсем не обязателен. 

Порт в МК

  С учетом занятости некоторых ножек МК под конструктивно заданные функции, количество выводов МК доступных вам для использования меньше чем имеет МК ! МК ATmega16 позволяет использовать 32 ножки из 40 в корпусе DIP.  Эти 32 ножки составляют 4 порта МК

Порт в МК - это 8 ножек или линий ввода-вывода (выводов МК или IO или I-O или I/O) имеющие индивидуальные номера от 0 до 7 и общую букву A, B, C, D, ... отличающую этот порт от других. 

Пример для  PORTB Порт_B имеет (как и другие порты МК) минимум 3 сопоставленных ему регистра :

DDRB - значение битов в этом регистре определяет чем будет ножка этого порта с номером этого бита  - начальное (при включении МК или после сброса) значение "0" - ножка вход  если сделать бит = "1" (говорят: установить бит  англ. set bit ) эта ножка станет выходом. если сделать бит = "0" - говорят: сбросить или очистить бит  англ. clear bit 

PINB  - биты этого регистра показывают чем ("1" или "0") считает МК напряжение на ножке порта с номером этого бита. (этот регистр в ATmega16 нужно только читать, записывать в него что либо бесполезно).

     
 

ВНИМАНИЕ ! В микроконтроллерах AVR старой серии AT90s и в ATmega8, -16, -32, -48, -64, -88, -128, -168 имеет смысл только читать из регистров PINx.
 
В микроконтроллерах ATtiny2313, ATtiny13, ATtiny25, ATtiny45 в других ATtiny в AT90PWM2, AT90PWM3, в AT90USB, в ATmega640, 1280, 1281, 2560, 2561   Запись "1" в бит регистров PINx вызывает изменение соответствующего бита в PORTx

 Вывод этих контроллеров можно переключать очень быстро - с частотой тактового сигнала !

 
     

PORTB - бит этого регистра нужно сделать "1" или "0" что бы на ножке порта с номером этого бита появился  "1" или "0". При этом такой же бит регистра DDRB  должен быть "1" - т.е. ножка должна быть выходом.  Если она сконфигурирована как вход (т.е. её бит в регистре DDRB  очищен или равен нулю)  - то если очищен и соответствующий бит в регистре PORTB ножка будет высокоимпедансным входом (Z-состояние, вход с очень высоким входным сопротивлением более 10 МОм), а если бит в регистре PORTB установлен, т.е. равен "1" то включается "подтяжка" (pull-up) высокоимпедансного входа к  плюсу питания МК через встроенный резистор примерно 40 КОм - ножку как бы соединяют таким резистором с питанием МК.

"Подтяжку" можно использовать для создания четкой лог. "1" на ножке-входе МК без внешних компонентов. К такому входу вы можете подключить кнопку замыкающую его на  "общий" провод устройства - GND - при нажатии. При отпущенной кнопке на входе будет "1" и соответствующий бит в регистре PINx тоже будет "1".  При нажатии кнопки ее контакты замкнут вход на GND и на нем станет "0" - соответственно и в PINx  появится "0" и ваша программа сможет прочитав PINx определить что кнопка нажата.

Подтяжку на всех портах одновременно можно отключить! Для этого нужно установить бит PUD в регистре SFIOR

Вот Таблица состояния ножки МК при условии подключения допустимой нагрузки - т.е. ток через ножку не превышает 20 мА и при не активности аппаратуры МК использующей данные ножки для своей работы. 

Значение бита_х

Состояние 
вывода МК

Программа может только читать этот бит ! (Отличия для некоторых МК описаны выше)

Программа управляет 
этими битами

PBx

PINB.x

DDRB.x

PORTB.x

1

1

1

Высокий лог. уровень (вывод как бы подсоединен к питанию МК резистором 
около 20 Ом)

0

0

Низкий лог. уровень (вывод как бы заземлен 
резистором 
около 20 Ом)

определяется 
только реальным напряжением 
на ножке МК !


Напряжение 
преобразуется в "1" 
или "0" по  приведенным 
выше правилам.

0

1

Подтяжка - pull-up.
Вывод как бы подсоединен к питанию МК 
через 
резистор 40 КОм

0


Z-состояние.

ВысокоОмный вход

Аналогично для порта_C будут регистры: PORTC  PINC  DDRC  

Ножки портов обозначаются в ДШ так: 

  • PB3 - ножка 3 порта_B 

  • PA0 - ножка 0 порта_

Итак ... 

32 ножки IO микроконтроллера ATmega16 могут быть программно и индивидуально сконфигурированы (и переконфигурированы по мере необходимости) как : 

  • 1) входы с высоким (более 10 МОм) входным сопротивлением (для напряжений от 0 до напряжения питания МК !) или Z-вход

  • 2) входы по п 1) но с подключенным внутренним подтягивающим резистором на + питания МК (номинал резистора примерно 40 кОм) 

  • 3) как выходы способные обеспечить ток до 20 мА (но общий ток на порт только до 80 мА, а ток всех портов до 200 мА в DIP корпусе и до 400 мА в квадратном)

Важно: эти 32 ножки МК имеют и дополнительное функциональное назначение описанное в ДШ и книгах  - они являются входами-выходами (пишут: IO или I/O ) и для устройств периферии МК. И при активации какого либо периферийного устройства МК программой, соответствующие ножки МК автоматически конфигурируются ( для PWM не автоматически. Подробней в ДШ) так как требуется для правильной работы этого устройства не зависимо от того как они были сконфигурированы ранее. А после отключения устройства их конфигурация станет такой что была задана последней по тексту программы. (Подробнее в разделе "Alternate Port Functions" ДШ.)


Пример: 

Предположим, что ножки RXD и TXD вы сконфигурировали как входы с подтяжкой (Inputs with pull-up) затем, по ходу работы, программа включила USART на прием (например данных с COM-порта ПК через преобразователь уровней интерфейса rs-232 MAX232) и сразу же ножка RXD станет просто входом (подтяжка уберется) и по ней будут приниматься данные в МК, а вот состояние TXD  не изменится и будет доступно программе для изменения как любой другой из 32 линий IO.  

А вот если включить USART сразу и на прием и на передачу то ножка TXD   станет выходом и  не будет доступна изменению программой до выключения передатчика USART.  

После выключения USART ножки RXD и TXD снова станут входами с подтяжкой, если конечно в программе не было команд меняющих эту конфигурацию.

Назначение ножек можно изменять по ходу программы в соответствии с реализуемым алгоритмом - т.е. по вашему усмотрению.

Советую:  

  • 1) для того чтобы не повредить (не пожечь) выводы МК - подключайте их через резисторы 200 - 360 Ом (если это допустимо по схеме - в большинстве случаев это так) - эти резисторы ограничат ток через вывод МК на допустимом уровне при замыкании элементов схемы на питание или землю. Когда устройство будет отлажено, эти резисторы можно исключить, а можно и оставить - я оставляю

  • 2) Не подключаемые (не используемые) в вашей схеме ножки МК рекомендуется сделать входами с подтяжкой - это не позволит ножке хаотично менять свое напряжение под действием внешних помех. Такое беспорядочное изменение напряжения вызывает дополнительное потребление тока на внутренние переключения в МК и часто вызывает недоумение большим током потребления в спящем режиме работы МК. Если в программе вы используете режимы пониженного энергопотребления то сделайте неиспользуемые ножки IO входами и соедините их с GND.

  • Не оставляйте не подключенными выводы в Z-состоянии !

Я обычно стараюсь развести неиспользуемые "подтянутые" ножки на отдельный разъем на плате - сам разъем можно не паять - но в случае необходимости вы сможете легко впаять его и так задействовать эти выводы МК.

   Что делать если внешний сигнал превышает диапазон напряжений допустимый для ножки МК ? Ответ прост : 
   Напряжение сигнала на который должен отреагировать МК может быть каким угодно большим.
Нам важно чтоб на самой ножке МК он не выходил за допустимый диапазон . Этот диапазон я указал выше.

   Чтобы выполнить это условие очевидно нужно между большим внешним сигналом и ножкой МК поставить какой то элемент на котором будет падать (поглощаться, гаситься) напряжение на которое входной сигнал выходит за диапазон допустимых напряжений для ножки МК.  Простейший, обычный вариант - гасящий резистор. Например для определения перехода напряжения сети 220 вольт через ноль (точнее близко к нулю) в системах тиристорного регулирования мощности на ножку МК подают напряжение фазы через два резистора (не чипы) включенных последовательно и имеющих общее сопротивление от 1 до 10 МОм. 

пример AppNote AVR182 

Если при этом посмотреть осциллографом напряжение на ножке МК настроенной как Z-вход - мы увидим почти меандр (прямоугольный сигнал с равными длительностями "0" и "1" ) с размахом примерно на 0.7-0.9 вольт больше напряжения питания МК.

Важно! Номинал гасящего (или токоограничивающего) резистора выбирается таким чтобы ток втекающий через него в МК не превышал тока потребляющего работающим МК, иначе возникнет "паразитное питание" МК - этот ток будет повышать напряжение питания МК проходя на вывод VCC МК через встроенные в МК защитные диоды линий (ножек I-O) ввода-вывода.

У каждой ножки I/O (у других ножек не у всех) МК есть два защитных диода - один катодом на VCC а второй анодом на GND. Не надейтесь на серьезную защиту МК этими диодами !  Ток через них не должен превышать 1 мА !

   "паразитное питание"  - возможно при питании МК стандартными стабилизаторами напряжения типа 7805  78L05 и т.п. так как они не "сопротивляются" повышению напряжения на их выходе внешним током! А вот при питании параметрическими стабилизаторами - например шунтирующий стабилизатор типа TL431 или резистор со стабилитроном - паразитное питание не возникнет,  но можно пожечь защитные диоды ...
  Если вы не можете поставить большое гасящее сопротивление,  то поставьте максимально допустимое, затем стабилитрон на напряжение чуть ниже напряжения питания МК - при питании 5 вольт подойдут стабилитроны типа  - 1N4730  1N4731  1N4732.  От стабилитрона на ножку МК поставьте резистор 1 КОм.  

Подробнее про правильное питание ( это очень важно ! ) устройства в целом и МК смотрите в АпНоутах в Книгах и проектах. Про электротехнические расчеты, о схемах деления напряжения, усиления сигнала и его ограничения - читайте в книге оглавление которой на заглавной странице курса.

Другой вариант приведения входного сигнала к диапазону напряжений допустимых для МК (это называется нормирование) - применить усилитель с нужными параметрами. Пример там.

  Попробуйте поискать полезную инормацию в Гугле - ее там море !  Учитесь искать!

Добавить страницу в закладки:


<- Назад, на стр. 1           Дальше ->  страница 3 "Вых. сигналы"
 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Rating All.BY Rambler's Top100 ћ≈“ј - ”краина. –ейтинг сайтов



Copyright 2009-2019 123avr.com