Jumat, 04 Maret 2016

I/O PORT pada Microcontrollert ATMega328

Konfigurasi pin pada UC ATMega328
 

Masing masing pin pada Port B, Port C dan Port D dapat dikonfogurasi sebagai input dan output.
Untuk menkonfigurasi sebagai input maka DDRx = 0; dan jika sebagai output DDRx = 1.
DDRx = Data Direction Register B, C atau D.
Contoh potongan program untuk menkonfigurasi masing masing bit,

                                                              

Setiap pin jika diset sebagai output memiliki kemampuan yang tinggi sebagai sink atau sebagai source, atau dengan kata lain dapat menyalakan LED secara langsung.
Setiap pin jika diset sebagai input maka internal pull-up resistor harus diaktifkan.

Contoh program.
#include<avr/io.h>

int main(void)
{
DDRB &= ~(1 << PINB1); //Set pin PB1 sebagai input
PORTB |= 1 << PINB1; // Mengaktifkan pull-up resistor PB1
DDRB |= (1 << PINB0); //Set PB0 sebagai output
int tekan = 0; //memberi nilai awal variabel tekan = 0
while (1)
{
if (bit_is_clear(PINB, 1)) //Check jika PB1 menjadi low
{
//Perintah Perintah
}

else // Jika PB1 tetap tinggi
{
//Perintah Perintah
}
}
}

Jika diinginkan penghematan daya (mengurangi konsumsi arus) maka pin pin yang tidak dipergunakan agar tidak difloating. Pin pin yang tidak dipergunakan agar diberi pull-up resistor atau pull-down resistor secara external. Tidak dibenarkan menghubungkan secara langsung pin pin yang tidak dipergunakan ke VCC atau ke GND.

Register yang terlibat untuk mensetting I/O Port
 
Bit-4 PUD = Pull-Up Disable. Jika bit PUD diset (mcucr |= (1 <<pud) maka seluruh pull-up pada I/O menjadi disable meskipun Ddxn dan PORTxn menkonfigurasi pull-up aktif.
 

 
 

Tidak ada komentar:

Posting Komentar