Skip to main content

7. Flowchart Proses Konversi ADC

Berikut adalah alur kerja lengkap penggunaan ADC pada ATmega328p:

image

Flowchart di atas menggambarkan proses pembacaan ADC pada ATmega328p dalam mode single conversion dengan metode polling, dengan konfigurasi sebagai berikut:

  1. Mode konversi:
    ADC bekerja pada single conversion mode, yaitu setiap konversi dimulai secara manual dengan mengeset bit ADSC = 1.

  2. Metode sinkronisasi:
    Status selesai konversi diperiksa menggunakan polling terhadap bit ADIF pada register ADCSRA, bukan menggunakan interupsi.

  3. Auto trigger:
    Flowchart ini mengasumsikan ADATE = 0, sehingga konversi tidak berjalan otomatis dan harus dimulai ulang oleh program setiap kali pembacaan dilakukan.

  4. Interrupt ADC:
    Flowchart ini tidak menggunakan interrupt ADC, sehingga ADIE = 0.

  5. Channel input:
    Contoh konfigurasi pada flowchart menggunakan ADC0 (pin A0 / PC0) sebagai kanal input analog.

  6. Tegangan referensi:
    Flowchart ini mengikuti contoh program assembly yang menggunakan tegangan referensi internal melalui konfigurasi bit REFS1:REFS0 pada register ADMUX.

  7. Format data hasil konversi:
    Hasil ADC disimpan dalam format right-justified (ADLAR = 0), sehingga nilai 10-bit dibaca penuh melalui dua register:

    • ADCL sebagai low-byte
    • ADCH sebagai high-byte
  8. Urutan pembacaan register data:
    Register ADCL harus dibaca terlebih dahulu, kemudian ADCH, agar data hasil konversi tetap konsisten.

  9. Prescaler ADC:
    Contoh ini menggunakan prescaler CLK/128 (ADPS2:ADPS0 = 111).
    Jika clock sistem 16 MHz, maka clock ADC menjadi:

    image

    Nilai ini berada dalam rentang kerja ADC yang direkomendasikan.

Ringkasan Konfigurasi yang Digunakan

  • ADC Mode: Single Conversion
  • Trigger Mode: Manual (ADSC = 1)
  • Polling / Interrupt: Polling (ADIF)
  • Auto Trigger: Nonaktif (ADATE = 0)
  • Interrupt ADC: Nonaktif (ADIE = 0)
  • Channel: ADC0 / A0 / PC0
  • Data Alignment: Right-justified (ADLAR = 0)
  • Prescaler: CLK/128
  • Clock ADC: 125 kHz (jika F_CPU = 16 MHz)