Presentation is loading. Please wait.

Presentation is loading. Please wait.

PORT(I/O) Configuration

Similar presentations


Presentation on theme: "PORT(I/O) Configuration"— Presentation transcript:

1 PORT(I/O) Configuration
Lecturer: Reza Arjmandi Autumn 2015 Lecture 2: Introduction Input/Output with PORT Configuration

2 Input/Output AVR CPU BUS TWI ADC SPI ISP PORTA PORTB PORTC PORTD SRAM
Flash Memory SRAM EEPROM Counter USART TWI ADC MCU Control and Timing I/O Ports Interface Watchdog Timer SPI ISP Interrupt Unit PORTD PORTC PORTB PORTA Internal Calibrated Oscillator Crystal PORTA PORTB PORTC PORTD

3 Input/Output 0V +5V 1 1 0V 8 Bit Parallel Data(Input)
1 8 Bit Parallel Data(Input) 0V 8 Bit Parallel Data(Output) 10K VCC Ports Interface I/O 0xB7 0x3F 0 -> 0V +5V 1 -> +5V Example: char a; a=PINB; //read data 0xB7 from PORTA=0x3F; //write data 0x3F on PORTA PORTA_Bit7=0; //LED off PORTA_Bit7=1; //LED On If(PINB_Bit7==0) //read data from AVR CPU

4 Input/Output-Registers
I/O x:A,B,C,D,… AVR CPU DDRx PINx DDRx_Bit0 ex. DDRA_Bit0 PORTx PORTx_Bit3 ex. PORTD_Bit3 Input/Output Registers: DDRA PORA PINB DDRC PINC …. Header file: ioavr.h Ex. #include<ioavr.h>

5 Input/Output-Registers-DDR
Data Direction Register(Initial value for DDR=0) 0->for input 1->for output Output Input Example: #include<ioavr.h> //include Header file DDRA_Bit0=1; DDRA_Bit2=0; DDRB=0xB3; //binary: DDRC=0b ; //Hex=0xB3

6 8 Bit Parallel Data(Output)
Input/Output-Registers-PORT Register for Output Direction 1 1 8 Bit Parallel Data(Output) 0x3F Example: #include<ioavr.h> //include Header file DDRA=0xFF; //Config PORTA for output PORTA=0x3F; //binary: DDRC_Bit3=1 ; //Config PORTA Bit3 for output PORTC_Bit3=0; PORTA

7 8 Bit Parallel Data(Input)
Input/Output-Registers-PIN Recieve:63 Register for Input Direction Initial Value for PIN Register =0 1 1 8 Bit Parallel Data(Input) 0x3F Example: #include<ioavr.h> //include Header file DDRB=0x00; //Config PORTB for input Char a=PINB; //read 0x3F from PINB Lcd_putchar(a); //display lcd data a=PINB_Bit5; PINB

8 Input/Output-Pull Up/Down
Example: PIN B initial value=0 10K VCC 1 How to capture push button? Answer : with external Pull Up resistor PINB

9 Input/Output-Internal Pull Up/Down
10K VCC Internal Pull-Up resistor 1 PINB(initial value) 10K 10K 10K 10K 10K 10K 10K 10K Internal Pull-down resistor Example: DDRB=0x00; //config PORTB as input PORTB=0x01; //turn on internal pull-up resistor for Bit0 DDRD=0x00; //config PORTD as input PORTD=0xFF; //turn on internal pull-up

10 Input/Output-Turn off all Pull down resistor
PUD بیت 2 از رجیستر SFIO است و با یک شدن آن تمام مقاومت های Pull-Up غیر فعال می شوند حتی اگر تنظیمات DDRxn و PORTxn به شکلی باشد که Pull-Up پین هایی فعال باشند . Example: SFIOR|=0b ; //disable all internal pull-up resistor

11 BreadBoard

12 Input/Output-Example
فلاشر 8 کانال: برنامه ای که روی 8 LED روی پورتA به صورت حرکت رفت و برگشتی، روشن و خاموش کند #include<ioavr.h> #include<intrinsics.h> int i; main() { DDRA=0XFF; while(1) for(i=1;i<=128;i=i*2) PORTA=i; __delay_cycles(100000); } for(i=64;i>1;i=i/2)

13 Input/Output-Example2
Start-stop: با فشردن کلید push button که روی پین شماره 7 از پورتD قرار گرفته، LED واقع روی پین شماره 0 از پورت C روشن شود و حالت خود را حفظ کند تا زمانیکه کلید روی پین شماره 3 از همان پورت فشرده شود. include<ioavr.h> main() { DDRD_Bit7=0; PORTD_Bit7=1; DDRD_Bit3=0; PORTD_Bit3=1; DDRC_Bit0=1; while(1) if(PIND_Bit7==0) PORTC_Bit0=1; } if(PIND_Bit3==0) PORTC_Bit0=0; stop start

14 Input/Output-Current Limit
باید دقت کرد که مجموع جریان sink یا source شده از یک پورت نباید از 100 میلی آمپر تجاوز کند و جریان کل پورت ها نیز نباید بیش از 200 میلی آمپر شود.(برای PDIP Package ، جزئیات بیشتر در دیتاشیت) How to amplify current or switch High voltage? Answer: -Transistor(PNP,NPN,FET,MOS,…) -Triac - Thyristor -… Maximum current: 100mA Maximum current: 100mA Maximum current: 100mA

15 Drivers برای راه اندازی تجهیزاتی چون هیتر، موتور، پمپ، منبع نور و … ، نیاز به درایور یا مدارهای ایجاد توان داریم، تا ولتاژ و جریان مورد نیاز آن ها را تامین کنیم. هرچند میکروکنترلرها فرمان ها را صادر می کنند، اما خروجی میکروکنترلرها قادر نیستند، توان لازم جهت تجهیزات محرک را فراهم کنند. ولتاژ خروجی میکروکنترلرها حدود ۵ ولت و جریان خروجی آن ها در حد چند میلی آمپر است. خیالتان را راحت کنم، با یک میکروکنترلر موتور کوچک یک اسباب بازی را نمی توان به حرکت در آورد. مدارهای درایور ولتاژ و جریان لازم برای تجهیزات محرک را فراهم می کنند. 

16 Relay

17 Contact us


Download ppt "PORT(I/O) Configuration"

Similar presentations


Ads by Google