Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ru:avr:io [2013/08/14 18:32] – создано eduardtlmkru:avr:io [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-====== Дигитальные порты ввода/вывода ====== 
  
-Все шины AVR читаемы и записываемы, если их использовать в обычном режиме ввода/вывода (англ. //input/output//, или //I/O//). AVR шины названы буквами латинского алфавита A, B, C и др. У некоторых AVR может отсутствовать шина A, не смотря на наличие шины B. Каждая шина 8-битная и обычно для каждого бита имеется отдельный вывод на контроллере. Выводы подчитываются по номерам, начиная с нуля. Для обоих направлений шины имеется два разных регистра. Так же для каждой шины существует регистр для определения реального направления, где значение бита 0 показывает, что вывод используется в качестве входа, а 1 – в качестве выхода. В общем, имеется по три регистра на одну шину: 
- 
-  * PORT - управление состоянием вывода порта. 
-  * PIN - чтение текущего состояния порта. 
-  * DDR - настройка направления порта. 
- 
-<box 100% round #EEEEEE|Пример> 
- 
-Выводы 0-3 шины B требуется сделать входом, выводы 4-7 – выходом, установить порт 5 в высокое положение и считать значение вывода в переменную. Код программы на языке Си выглядит следующим образом: 
- 
-<code c> 
-#include <avr/io.h> 
- 
-int main() 
-{ 
- unsigned char x; 
- 
- // Выводы 0-3 входом, 4-7 выходом 
- DDRB = 0xF0; 
- 
- // Установка пятого порта в высокое положение 
- PORTB |= (1 << PIN5); 
- 
- // Считывание значения ввода 0-3 
- x = PINB & 0x0F; 
-} 
-</code> 
- 
-</box> 
- 
-В приведённом примере входы использованы в режиме Hi-Z, или высокого импеданса. В данном случае имеется дело с входом, который практически не нагружает источник сигнала. Подобный режим может пригодиться, если вывод используется в качестве шины данных.  Если вывод используется в решении, соединяющем кнопку, выключатель или др. и землю, то следует во входе использовать резистор //pull-up//. Для этого в режиме входа требуется настроить выходной бит соответствующего вывода в высокое положение – в результате чего между напряжением питания и входом включится резистор, который будет держать уровень напряжения высоким, если его не уменьшает что-либо другое. Цель резистора //pull-up// – предотвратить „плавание“ входа (англ. //floating//) из-за статического электричества или других помех. После запуска контроллера все шины ввода/вывода по умолчанию находятся в режиме входа высокого импеданса. 
- 
-В основном выводы шин IO используются помимо логичных соединений и в других перифериях. При желании использовать альтернативную функцию вывода, следует ознакомиться со спецификацией AVR, где указано, в каком режиме должен работать вывод. Например, при использовании вывода в качестве входа канала АЦП (аналогово-цифровой преобразователь), он должен быть настроен на режим входа и для генерирования сигнала ШИП (широко-импульсный преобразователь) – на режим вывода. Некоторые периферические модули определяют сами режим вывода IO. 
ru/avr/io.1376494353.txt.gz · Last modified: (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0