Menjelaskan register-register pengendali analog comparator Mengoperasikan analog comparator Analog comparator adalah sebuah modul dalam chip yang bertugas membandingkan tegangan analog pada pin positif AIN0 dengan pin negatif AIN1. Ketika tegangan pada pin AIN0 lebih tinggi dari AIN1, maka akan menge-set flag bit ACO yang dapat dimanfaatkan untuk membangkitkan interupsi. Tegangan catu terhadap comparator analog dikendalikan oleh bit ACD 1. Special Function I/O Register-SFIOR
Bit ke 3ACME: Analog Comparator Multiplexer Enable
Jika di-set dan ADC dimatikan (bit-ADEN dalam register ADCSRA di-clear), maka masukan ke pin AIN1 berasal dari salah satu pin ADC. Jika bit ACME ini di-clear maka AIN1 lah yang bertindak sebagai pin masukan. Lebih jelas simak tabel berikut ACME ADEN MUX2..0 Input (AIN1) Analog Comparator 0 X XXX AIN1 1 1 XXX AIN1 1 0 000 ADC0 1 0 001 ADC1 1 0 010 ADC2 1 0 011 ADC3 1 0 100 ADC4 1 0 101 ADC5 1 0 110 ADC6 1 0 111 ADC7 2. Analog Comparator Control and Status Register – ACSR Bit ke-7 – ACD : Analog Comparator Disable mengatur saklar catuan comparator, ketika di set maka comparator dimatikan Bit ke-6 – ACBG: Analog Comparator Bandgap Select ketika bit ini di-set maka tegangan referensi di pin AIN0 nilainya 1,23 Volt. Jika di-clear maka tegangan referensi akan sesuai dengan tegangan masukan Bit ke-4 – ACI: Analog Comp. Interupt Flag otomatis akan set ketika ada perbedaan tegangan. Bit ke-3 – ACIE: Analog Comparator Interupt Enable Mengaktifkan interupsi analog comparator (ACIE=0, disable dan ACIE=1, enable) Bit ke-2 – ACIC: Analog Comparator Input Capture Enable digunakan untuk capture Timer 1 Bit 1,0 – ACIS1 dan ACIS0: Analog Comparator Interupt Mode Select Kedua bit ini menentukan triger interupsi analog comparator.
ACIS1 ACIS0 Mode Inetrupsi (Bit-
ACO) 0 0 Toggle 0 1 Tidak digunakan 1 0 Falling Edge 1 1 Rising Edge Pilih saluran input Pilih non/aktif analog comparator Pilih bandgap/tidak Pilih interupsi analog comparator/tidak Pilih output analog comparator ke capture timer 1 / tidak Pilih triger SFIOR = (0<<ACME) ; //pilih saluran input //jika menggunakan saluran ADC, setting ADMUX ACSR = (0<<ACD) //aktifkan analog comp |(0<<ACBG) //pakai bandgap atau tidak |(0<<ACIE) // non/aktif interupsi analog comp |(0<<ACIC) // digunakan untuk capture T1 / tidak |(0<<ACIS1)|(0<<ACIS0); //pilih triger
Kemudian buat aliran program untuk mengecet flag ACI