Monday, November 25, 2013

Analog to Digital Converter
The ATmega16 memiliki 10 - bit berturut pendekatan ADC . ADC terhubung ke 8 -channel Analog Multiplexer yang memungkinkan 8 input tegangan berakhir tunggal dibangun dari pin Port A. input tegangan berakhir tunggal merujuk ke 0V ( GND ) . Perangkat ini juga mendukung 16 diferensial kombinasi input tegangan . Dua dari input diferensial ( ADC1 , ADC0 dan ADC3 , ADC2 ) dilengkapi dengan gain diprogram , memberikan langkah amplifikasi 0 dB ( 1x ) , 20 dB ( 10x ) , atau 46 dB ( 200x ) pada tegangan input diferensial sebelum A / D konversi . Tujuh diferensial saluran input analog berbagi negatif umum terminal ( ADC1 ) , sedangkan setiap masukan ADC lainnya dapat dipilih sebagai terminal input positif . Jika 1x atau keuntungan 10x digunakan , resolusi 8 - bit dapat diharapkan . Jika 200x gain yang digunakan, resolusi 7 - bit dapat diharapkan .

ADC berisi sampel dan sirkuit Tahan yang menjamin bahwa tegangan input ke ADC adalah diadakan pada tingkat yang konstan selama konversi . Sebuah diagram blok dari ADC ditunjukkan pada Gambar 98 . ADC memiliki pasokan tegangan analog pin yang terpisah , AVCC . AVCC tidak harus berbeda lebih dari ± 0.3V dari VCC . Lihat paragraf " ADC Noise Canceler " pada halaman 211 tentang bagaimana untuk menghubungkan ini pin . Tegangan referensi internal dari nominal 2.56V atau AVCC disediakan On-chip . Tegangan referensi dapat dipisahkan secara eksternal pada pin AREF oleh kapasitor untuk kinerja noise yang lebih baik .


Saturday, November 23, 2013

ADC pada ATMega16

The ATmega16 memiliki 10 - bit berturut pendekatan ADC .
 ADC terhubung ke 8 -channel Analog Multiplexer yang memungkinkan 8 input tegangan berakhir tunggal dibangun dari pin Port A. input tegangan berakhir tunggal merujuk ke 0V ( GND ) . Perangkat ini juga mendukung 16 diferensial kombinasi input tegangan . Dua dari input diferensial ( ADC1 , ADC0 dan ADC3 , ADC2 ) dilengkapi dengan gain diprogram , memberikan langkah amplifikasi 0 dB ( 1x ) , 20 dB ( 10x ) , atau 46 dB ( 200x ) pada tegangan input diferensial sebelum A / D konversi . Tujuh diferensial saluran input analog berbagi negatif umum terminal ( ADC1 ) , sedangkan setiap masukan ADC lainnya dapat dipilih sebagai terminal input positif . Jika 1x atau keuntungan 10x digunakan , resolusi 8 - bit dapat diharapkan . Jika 200x gain yang digunakan, resolusi 7 - bit dapat diharapkan .
ADC berisi sampel dan sirkuit Tahan yang menjamin bahwa tegangan input ke ADC adalah diadakan pada tingkat yang konstan selama konversi . Sebuah diagram blok dari ADC ditunjukkan pada Gambar 98 . ADC memiliki pasokan tegangan analog pin yang terpisah , AVCC . AVCC tidak harus berbeda lebih dari ± 0.3V dari VCC . Lihat paragraf " ADC Noise Canceler " pada halaman 211 tentang bagaimana untuk menghubungkan ini pin . Tegangan referensi internal dari nominal 2.56V atau AVCC disediakan On-chip . Tegangan referensi dapat dipisahkan secara eksternal pada pin AREF oleh kapasitor untuk kinerja noise yang lebih baik .
operasi
ADC mengkonversi tegangan input analog ke nilai digital 10 - bit melalui pendekatan berurutan . Nilai minimum merupakan GND dan nilai maksimum merupakan tegangan pada pin AREF dikurangi 1 LSB . Opsional, AVCC atau tegangan referensi 2.56V internal dapat terhubung ke pin AREF dengan menulis ke bit REFSn di ADMUX Register . internal tegangan referensi demikian dapat dipisahkan oleh kapasitor eksternal pada pin AREF untuk meningkatkan kekebalan kebisingan . Saluran analog input dan gain diferensial dipilih dengan menulis ke bit MUX ADMUX . Ada pin masukan ADC , serta GND dan tegangan referensi bandgap tetap, bisa terpilih sebagai masukan berakhir tunggal untuk ADC . Sebuah pilihan pin masukan ADC dapat dipilih sebagai input positif dan negatif dengan gain penguat diferensial . Jika saluran diferensial dipilih , tahap gain diferensial menguatkan perbedaan tegangan antara masukan yang dipilih pasangan channel oleh faktor keuntungan yang dipilih . Nilai ini diperkuat kemudian menjadi input analog ke ADC . Jika saluran berakhir tunggal digunakan , penguat gain dilewati sama sekali . ADC diaktifkan dengan menetapkan ADC Enable bit , ADEN di ADCSRA . Tegangan referensi dan pilihan saluran masukan tidak akan berlaku sampai ADEN diatur . The ADC tidak mengkonsumsi daya ketika ADEN dibersihkan , sehingga dianjurkan untuk mematikan ADC sebelum memasuki modus penghematan daya tidur .
The ADC menghasilkan hasil 10 - bit yang disajikan dalam ADC data register , ADCH dan ADCL . Secara default , hasilnya disajikan benar disesuaikan , tapi opsional dapat disajikan kiri disesuaikan dengan mengatur bit ADLAR di ADMUX . Jika hasilnya dibiarkan disesuaikan dan tidak lebih dari 8 - bit presisi diperlukan , itu sudah cukup untuk membaca ADCH . Jika tidak, ADCL harus dibaca terlebih dahulu, kemudian ADCH , untuk memastikan bahwa isi dari data Register milik konversi yang sama . Setelah ADCL dibaca , ADC akses ke Register data diblokir . Ini berarti bahwa jika ADCL telah dibaca , dan konversi selesai sebelum ADCH adalah membaca, mendaftar tidak diperbarui dan hasil dari konversi hilang . Ketika ADCH dibaca , ADC akses ke ADCH dan ADCL Register diaktifkan kembali . ADC memiliki interrupt sendiri yang dapat dipicu ketika konversi selesai . ketika ADC akses ke Register Data dilarang antara pembacaan ADCH dan ADCL , interrupt  akan memicu bahkan jika hasilnya hilang .
Mulai Konversi suatu
Sebuah konversi tunggal dimulai dengan menulis satu logis untuk ADC Mulai Konversi bit , ADSC . Bit ini tetap tinggi selama konversi sedang berlangsung dan akan dihapus oleh hardware ketika konversi selesai . Jika saluran data yang berbeda yang dipilih sementara konversi sedang berlangsung , ADC akan menyelesaikan konversi saat sebelum melakukan perubahan saluran. Atau , konversi dapat dipicu secara otomatis oleh berbagai sumber . Auto Memicu diaktifkan dengan menetapkan Auto Pemicu ADC Aktifkan bit , ATanggal di ADCSRA . Pemicu sumber dipilih dengan menetapkan Pemicu ADC Pilih bit , ADTS di SFIOR ( lihat keterangan dari bit ADTS untuk daftar sumber-sumber pemicu ) . Ketika tepi positif terjadi pada sinyal pemicu yang dipilih , ADC prescaler direset dan konversi dimulai . Ini menyediakan metode untuk memulai konversi pada interval yang tetap . Jika sinyal pemicu masih diatur bila konversi selesai , konversi baru tidak akan dimulai . Jika tepi positif lain terjadi pada sinyal pemicu selama konversi , tepi akan diabaikan . Perhatikan bahwa Bendera Interrupt akan ditetapkan bahkan jika interupsi tertentu dinonaktifkan atau mengaktifkan interrupt global bit dalam sreg dihapus . Sebuah konversi sehingga dapat dipicu tanpa menyebabkan interupsi . Namun, Bendera Interrupt harus dibersihkan untuk memicu konversi baru di acara interrupt berikutnya .
Menggunakan Interrupt Flag ADC sebagai sumber pemicu membuat ADC memulai konversi baru segera setelah konversi berlangsung telah selesai. ADC kemudian beroperasi dalam Free Running modus, terus sampel dan memperbarui data ADC Register. Konversi pertama harus dimulai dengan menulis satu logis untuk bit ADSC di ADCSRA. Dalam mode ini ADC akan melakukan konversi berturut terlepas dari apakah Interrupt Flag ADC, ADIF dihapus atau tidak. Jika Auto Memicu diaktifkan, konversi tunggal dapat dimulai dengan menulis ADSC di ADCSRA satu. ADSC juga dapat digunakan untuk menentukan apakah konversi sedang berlangsung. The ADSC bit akan dibaca sebagai satu selama konversi, terlepas dari bagaimana konversi dimulai
Prescaling dan Konversi Waktu 

Secara default, pendekatan sirkuit berturut membutuhkan frekuensi clock input antara 50 kHz dan 200 kHz untuk mendapatkan resolusi maksimum. Jika resolusi yang lebih rendah dari 10 bit yang dibutuhkan, jam masukan frekuensi ke ADC dapat lebih tinggi dari 200 kHz untuk mendapatkan sample rate yang lebih tinggi. Modul ADC berisi prescaler, yang menghasilkan sebuah ADC frekuensi clock diterima dari setiap frekuensi CPU di atas 100 kHz. Prescaling diatur oleh bit ADPs di ADCSRA. Prescaler mulai menghitung dari saat ADC diaktifkan dengan mengatur bit ADEN di ADCSRA.Prescaler terus berjalan selama bit ADEN diatur, dan terus reset ketika ADEN rendah.Saat melakukan konversi berakhir tunggal dengan menetapkan bit ADSC di ADCSRA, konversi dimulai di tepi terbit berikut siklus clock ADC. Lihat "Differential Laba Saluran" pada halaman 209 untuk detail diferensial waktu konversi. 
Sebuah konversi normal memakan waktu 13 siklus clock ADC. Konversi pertama setelah ADC diaktifkan (ADEN di ADCSRA diatur) membutuhkan waktu 25 clock cycle ADC untuk menginisialisasi sirkuit analog. Sebenarnya sampel-dan-terus berlangsung 1,5 jam siklus ADC setelah dimulainya konversi normal dan 13,5 siklus clock ADC setelah dimulainya konversi pertama. 
Ketika konversi selesai, hasilnya ditulis ke ADC data register, dan ADIF diatur. Dalam mode konversi tunggal, ADSC dibersihkan secara bersamaan. Perangkat lunak kemudian dapat menetapkan ADSC lagi, dan konversi baru akan dimulai pada hari pertama naik ADC tepi jam. Ketika Auto Memicu digunakan, prescaler adalah reset ketika acara memicu terjadi. Ini menjamin penundaan tetap dari peristiwa pemicunya awal konversi. Dalam mode ini, sampel-dan-terus 
berlangsung 2 siklus clock ADC setelah tepi terbit pada sumber sinyal pemicu. Tiga siklus clock CPU tambahan digunakan untuk sinkronisasi logika. Saat menggunakan modus Diferensial, bersama dengan Auto memicu dari sumber selain Konversi ADC Complete, setiap konversi akan membutuhkan 25 jam ADC. Hal ini karena ADC harus dinonaktifkan dan diaktifkan kembali setelah setiap konversi. Dalam modus Free Running, konversi baru akan dimulai segera setelah konversi selesai, sementara ADSC tetap tinggi. Untuk ringkasan kali konversi, lihat Tabel 81.