View
119
Download
7
Category
Preview:
DESCRIPTION
ATMega128 I/O Ports. ATMega128 I/O Ports. 6 개의 8 비트 양방향 병렬 I/O 포트 (PORTA~F) 1 개의 5 비트 양방향 병렬 I/O 포트 (PORTG) 각 PORT 별 3 개 I/O 레지스터 영역 DDR(Data Direct Register) : 입출력 방향 결정 PORT(Data Register) : 데이터 출력 PORT PIN(Port Input Pins Register) : 포트의 입력 핀 Rg - PowerPoint PPT Presentation
Citation preview
KyungHee Univ. 2-1
ATMega128 I/O Ports
KyungHee Univ. 2-2
ATMega128 I/O Ports
6 개의 8 비트 양방향 병렬 I/O 포트(PORTA~F)
1 개의 5 비트 양방향 병렬 I/O 포트 (PORTG)각 PORT 별 3 개 I/O 레지스터 영역
DDR(Data Direct Register) : 입출력 방향 결정 PORT(Data Register) : 데이터 출력 PORT PIN(Port Input Pins Register) : 포트의 입력 핀
RgDDR, PORT : 읽기 / 쓰기 가능 , PIN : 읽기만 가능
KyungHee Univ. 2-3
ATMega128 I/O Ports 의 특징
특징최대 40mA 구동 전류
LED 1 개 구동 가능선택 가능한 Pull Up 저항 내장
20K – 100K OhmVcc, GND 사이에 입력단 보호 Diode 내장
Read-Modified-Write Cycle 지원다른 pin 의 영향을 주지 않고 한 port 핀의
방향을 바꿀 수 있음 DDRD &= (~0x03); // Input Port : PD0,
PD1 DDRF |= 0x03; // Output Port : PF0, PF1 SBI : Set Bit in I/O Register 과 CBI : Clear Bit in I/O Register instruction
사용
KyungHee Univ. 2-4
ATMega128 I/O Ports
모든 Port 는 다음과 같은 특성을 갖는다 .Bit-selectable pull-up resistorsBit-selectable tri-state outputsSchmitt trigger inputSynchronized to the system clock :
입력신호의 안정성에 기여 (Pin Read Operation 시 1.5Cycle 이전에 Pin 신호가 안정화 되어야 함 ) 같은 port 에 write 한 다음 바로 read 시
nop instruction 필요 (1,5Cycle Delay) : __no_operation();
Symmetrical DC drive capability
KyungHee Univ. 2-5
AVR port architecture
pull-up resistor
schmitt trigger buffer
analog switch
port pin
DDRx
PORTx
PINx
Tri_State
KyungHee Univ. 2-6
ATMega128 I/O Ports
I/O Port input structureProtection diodesProgrammable pull-up resistor
port pin pull-up resistor
IO Port Register
Port A-G 동일
7
SFIOR: Special Function IO Reg.
PUDPUD Set 1 : Pull-Up DiableDDxn = 0, PORTxn = 1 로 설정되어도 이 bit
가 우선함
8
Port A 부가 기능
외부 memory 확장하위 8bit address 와 8bit dataALE 신호
9
Port B 부가 기능
Timer/Counter OutputSPI Bus Interface
10
Port C 부가 기능
외부 memory 확장상위 8bit address
11
Port D 부가 기능
Timer/Counter Input USART Interface External Interrupt TWI Serial Interface
12
Port E 부가 기능
External Interrupt Timer/Counter Input and Output Analog Comparator UART Interface
13
Port F 부가 기능
ADC InputJTAG interface
14
Port G 부가 기능
RTC OscillatorExternal memory interface
ALE/RD/WR
15
ATMega128 I/O Ports
Port 이용 프로그램 작성시 고려 할 점Input pins 1.5 clock cycle delay 를 갖는다 .
Read Operation 을 실행하기 1.5 clock cy-cle 전에 Input Pin 의 상태가 안정 되어야 한다 .
I/O 관련 프로그램을 Transportable, Readable, More bug free 하게 작성 하기 위한 예
• PORTF 의 PF0,PF1 를 Output Port 로 정의 하는 경우 DDRF |= b00000011; 와 같이 코딩 하는 것 보다
아래 와 같이 코딩 하는 것이 보다 적정 하다 . DDRF |= ( 1<< PF0) | (1 << PF1);
16
AVR I/O port programming WinAVR\avr\include\avr\iom128.h File 에 Port
사용에 관련된 정의가 있다 . 예
/*Data Register, Port B */#define PORTB _SFR_IO8(0x18)// SFR: Special Function Registers// _SFR_IO8(0x18): Memory $32($20 + $18) 번지 ,// I/O Port $18 번지 + SFR Offset($20)
……/*Port B Data Register – PORTB */#define PB7 7#define PB6 6#define PB5 5#define PB4 4#define PB3 3#define PB2 2#define PB1 1#define PB0 0
17
AVR I/O port programming iom128.h 에서 #define 을 이용하여 정의한 Sym-
bol 은 아래와 같이 이해하기 쉬운 프로그램 작성을 가능하게 한다 .예
PORTB = 0x05;DDRB = 0x0A;
SPCR = (1<<SPE) | (1<<MSTR);DDRB |= (1<<DDB2) | (1<<DDB0);
temp0 = PINB;
18
AVR I/O port programming AND, OR, XOR 논리 연산을 이용한 Bit Operation
예 //toggle bit 5PORTB = PORTB ^ 0x20; // invertPORTB ^= 0x20; // invert again another way
//Set bits 7 and 2PORTB = PORTB | 0x84;PORTB |= (1<<PB7)|(1<<PB2) ; // More portable
//Clear bit 0 and 1PORTB = PORTB & 0xfc;PORTB &= ~((1<<PB0)|(1<<PB1)); //More porta-
ble
19
AVR I/O port programming Mask 를 사용 하여 개별 Bit 값을 알 수 있다 .
예 //Port D 의 PD0 bit 가 1 인가를 Test 한다 .if(PIND & 0x01){take_some_action();}위 예에서 0x01 을 mask 라 한다 .
D5 Bit 가 0 인가를 Test 한다 .if(~PIND & 0x20){take_action();}
avr-libc function bit_is_set() 과 bit_is_clear() 를 사용 하여 아래와 같이 프로그램 할 수도 있다 .if (bit_is_set(PINC, PC2) {return 0;}
while (bit_is_clear(SPSR,SPIF)) {}
20
AND, OR, Shift Operation 과 Mask을이용 한 programming 예 BCD Packing
Unsigned char x1, x0 에 10 진 수 2,1 이 저장 되어 있다 . 이 를 unsigned char y0 에 BCD Code 로 Packing 하라 .
BCD UnPackingUnsigned char y0 에 Packed BCD 수 0x12 가
저장 되어 있다 . 이 를 unsigned char x1, x0 에 UnPacking 하라 .
21
BCD Packing, UnPacking 예#include <avr/io.h>
#define LSD_BCD 0x0f#define MSD_BCD 0xf0
unsigned char x1=0x01, x0=0x02;unsigned char y0=0;
int main(void){
unsigned char tmp;// Packing
y0 = x1 << 4;y0 = y0 & MSD_BCD;tmp = x0 & LSD_BCD;y0 |= tmp;
22
BCD Packing, UnPacking 예// Unpacking
x1 = 0;x0 = 0;tmp = y0;x0 = tmp & LSD_BCD;tmp = tmp >> 4;x1 = tmp & LSD_BCD;
}
23
AVR I/O port programming 예#include <avr/io.h>void port_init(void){
PORTD |= 0x03; // External SW Pull Up DDRD &= (~0x03; // Input Port: PD0, PD1 PORTF = 0x00; DDRF |= 0x03; // Output Port: PF0, PF1
}
int main(void){port_init();
// PIND(PD0, PD1) 의 상태를 PORTF 에 출력 한다 .while(1){
PORTF = PIND & 0x03;
}}
24
AVR I/O port interfacing
25
Pull-up 기능은 Switch 를 외부 저항 없이 Input Port 에 Interface 할 수 있게 한다 . 그러나 Leakage current 가 증가 할 우려가 있다 .
외부 조건 ( 정전기 , 부하에 의한 고전압 발생 등 )에 대한 I/O Port protection 에 대한 고려가 필요 함 .
LED Drive Circuits적절한 Current Limit Resistors 의 선택이 필요함 .
Motor or relay drive circuitsInductive 에 의한 고전압을 제거 하는 Diode 필요
5V to 3.3V or 3.3V to 5V interfacingVoltage thresholds 가 같은 logic families Chip
을 사용 하거나 ,Interface Chip : 74LVC244, TXB0108 등 이용
Recommended