Skema AVR cepat. Sekering-bit dalam mikrokontroler AVR

Desain desain dan pedoman untuk penggunaan papan debug Mikroelektronika didasarkan pada desain. Easyavr (dan tidak hanya) yang diproduksi oleh perusahaan ini menarik pemula untuk menguasai teknik mikrokontroler kualitas manufaktur dan berbagai komponen yang diinstal pada mereka. Bahkan, setengah dari mereka menjadi tidak perlu setelah memeriksa tindakan lima-enam program pelatihan, diasumsikan sendiri, ada banyak LED dan tombol yang terhubung ke setiap baris setiap port. Tetapi mereka hanya membutuhkan eksperimen untuk mengelola sinyal dan indikator flash, dan ini terjadi cukup cepat. Di papan saya hanya ada empat led dan switch, cukup untuk memulai ...

Dikembangkan dengan biaya yang saya berikan namanya fastavr. Memiliki ukuran 98x127 mm dan instalasi tercetak satu sisi, sangat cocok untuk membuat di rumah. Sirkuit mikro diterapkan hanya pada penutup celup yang dipasang di panel, yang membuatnya mudah untuk menggantinya dalam proses percobaan. Mikrokontroler dapat diklamikan baik dari resonator kuarsa dan dari generator jam yang diinstal jam frekuensi dengan pembagi frekuensi, konektor disediakan untuk menghubungkan programmer Standar STK-200 dengan feed selektif di atasnya dan dengan kemampuan untuk menghubungkan JTAG Adaptor jika perlu, Anda dapat memprogram dan mikrokontroler yang dirancang untuk bekerja. Di perangkat lain.

Di papan ada perangkat periferal yang paling diperlukan untuk kemasan desain debugged: indikator LED tujuh-elemen dua bit, LCD simbolik, RS-232, SPI, antarmuka PS / 2 (untuk menghubungkan keyboard komputer standar atau "mouse" ), Eeprom mikro, alarm suara. Dimungkinkan untuk menghubungkan sebagian besar perangkat ini ke kesimpulan dari port mikrokontroler apa pun dalam kombinasi sewenang-wenang Semua port tersedia dan untuk menghubungkan perangkat di luar papan. Tersedia di dewan perangkat, termasuk generator kuarsa dan indikator LED, juga dapat dihubungkan ke perangkat di luar semua koneksi ini tidak memerlukan solder dan dilakukan dengan menginstal jumper di antara koneksi yang tersedia di papan atau di antara mereka dan perangkat eksternal .

Awalnya, papan debug dengan mikrokontroler murah ATmega8, yang memiliki hampir semua keluarga yang melekat (AVR) dengan peluang, namun, saya memutuskan untuk tidak menyimpan dan menerapkan mikrokontroler keluarga yang sama dalam kasus DIP dengan jumlah kesimpulan maksimum. (40) - Atmega16 atau ATmega32. Lokasi kesimpulan mereka sama, dan siapa pun dapat diinstal pada papan yang dijelaskan. Sejumlah besar output memungkinkan Anda menghubungkan perangkat periferal yang lebih berbeda yang mungkin diperlukan saat melakukan debugging program. Karena mikrokontroler keluarga AVR secara terprogram kompatibel, dikhususkan untuk program yang lebih kuat itu mudah, sebagai aturan, untuk mentransfer ke pertimbangan yang kurang kuat, tentu saja, perbedaan mereka.

Pada contoh yang sama dari mikrokontroler yang diinstal pada papan debug, banyak program berbeda dapat dibebankan. Perangkat lunak (flash) Memori mikrokontroler modern memungkinkan begitu banyak siklus pemrograman ulang yang ketika membuat banyak perubahan pada program dalam proses debuggingnya, Anda tidak dapat memikirkan kemungkinan kelelahan sumber daya bahkan ketika tanda-tanda pertama ini muncul ( Beberapa sel memori tidak diprogram dari pertama kali) mikrokontroler, menghabiskannya di papan debug, Anda seharusnya tidak membuang. Ini dapat diprogram dengan terakhir kalinya, mengirim "untuk pekerjaan permanen" ke salah satu struktur yang sebelumnya mapan.

Skema simpul utama papan fastavr ditunjukkan pada Gambar. 1. Semua koneksi pinggiran ke port mikrokontroler DD2 dilakukan melalui pin pin HR1-XP HR1-XP double-row. Bahkan pin masing-masing terhubung ke output port mikrokontroler, dan ganjil - ke yang tersedia di papan tulis perangkat periferal. Ketika merakit tata letak untuk debugging Pin yang berdekatan dengan mudah terhubung ke jumper konvensional, dan pada penghapusan, di blok lain, atau bahkan pada papan lain, adalah jumper dari segmen dari kawat terisolasi fleksibel, dilengkapi di kedua ujung jack dari konektor (Gbr. 2). Pada soket dipasang tabung panas-menyusut.


Dalam proses debugging ke pin yang sama, lebih mudah untuk menghubungkan instrumen kontrol dan pengukuran: osiloskop, meter frekuensi, generator sinyal uji. Lokasi pin berturut-turut dalam urutan peningkatan nomor kategori pelabuhan memfasilitasi pencarian untuk hak dan secara signifikan mengurangi risiko membingungkan mereka. Solusi seperti itu, menurut pendapat saya, jauh lebih nyaman daripada menggunakan di sebagian besar debugboard industri untuk koneksi eksternal dari konektor IDC-10 dua baris yang tidak aktif. Satu-satunya keuntungan adalah kehadiran kunci yang menyediakan docking yang benar dengan bagian penghubung konektor. Dan ketika menghubungkan satu kawat atau probe alat ukur, perlu untuk mempertimbangkan kontak setiap kali, mengingat urutan kepatuhan mereka dengan kesimpulan mikrokontroler.

Jika jumper S2-S4 dihapus, S5 dan S6 diinstal, resonator kuarsa ZQ1 terhubung ke generator jam internal mikrokontroler, frekuensi yang dapat dipilih dengan apa pun yang diperlukan untuk tugas yang diselesaikan. Papan juga memiliki generator Quartz G1 integral untuk 16 MHz. Pemicu chip DD1 membagi frekuensinya menjadi dua dan empat. Setelah melepas jumper S5, S6 dan menginstal salah satu jumper S2-S4, dimungkinkan untuk mengirim ke input jam dari pulsa mikrokontroler (output 13) dengan frekuensi 4, 8 atau 16 MHz. Ini akan memastikan pengoperasian mikrokontroler dengan konfigurasi apa pun di mana generator RC jam internal dimatikan.

Jam kerja dari generator eksternal dapat bermanfaat dan mengembalikan kinerja mikrokontroler, konfigurasi yang diminta secara keliru. Anda dapat membaca tentang itu.

Meskipun mikrokontroler berisi memori data non-volatile, seringkali tidak cukup untuk tugas yang solid. Masalahnya dapat diselesaikan dengan menghubungkan ke mikrokontroler mikro memori eksternal volume yang diinginkan. Di papan fastavr, ini dilakukan sesuai dengan skema yang ditunjukkan pada Gambar. 3 chip DS1 24C atau 24LC Seri - memori ulang memori non-volatile dengan antarmuka I2C. Input AO-A2 terhubung sedemikian rupa sehingga pembuangan yang lebih muda dari alamatnya yang dipimpin pada bus antarmuka adalah 1, dan dua berikut ini nol.

Pada Gambar. 4 menunjukkan skema yang tersedia pada papan kontrol dan indikasi fastavr. Switch Dip Quadruple SA1 terhubung ke kesimpulan dari port mikrokontroler. Resistor R4-R7 melindungi kesimpulan ini jika secara acak diprogram sebagai output overload saat sakelar tertutup. Resistor perakitan DR1 mendukung tingkat logis yang tinggi pada input mikrokontroler saat SH11-SA1.4 beralih terbuka. Resistor perakitan "ekstra" kelima juga dapat digunakan untuk mengirimkan level tersebut ke rantai apa pun.
Empat LED sinyal HL1 -HL4 bersinar pada level logis tinggi pada output yang terhubung, dan tidak akan dinyalakan pada rendah. Resistor R8-R11 membatasi arus.

Sakelar elektroda umum indikator LED tujuh elemen berukuran HG1, dikumpulkan pada transistor VT1-VT4. Mereka dapat mengontrol indikator dengan kedua anoda umum (misalnya, DA56-11) dan dengan katoda umum elemen (misalnya, DC56-11), Anda hanya perlu memberikan polaritas perangkat lunak yang diperlukan dari pulsa kontrol yang diberikan kepada R12-R21 resistor. Indikator tersebut mudah ditemukan di register kas dan blok sistem komputer. Setelah melepas jumper S7, Anda dapat menonaktifkan elemen H (titik desimal) dari pelepasan bawah indikator HG1.

Konektor XP5 digunakan untuk terhubung ke papan fastavr LCD simbolis umum dengan pengontrol bawaan. Bahkan, ini adalah konektor IDC-34ms 34-pin dua baris, tetapi hanya 14 dari 17 kontak satu baris yang digunakan. Angka-angka mereka yang ditunjukkan dalam diagram tidak sesuai dengan konektor standar untuk ini, tetapi bertepatan dengan temuan LCD yang paling umum. Kehadiran konektor semacam itu memungkinkan Anda untuk digunakan untuk berkomunikasi dengan indikator dengan komputer standar 34-pro-aqueous, yang dirancang untuk menghubungkan drive disk fleksibel dengan motherboard. Dalam bukaan situs kontak antarmuka LCD dimasukkan dan disolder ke mereka blok cubit 14-pin. Satu konektor diletakkan di atasnya kabel datarDan yang kedua dimasukkan ke dalam konektor XP5. Kontak ribuan terhubung ke output port mikrokontroler sesuai dengan skema inklusi dalam perangkat debug-in. Dewan dengan indikator yang terhubung ditunjukkan pada Gambar. lima.

Metode yang dijelaskan untuk menghubungkan LCD relatif kompleks, tetapi nyaman karena indikator jenis yang berbedaMemiliki kokoovka yang sama, Anda dapat dengan cepat berubah, tanpa mengambil risiko membingungkan urutan koneksi kesimpulan mereka dengan port mikrokontroler. R23 Rapid Resistor berfungsi sebagai regulator kontras.

Perangkat pensinyalan tanpa suara B1 adalah emitor elektromagnetik dari resistensi 80 ohm, ditemukan pada motherboard komputer. Diode VD1 menekan emisi tegangan induksi diri yang timbul pada pensinyalan alarm ketika ditenagai oleh tegangan pulsa. Kurangi tahan resistor R22 untuk meningkatkan volume suara, seharusnya tidak. Ini akan mengarah pada output mikrokontroler.

Dewan Kecil. Jangan lupa pada akhir prosedur program generasi sinyal suara Kirimkan pengaturan perintah level rendah Pada output mikrokontroler PD7. Jika level di sini tinggi, arus melalui emitor B1 akan terus mengalir dan menjeda antara sinyal, yang akan mengarah pada peningkatan umum dalam konsumsi energi oleh mikrokontroler.

Skema antarmuka eksternal. Dewan debug ditunjukkan pada Gambar. 6. Ke konektor XS1, Anda dapat terhubung papan ketik komputer atau "mouse", dan hubungkan konektor XS2 dengan port com komputer. Microcircuit DA1 termasuk sesuai dengan skema khas, mengoordinasikan kadar sinyal RS-232 dan mikrokontroler. Jumper S8-S10 adalah bagian tipis konduktor pencetakan, yang dapat dipotong jika perlu menggunakan informasi tidak hanya, tetapi juga sinyal kontrol dari antarmuka RS-232 di perangkat debug.
L1-L5 Chokes menekan interferensi frekuensi tinggi. Ini adalah tabung ferit kecil pada kabel. Ternyata dengan mudah ditemukan di papan komputer.

Untuk mengunggah kode program mikrokontroler yang diinstal pada papan fastavr, konektor XP6 terhubung ke programmer. Pada saat bekerja dengannya, jumper S1 (lihat Gambar 1) direkomendasikan untuk dihapus dengan mematikan rantai instalasi awal mikrokontroler di papan tulis. Jika programmer memiliki sumber daya sendiri, perlu untuk menghapus Jumper S11. Ketika diinstal, programmer ditenagai oleh Debug Board.

Saya menggunakan seorang programmer yang mirip dengan STK-200. Diagram dan gambar papan sirkuit dapat ditemukan pada Gambar. 8 dan 9 V. Dalam programmer ini, hanya satu chip KR1564AP5 (74HC244AN) yang terhubung ke port LPT komputer. Instal resonator kuarsa dalam programmer tidak perlu, itu ada di papan debug. Saat bekerja dengan program programmer dan ponyprog ini di komputer dengan core2duo + prosesor, chipset dan operasi 1965 sistem Windows. XP SP3 tidak ada masalah muncul.

Sirkuit koleksi dewan debug ditunjukkan pada Gambar. 7. Hubungi 3 konektor XP7 dari sumber luar Anda dapat mengirimkan tegangan yang stabil +5 V. JUMPER S12, S13 harus dihapus. Jika ada sumber tegangan konstan dari 9 ... 16 V, output positifnya terhubung ke kontak 2 konektor yang sama dan instal jumper S12, S13. Dalam hal ini, tegangan eksternal stabil tidak diperlukan, diperoleh menggunakan stabilizer integral DA2.

Ketika LED HG1 tidak digunakan dan perangkat eksternal tidak terhubung ke papan, suhu stabilizer DA2 kecil. Jika, meskipun ada kehadiran heat sink, stabilizer sangat dipanaskan, disarankan untuk beralih ke daya dari sumber tegangan kuat eksternal 5 V. Pada keberadaan sinyal tegangan pasokan yang dipimpin HL5.

Dioda VD2 dan VD3 melindungi dari polaritas catu daya yang salah. Throtes (tabung ferit) L6 dan L7 menekan gangguan frekuensi tinggi. CT12-X17 (+5 V) dan HT18-HT22 (Total) dan HT18-HT22 (Total) dan HT18-HT22 (Total) dapat digunakan di berbagai perangkat eksternal. Selain itu, kontak HT18-HT22 dengan mudah menghubungkan kawat instrumen ukur secara keseluruhan.

Gambar papan sirkuit digambarkan pada Gambar. 8. Ini adalah sepihak dari foil fibercker dengan ketebalan 1,5 mm. Perhatikan bahwa dua garis bergeser jumper dari kawat terisolasi diinstal dari konduktor cetak. Sisanya terbuat dari kawat tanpa isolasi dan terletak di sisi bagian. Untuk chip DA1, DD1, DD2, DS1, dan indikator LED HG1, panel diinstal pada papan, yang memungkinkan Anda untuk dengan cepat mengganti elemen-elemen ini jika perlu. Dengan tidak adanya tabung ferit, alih-alih tersedak L1-L7, Anda dapat menginstal jumper.

Di sebelah konektor XS1, ada ruang pendaratan untuk konektor yang sama yang ditunjukkan oleh XSV. Meskipun kesimpulannya tidak terhubung di mana saja, memungkinkan Anda untuk dengan mudah menginstal soket MDN-6F ganda dengan motherboard komputer. Konektor XS2 - Soket DB-9F.

Chr1-HR4 Pin, HT1 -HT22 Pins dan ditujukan untuk instalasi Jumper S1 - S7, S11-S13 terbuat dari konektor dua baris dari seri PLD atau seri PLS baris tunggal. Untuk mendapatkan jumlah kontak yang diinginkan, mereka dipisahkan dari segmen panjang atau segmen yang sesuai dengan kontak yang hilang ditambahkan.

Harap dicatat bahwa ada bantalan kontak gratis di sebelah situs kontak untuk pin PT4-HT11. Ini memungkinkan Anda untuk menginstal blok pin dua baris di sini, tidak dapat "melonggarkan" dengan frekuensi rekomendasi. Tentang konektor KHR5 (IDC-34MS) sebelumnya dikatakan. Konektor XP6 (untuk programmer) adalah dekade dari seri yang sama (IDC-10ms). Konektor daya XP7 tiga pin dihapus dari motherboard, di mana digunakan untuk menghubungkan kipas. Ini melepas masalah mencari respons konektor, yang dirancang untuk terhubung ke papan catu daya.

Di bagian bawah (sesuai dengan gambar) dari papan ada bidang persegi panjang yang diisi dengan situs kontak - cadangan untuk menempatkan semua jenis elemen tambahan yang mungkin diperlukan selama debugging. Pada pembayaran yang dibuat oleh saya, itu dipasang di sini, misalnya, resistor variabel dengan denominasi 22 com. Itu diisi dengan tegangan +5 V, dan disesuaikan yang dapat disesuaikan dari mesin digunakan untuk memeriksa mikrokontroler ADC.

Antarmuka RS-232 sangat nyaman untuk digunakan ketika debugging, menambahkan debug-in program ke modul yang mengirimkan informasi yang diperlukan melalui mikrokontroler USART. Berlari di komputer, dengan com-port yang menghubungkan konektor XS2 papan debug, program terminal, Anda dapat memonitor pesan yang diterima.


Saya menggunakan program terminal v1.9b, yang dapat ditemukan di internet dengan apa pun mesin pencari. Jendela program ini dengan contoh-contoh pesan yang diterima dari perangkat yang dibebankan dan ditransmisikan ke dalam gambar. 9. Untuk tampilan normal teks Rusia, Anda harus mengklik tombol "Set Font", pilih font - Arial di jendela yang terbuka - Ukuran biasanya 8, serangkaian simbol adalah Cyrillic.

File PCB dalam format sprint tata letak 5.0 dan contoh program yang menunjukkan pekerjaan yang tersedia di papan node:

LITERATUR
1 Baranov V. Pemulihan konfigurasi mikrokontroler AVR. - radio. 2009, № 11, hlm. 26-29.

S. Borisov, Region Knotovaya Tula.
RADIO NOS. 8-9 2010.

Ini sering kali diperlukan untuk menggunakan kontrol perangkat apa pun (apakah bola lampu pijar, mesin, tan atau LED sederhana) adalah melalui PWM.

Mungkin jelaskan apa itu dan dalam apa pesona kontrol shim tidak perlu, sudah ada banyak informasi di Internet, dan tidak mungkin untuk menipu topik ini dengan lebih baik. Oleh karena itu, kami akan segera beralih ke bisnis, yaitu, kami akan memulai PWM pada sarana ATTiny2313 dari Bascom-AVR.

PWM B. aVR mikrokontroler Bekerja pada timer penghitung, di Tiny2313 MK dari timer yang hanya 2: 8-bit timer0 mengingat waktu hingga 255 dan 16-bit Timer1 yang mampu menghitung ke 65535. Setiap timer mengontrol dua saluran PWM, sehingga semua perangkat keras dapat melakukannya Diimplementasikan sebanyak 4 saluran shim.

Informasi tentang jumlah saluran PWM dan pelepasan setiap saluran dapat dicilerkan pada halaman datashet ke mikrokontroler.

Dengan demikian, di atas kapal ATTINY2313 ada dua saluran WIM 8-bit yang bekerja dari timer0 dan dua saluran lagi yang menjalankan timer1 timer memiliki bit yang dapat diprogram dari 8 hingga 10 bit. Di Datashet, kaki ini ditandatangani sebagai berikut:

Untuk mengkonfigurasi Timer1 Timer untuk menghasilkan PWM di Bascom, cukup untuk menuliskan baris berikut:

Config timer1 \u003d pwm, pwm \u003d 8, bandingkan pwm \u003d Clear up, bandingkan b pwm \u003d jernih, prescale \u003d 64

PWM \u003d 8 Memilih bit PWM, untuk timer1 seperti yang ditulis di atas mungkin juga PWM \u003d 9 atau PWM \u003d 10.

Bandingkan A / B PWM \u003d Bersihkan / Hapus di sini Anda mengkonfigurasi status aktif untuk setiap saluran PWM (A dan B).

Prescale \u003d 64 - string konfigurasi timer yang sudah akrab yang bertanggung jawab untuk pra-membagi frekuensi overflow timer di kasus ini Pembagi akan mengatur frekuensi PWM. Kami dapat mengubah pada prescale kebijaksanaan Anda \u003d 1 | 8 | 64 | 256 | 1024


Siklus tugas dari sinyal yang dihasilkan ditentukan oleh nilai yang kami tulis ke register perbandingan OCR1A dan OCR1B (kami memiliki dua saluran, kami memiliki dua pada satu timer, di sini satu register pada saluran A dan B). Dengan nilai-nilai yang terletak pada register ini secara konstan membandingkan nilai register penghitungan (disalin ke timer), ketika mereka bertepatan, MK Foot beralih ke status aktif, dan penghitungan register terus membaca nilai maksimum. Setelah diperiksa maksimum, timer mulai diperhitungkan membalikkan arah, dan mencapai hingga nilai penghitungan register dan register perbandingan akan kembali bertepatan lagi, itu akan kembali ke kaki mikrokontroler (lihat gambar di bawah).



Bagi kami, register perbandingan OCR1A dan OCR1B hanya variabel, di mana kami dapat menaruh nilai. Misalnya, jadi:


Ocr1a. = 100
OCR1B \u003d 150.


Dalam perjamuan untuk kenyamanan, nama lain dari register ini juga disediakan: PWM1A dan PWM1B, sehingga baris sebelumnya akan setara dengan sebagai berikut:


Pwm1a. = 100
Pwm1b \u003d 150.

Sekarang kita akan memahami bagaimana konfigurasi status aktif yang jelas / jelas mempengaruhi apa yang terjadi pada output PWM tergantung pada register perbandingan.

Ketika output dikonfigurasi karena membandingkan status output aktif PWM \u003d Hapus tingkat tinggi dan dengan peningkatan nilai register OCR (PWM), tegangan proporsional pada kaki ini akan tumbuh. Dengan akurasi, sebaliknya, semuanya akan terjadi jika output dikonfigurasi sebagai Bandingkan PWM \u003d Clear Up. Semua ini diilustrasikan dengan baik pada gambar di bawah ini.



Nilai-nilai yang dapat dilakukan oleh register perbandingan ini pada bagaimana saluran shim dikondari. Di PWM \u003d 8 (PWM 8-bit) dimungkinkan dari 0 hingga 255; di PWM \u003d 9 dari 0 hingga 511; Dengan PWM \u003d 10 dari 0 hingga 1023. Di sini saya pikir semuanya jelas.


Sekarang contoh kecil: Hubungkan LED ke mikrokontroler seperti yang ditunjukkan pada diagram (daya MK dalam diagram tidak ditentukan)


Dan menulis program kecil:


$ Crystal \u003d 4000000

Config timer1 \u003d pwm, pwm \u003d 9, bandingkan pwm \u003d jernih, bandingkan b pwm \u003d jelas, prescale \u003d 8
CONFIG PORTB.3 \u003d OUTPUT
Config portb.4 \u003d output

Incr PWM1A. "Dengan lancar meningkatkan Regalitas Perbandingan OCR1A
Incr PWM1B. "Tingkatkan nilai register perbandingan OCR1B

Tunggu 20. "Tambahkan keterlambatan

Loop.

Akhir.

Setelah dikompilasi dan mem-flash program ke dalam pengontrol, salah satu LED (D1) akan dengan lancar mengetik kecerahan, dan yang lainnya (D2) berjalan lancar


Jika Anda sekarang menyodok osiloskop pada hasil PWM, kita dapat melihat gambar seperti itu dengan unit pulsa yang berubah (sinyal biru pada OS1A, merah pada OS1V):


Konfigurasi Timer0 Timer. Untuk menghasilkan PWM, hampir sama, kecuali bahwa Timer0 adalah timer 8-bit, dan oleh karena itu PWM yang dihasilkan oleh timer ini akan selalu memiliki sedikit 8. Oleh karena itu, mengkonfigurasi timer ini, bit PWM tidak menentukan:

Config timer0 \u003d pwm, bandingkan pwm \u003d Clear up, bandingkan b pwm \u003d hapus ke bawah, prescale \u003d 64



Sekarang contoh yang serupa dengan LED, tetapi sekarang PWM akan menghasilkan dengan timer0:


$ REGFILE \u003d "ATTINY2313.DAT"
$ Crystal \u003d 4000000

Config timer0 \u003d pwm, bandingkan pwm \u003d hapus ke bawah, bandingkan b pwm \u003d jelas, prescale \u003d 8
Config portb.2 \u003d output
Config portd.5 \u003d output

Incr PWM0A " meningkatkan nilai register OCR0A
Incr PWM0B " tambah nilai register OCR0B

Tunggu 20. "Tambahkan keterlambatan

Loop.

Akhir.

Hubungkan LED ke output PWM Timer0, seperti yang ditunjukkan pada diagram:

Semuanya serupa: LED pertama (D1) akan dengan lancar mendapatkan kecerahan, dan yang kedua (D2) akan dengan lancar keluar.


Penghitungan frekuensi generasi shim

Jika Anda ingin mengetahui frekuensi pembangkit perlengkapan, maka lakukan itu tidak sulit. Lihatlah formula di bawah ini:

Frekuensi pwm \u003d (frekuensi kuarsa / offset) / (menghitung register ukuran * 2)

Misalnya, kami akan menghitung beberapa nilai:

1. Frekuensi kuarsa \u003d 4000000 Hz, Offset \u003d 64, PWM bit 10 bit \u003d\u003e penghitungan register ukuran \u003d 1024

Frekuensi PWM \u003d (4000000/64) / (1024 * 2) \u003d 122 Hz

2. Frekuensi Quartz \u003d 8000000 Hz, Offset \u003d 8, PWM bit 9 bits \u003d\u003e penghitungan register Ukuran \u003d 512

Frekuensi PWM \u003d (8000000/8) / (512 * 2) \u003d 976,56 Hz

3. Frekuensi kuarsa 16000000 Hz, Offset \u003d 1, PWM bit 8 bits \u003d\u003e menghitung register ukuran \u003d 256

Frekuensi PWM \u003d (16000000/1) / (256 * 2) \u003d 31250 Hz

Papan Debug Universal FastAVR untuk pemula dalam pemrograman ATMEL MK didasarkan pada analisis tentang selusin desain serupa. Biaya adalah kompromi yang masuk akal antara fungsionalitas redundan sebagian besar dari mereka atau fitur yang terlalu primitif dari orang lain. Memiliki beberapa pengalaman dalam bekerja dengan sistem mikroprosesor yang berbeda, di bawah ini saya akan mengomentari pikiran saya, - sebagai satu atau simpul papan lainnya dikandung. Setuju dengan mereka atau tidak - bisnis Anda, tetapi mungkin sebagian mereka akan berguna untuk menguasai AVR di masa depan ...

Desain desain didasarkan pada pengembangan dan serangan mikroelektronika (http://www.mikroe.com/ru/). Tetapi biaya easyavr (dan tidak hanya) mengandung terlalu banyak komponen yang tertarik dengan variestic dan kualitas pendatang baru dalam peralatan mikroprosesor, pada kenyataannya setengah dari mereka menjadi tidak perlu setelah kompilasi yang berhasil dari 5-6 contoh program dan mendapatkan pengalaman. Apakah Anda berpikir mengapa Anda membutuhkan banyak LED dan tombol yang terhubung ke setiap port? Semua ini benar saat Anda tidak belajar cara mengontrol port port dan indikator melempar, dan ini akan terjadi dengan sangat cepat ;-) Ada 4 LED pada kasus ini di papan tulis, dan saklar sudah cukup ...

Jadi, kemungkinan Dewan Debug:

  • set Pinggiran Utama untuk ATMEGA Dukungan: Konverter RS-232, BIPER, SPI EEPROM, LCD dan indikator LED, Generator Clock Built-in + Quartz, Keyboard PS-2, penguji logika, penguji ADC;
  • kemampuan untuk pengulangan di rumah, papan sirkuit tercetak satu sisi dioptimalkan untuk teknologi laser-besi, ukuran kecil;
  • menerapkan semua komponen hanya dalam penutup celup, memudahkan untuk menggantikannya dalam proses percobaan atau program prosesor itu sendiri untuk skema lain (misalnya, untuk JTAG);
  • kecukupan fungsional fungsional untuk membuat prototipe sederhana perangkat dan men-debug mereka;
  • konektor SPI SPI standar dengan catu daya selektif ke programmer, kemampuan koneksi eksternal Jtag;
  • kemampuan untuk mengaktifkan papan dalam mode es JTAG dengan recoming sederhana;
  • kemungkinan pergantian independen dari pinggiran dalam kombinasi apa pun karena teknologi linier lokasi semua port MK;
  • kemungkinan koneksi mudah dari setiap periferal eksternal dan penggunaan eksternal per 100% sumber daya atmega pada DIP-40, semua port dibuang, apalagi - semua periferal internal dewan memungkinkan Anda untuk menggunakannya untuk perangkat eksternal (misalnya, jam indikator generator atau LED;

Semua ini tidak memerlukan penyempurnaan biaya atau penyolderan. Begitu Pada tahap awal pengembangan kemungkinan MK Fastavr sudah cukup. Seseorang yang ingin melanjutkan, setelah penciptaan perangkat lunaknya sendiri, dapat memutuskan secara mandiri bahwa ia perlu secara khusus dan melakukan prototipe desain dengan serangkaian periferal sendiri. Sekali lagi, tanda terima diciptakan untuk memulai studi MK AVR, tidak ada yang dianiaya. Penampilan dokumentasi itu sendiri dikaitkan dengan bunga yang dikembangkan oleh banyak pemula tipe ini Pengendali atau masih berpikir ke mana harus memulai. Dan Anda harus mulai secara alami dengan biaya tes ;-)

Namun, pengontrol MK AVR-mandiri, prosesor bukan seluruh sistem. "Cubes" melayani atau dikendalikan oleh mereka, sendiri dapat dipandang sebagai blok terpisah dari struktur masa depan. Dengan menggabungkannya di papan utama, Anda semua dapat bersama dengan menggabungkan hasil yang diperlukan. Pada awalnya, biaya dikandung atas dasar ATmega8, karena Dia murah dan memiliki hampir semua kemampuan AVR. Namun, melayang-layang saran, saya memutuskan untuk tidak menyimpan dan meletakkan mikrokontroler mikrokontroler-atmega16 sebagai dapat diakses di perumahan dan 32. Codoolevka dari kedua MK identik. Biaya solusi semacam itu dengan seratus kali lipat dibayar oleh jumlah port I / O yang dapat dihubungkan setidaknya untuk waktu debug. Kompatibilitas dari bottom-up untuk semua generasi AVR memungkinkan Anda untuk menulis dan men-debug program menggunakan chip yang lebih kuat, dan kemudian membuat kompilasi untuk kristal target. Sumber daya yang memadai dari flash memungkinkan untuk tidak "mengisi" pada batasan dalam kemungkinan pemrograman ulang mega, terutama karena dimungkinkan untuk bekerja cukup, kirim untuk menghidupkan MK ke desain kerja, menjahitnya untuk terakhir kalinya (JTAG ICE adalah penantang pertama)

Untuk pembuatan dewan, itu akan memakan sedikit komputer yang sesuai "sampah", yang cukup di ruang penyimpanan elektronik apa pun. Sebagian besar komponen diterapkan dari lama atau ditolak motherboards. IBM PC atau teknologi dekat-komputer, baru-baru ini besi semacam ini semakin pembongkaran dan dibuang tanpa digunakan. Karena Dengan SMD hal-hal kecil, praktis tidak ada yang bisa melakukan apa-apa (memilah masalahnya, dan waktu ...), saya menarik perangkat tersebut sepenuhnya atau pengering rambut konstruksi atau kompor listrik.

Deskripsi utama fastavr di bawah ini adalah pemblokiran:

Makanan. Stabilizer bawaan pada 78 (m) 05 memungkinkan Anda untuk membuka biaya dari adaptor luas 9-12V yang diambil dari peralatan lain yang biasanya idle. Dalam inklusi yang biasa ini, itu sudah cukup (MEG-16/32 + LCD + RS232 + TXO), ketika menggunakan LED 7 segmen yang khas, atau periphery eksternal yang sangat rakus (programmer kompleks), stabilizer sudah sangat panas. Menghubungkan tegangan stabil eksternal + 5V dimungkinkan melalui PIN-3 X1 (konektor dari pendingin matthew) diterapkan). Sebelumnya, Anda harus mematikan jumper JP1-JP2 dari grup VCC_SEL. X1 dari jenis ini dipilih karena beberapa alasan, yang utama hampir selalu dapat membuat adaptor untuk menyalakan papan dari adaptor yang berbeda yang tersedia atau BP laboratorium. Passover ferrite chokes (balun) FB1, FB2 filter interferensi pulsa dan tip RF. Pada dioda VD1, VD2 dilakukan dari "pengawasan". Di beberapa tempat, papan diinstal VCC_EXT dan GND_EXT jumper. Melalui mereka, itu cukup sederhana ketika menghubungkan pinggiran untuk menghapus tegangan suplai dan "Bumi" secara keseluruhan.

Memori eksternal diimplementasikan pada standar I2C EEPROM 24CXXX. Meskipun AVR itu sendiri berisi memori non-volatile sendiri, tetapi dalam banyak desain, chip eksternal mungkin lebih disukai karena volume sumber daya. Sirkuit inklusi adalah standar, alamat kristal 0x01.

Indikator Status Port Linear LED HL2-HL5 dibuat pada 4 LED diskrit. Untuk dimulainya eksperimen dengan AVR, ini cukup, lebih dari jumlah mereka, saya menganggapnya tidak dibenarkan dan agak dihiasi. LED dimasukkan saat menulis ke log port. "1", sebagainya Status port ditampilkan tanpa inversi sinyal, yang nyaman dan visual.

Menghubungkan ke papan indikator LCD dibuat melalui 2 konektor, dimungkinkan untuk menggunakan mode 8 bit dan 4-bit. Yang pertama adalah drive 34-pin X2 (dari 3,5 ") memungkinkan Anda untuk menggunakan loop isi ulang standar dari drive panjang yang diinginkan, masing-masing, pada indikator itu sendiri, lebih baik menyembunyikan garis jumper pin (pin- blok), memungkinkan Anda untuk dengan cepat mengubah indikator yang berbeda tanpa rasa takut mengubah kesimpulan. Koneksi ke port abra dilakukan melalui pin-blok x10, yang selain mode koneksi LCD, Anda dapat secara fleksibel memilih kesimpulan dari Mk. Desain ini memungkinkan Anda untuk dengan mudah beradaptasi dengan port gratis controller, bahkan "panggil" mereka di salah satu port grup yang berbeda, yang diperlukan ketika dikonfigurasi ke prototipe debug khusus atau papan sirkuit cetak yang baru dibangun, ternyata lebih nyaman dalam kabel.


Dalam banyak kasus, penggunaan indikator LCD mungkin tidak dibenarkan berdasarkan harga, dimensi, atau keandalan. Misalnya, secara paling sederhana pengisi daya Atau timer dapat bekerja dengan baik dan indikator LED 2-bit. Dengan adanya indikator ganda 7-segmen dari jenis umum dengan tanda 14mm, keduanya dengan anoda umum dan katoda umum (ditulis register kas dan blok sistem 486 komputer). Saya harus menerapkan tombol 2-tak pada VT1-VT4 untuk menghubungkan berbagai jenis indikator dan, dengan demikian, indikator itu sendiri panel sehingga di masa depan itu tidak merusak sirkuit.

Semua periferal koneksi ke port ATmega, seperti yang disebutkan sebelumnya, dibuat melalui pin x3-x6 linear. Terutama pada biaya utang, saya mengamati penggunaan konektor IDC-10 (2x5). Satu-satunya keuntungan dalam hal ini adalah kehadiran "kunci", agar tidak mengambil bulu di tempat-tempat ketika terhubung. Oleh karena itu, keunggulan metode semacam itu akan berakhir dan kekurangan dimulai - bahkan tidak nyaman secara visual untuk bekerja dengan port 8 digit, karena Kesimpulan tidak terletak berturut-turut, tidak mungkin kecuali loop untuk menghubungkan pinggiran bawaan. Penggunaan blok pin memberi langsung hasil yang berlawanan, kecuali bahwa, melalui jumper-jumper standar, mudah untuk mengontrol sinyal apa pun dari atas, misalnya probe logis Atau osiloskop, Anda tidak perlu menyodok dan menghitung ketakutan akan pelabuhan pelabuhan secara kebetulan "untuk memblokir" kesimpulan. Tambahkan di sini maksimum terendah dan reusability dari koneksi ini, karena jauh lebih mudah untuk mengganti loop atau jumper daripada konektor yang bertanggung jawab atas biaya. Selain itu, sekarang dijual bahkan dalam pedalaman kami, Anda dapat menemukan bagian respons dari konektor (atau penggunaan dari unit sistem lama), yang membuatnya mudah dan cepat menggabungkan konektor (Gbr.):


Untuk suara, bipper umum dengan resistansi sekitar 80 ohm dari Mattlat diterapkan. Sinyalnya tidak terlalu keras, tetapi cukup untuk mengontrol (R23 dan lebih dipilih pada batas). Kunci terpisah saya tidak menempatkan siapa pun yang ingin merekonstruksi di tempat-tempat untuk Maketing yang ditunjuk sebagai temp. Saran kecil - bekerja dengan suara, jangan lupa pada akhir prosedur untuk menghasilkan sinyal untuk memasukkan perintah ke dalam log. "0" Output PD7, jika tidak setelah menghentikan generasi mungkin ada "1" dan saat ini Pembicara akan terus pergi bahwa tidak ada yang baik meskipun untuk pertimbangan total konsumsi AVR-A.

Pada SW4 SW4 4-bit, sinyal logis untuk port dirakit. Di sini, situasi dengan jumlahnya mirip dengan LED LED. Karena Masukan Avrov masing-masing memiliki resistensi pool-up plug-in internal, "suspender" untuk memasok tidak perlu makan. Resistor R18-R21 berisi perlindungan terhadap kesalahan inklusi tidak disengaja dari port MK pada output. Dalam audit dewan 1.03 ke atas, sakelar dip dapat diganti oleh jumper. Saya baru-baru ini perlu dengan cepat membuat dari papan es JTAG. Sehubungan dengan Rev 1.4, Matriks Resistor RN1 diperkenalkan, yang memungkinkan perangkat keras membentuk kuliah "1" pada beberapa input controller. Jika Anda tidak membutuhkannya - Anda tidak dapat menginstal RN1.

TACT pada MK dipilih oleh CL_SEL PIN-Group dan dapat dilakukan dari resonator kuarsa eksternal Z1 (hanya jp37, jp38 diinstal), generator kuarsa integral G1 (16 MHz), atau dari pembagi ke: 2 dan: 4. Begitu Selain kuarsa, Anda dapat mengetahui prosesor dengan frekuensi 16, 8, 4 MHz. Anda dapat dengan mudah memperkirakan kecepatan program yang dibebankan, atau memperoleh frekuensi clock standar dengan spesial tertutup. kuarsa. Pada prinsipnya, dengan tidak adanya TXO pada frekuensi ini Anda dapat menerapkan generator lain ke 16 MHz. Generator juga dapat berguna bagi Anda ketika "Mengangkat" MK karena mikrokontroler Fioma yang salah, dalam hal ini frekuensi clock tidak memainkan peran.

Konverter tingkat antarmuka Serial RS-232 untuk UART adalah atribut konstan dari sebagian besar sistem pada AVR. Di sini Anda tidak perlu "menemukan kembali sepeda", standar MAX232 sudah cukup. Hanya sinyal RX-TX yang terlibat, yang cukup untuk sebagian besar aplikasi. Anda dapat secara praktis menghubungkan CTS-RTS untuk kontrol aliran perangkat keras tanpa mengolah papan, kabel fleksibel pada JP31-JP32 dari trek. Dalam skema, MAXIM MAX232, TI MAX232 dan SIPEX SP3232 - menempatkan rekan-rekan yang diperiksa dalam MAXIM MAX232, TI MAX232.

Keyboard matriks luar dapat dilakukan pada papan yang terpisah dan terhubung ke mc plum (saya memutuskan untuk mendaftar dari manipulator mouse, sebagai aturan 2 mikrikka selalu ada baik). Pada dewan debug, konektor PS-2 ganda diinstal. Keypad PC IBM standar terhubung tanpa perbaikan perangkat keras, secara alami dengan dukungan perangkat lunak yang sesuai dari AVR. Konektor kedua gratis, gunakan sesuai kebijaksanaan Anda. Sebagai aturan, keyboard adalah hal yang sangat spesifik, tergantung pada hutang proteotype, jadi setelah beberapa ponday saya memutuskan untuk tidak meletakkan tombol yang paling sederhana di papan tulis. Saya akan meletakkan papan Anda setelah kabel dan tes mereka.

Indikator HL7 ditetapkan untuk eksperimen dengan pengontrol PWM perangkat keras bawaan.

Konektor untuk pemrograman berurutan intrahemny X7 dibuat sesuai dengan STK-200. Daya pada programmer dapat memilih secara selektif melalui JP43. Dalam kasus saya, programmer paling sederhana dari PonyProg pada buffer 74Sal (LS, F) 244 digunakan dengan menghubungkan melalui LPT. Semuanya diperiksa pada Core2duo + i965chipset yang dikelola oleh XP SP2, tidak ada masalah muncul. Programmer ditenagai melalui konektor debugboard dan nyaman dalam operasi, karena Buffer dalam mode normal "pergi" ke z-status dan benar-benar tidak mengganggu fastavr. Menghubungkan adaptor JTAG untuk pemrograman intrahemum dan debugging dalam periode waktu nyata juga dimungkinkan tanpa penyempurnaan papan melalui port pin linear yang sesuai dari port C.

Masih perlu menyebutkan beberapa elemen yang diperlukan:

Rantai reset eksternal, yang AVR memiliki cukup sederhana. Ini dapat dimatikan melalui JP42, meskipun eksploitasi dengan programmer tidak mengganggu programmer. Input reset dapat diprogram ulang melalui fusi sebagai port i / o standar dan digunakan untuk pinggiran, tetapi harus diingat bahwa dalam hal ini tidak mungkin lagi untuk memprogram ulang kristal melalui X7.

Resistor variabel R27 yang termasuk dalam potensiometer adalah penilaian tegangan untuk eksperimen dengan ADC bawaan, output dari TI dapat disajikan pada salah satu input analog MK. Catatan kecil - Harap perhatikan jika Anda tidak menginstal resistor ini dengan alasan apa pun, pastikan untuk jumper (pada Gambar. Menunjuk) untuk bagian normal dari total ban GND!

Sedikit tentang Samoa pCB. dan desain. Seperti yang sudah dicatat, papan adalah satu sisi. Saya telah diuji 2 salinan yang dibuat oleh teknologi laser-iron (satu saat mencetak pada kertas foto dari persimpangan, yang lain berdasarkan kunci sendiri), seterusnya Jika diinginkan, semuanya harus diperoleh ;-) Jika Anda memikirkan foto, hebat! Aturan jumper bercerai dengan mempertimbangkan "zona terlarang" dan penggunaan loop 16-pin standar (bilah dari game-port) bahkan ketika menghubungkan satu sangat dekat. Dengan tidak adanya choke ferit (saya mendaftar dari monitor matpal atau burner lama) Anda dapat dengan aman meletakkan jumper. Saya merekomendasikan segera di bawah semua chip untuk menempatkan panel agar tidak merokok biaya. Jangan lupa 2 jumper dengan tombol ke indikator HL6.

Tetapi sepertinya antarmuka untuk memeriksa logika TTL / CMOS, sejauh mungkin, saya akan mencoba untuk mengetahui apa hasilnya.

Secara umum, timer memiliki daftar perbandingan OCR **dan ketika nilai di timer bertepatan dengan nilai register perbandingan OCR **2 hal dapat terjadi:

  • Mengganggu
  • Mengubah keadaan output perbandingan eksternal OC **

Sekarang kita dapat menyesuaikan Shim.saat konter mengambil nilai OCR **tegangan pada kaki yang dipilih OC **ubah dari 5 ke 0. Ketika timer lepas landas sampai akhir dan mulai menghitung terlebih dahulu mengubah tegangan dari 0 menjadi 5, kita akan memiliki pulsa persegi panjang pada output.

Ada 3 mode operasiShim.

Sts. (reset saat kebetulan) - ini bisa disebut Chim.sinyal pemodelan frekuensi-pulsed ketika timer mengambil nilai OCR **itu diatur ulang dan mengubah nilainya OC **sebaliknya. Jadi, kesejahteraan Shim.selalu sama.

Ini digunakan ketika Anda perlu menghitung periode yang tepat, atau menghasilkan interupsi pada waktu tertentu.

Pwm cepat. (PWM cepat) - penghitung percaya dari 0 hingga 255, setelah itu diatur ulang ke 0.

Ketika nilai timer bertepatan dengan OCR **output yang sesuai diatur ulang ke 0, ketika nol diatur 1.

Paling sering digunakan sebagai biasa Shim.

Fase PWM yang benar. (PWM dengan fase akurat) - Dalam mode ini, penghitung dianggap dari 0 hingga 255, dan kemudian mempertimbangkannya di arah yang berlawanan ke nol. Pada kebetulan pertama dengan OCR **output diatur ulang ke 0, dengan 2 pertandingan (saat penghitung kembali), put 1.

Gunakan agar tidak ditembak jatuh ke fase ketika tugas berubah.



Jika kita ingin bekerja dengan kesimpulan OC1A.kami menempatkan bit B. Com1a1 com1a0.
Secara umum, "/" berarti atau. Tcnt1.= Ocr1a.untuk Shim.pada hasilnya OC1A.

Mode operasi Timer / Counter - Mode Timer / Counter.

Puncak.- Nilai TCNT1 di mana nilai output bergeser OC **.

Bendera TOV1 diatur - Pada nilai apa sedikit register GIFR diinstal

Pilih dari tabel terakhir mode yang kita butuhkan, jangan lihat Puncak.. Dari 2 tabel, pilih salah satu opsi ke-2. Tetap hanya untuk menempatkan bit yang diperlukan dalam register.

#Define f_cpu 8000000l #include #Include. Int utama () (ddrd \u003d 0xff; ocr1a \u003d 0xc0; // bandingkan dengan nilai ini OCR1B \u003d 0x40; // mengatur PWM dan timer TCCR1A | \u003d (1<CS10.menempatkan 1, ia percaya dengan frekuensi MK tentang cara mengkonfigurasi frekuensi timer


Mari kita beralih ke studi tentang timer bawaan.
Belajar menyela dan terutama timerdalam mikrokontroler, ia menghadirkan kesulitan tertentu karena multifungsi mereka. Hari ini kami akan mencoba mencari tahu syarat dan nama.

DI aVR mikrokontroler Mungkin dari satu hingga 4 timer, delapan digit atau heksadesimen.
Penghitung waktu yang disederhanakan ditunjukkan oleh huruf T, dan jumlah dari nol menjadi tiga. Biasanya, bahkan T0 dan T2 delapan1, dan T1 dan T3 aneh dengan enam belas digit. Di bawah pemrograman, versi yang disederhanakan hanya digunakan di komentar, dan dalam program nama lengkap timer diresepkan - register TCNT. Di bawah ini adalah penunjukan timer:

Timer

T0, T2. - (tcnt0, tcnt2) counter delapan-bit (bahkan)
Tcntn.- Daftar Akuntansi 8 dari penghitung debit
Dimana; N-Number Counter

T1, T3. - (tcnt1n dan tcnt1l, tcnt3h dan tcnt3l) enam belas digit counter (ganjil)
Tcntny. - Akun Registrasi 16 dari penghitung debit
Dimana; N-Number Counter
Y-Senior (h) atau junior (l)

T1 terdiri dari dua register delapan bit Tcnt1n dan tcnt1l., tetapi
T3 dari dua register Tcnt3h dan tcnt3l.. Surat H. menunjukkan debit penatua, dan L. Jr.

Sebagai timeradalah register, maka Anda dapat menghubungi mereka kapan saja, membaca, menulis, mengatur ulang, dan mengubah nilainya.
Menyatakan aturan spesifik untuk merekam dan membaca timer TCNT1N dan TCNT1L.

1. Program perekaman dan membaca data timer harus atom, I.E. Sebelum membaca atau menulis, kami melarang interupsi, dan pada akhir proses kembali memungkinkan.
2. Saat merekam, byte yang lebih lama H dan kemudian L. yang lebih muda pertama kali direkam.
3. Saat membaca, byte yang lebih muda Lalu Senior H.
Sebagai contoh:
Rekam data ke penghitungan register.
Cli; Melarang interupsi out tcnt1h, r16; Rekaman byte out TCNT1L, R17; Merekam byte sei yang lebih muda; Izinkan interupsi

Membaca data dari penghitungan register
Cli; Melarang interupsi di TCNT1L, R16; Membaca byte yang lebih muda di TCNT1H, R17; Membaca senior sei byte; Izinkan interupsi

Mengapa aturan seperti itu? Dan segalanya sehingga data tidak terdistorsi selama waktu yang akan pergi ke proses membaca dari setiap register.
Jika Anda menggunakan register 8-bit bacaan langsung TCNT1H dan TCNT1L, maka Anda tidak dapat memastikan bahwa register ini membaca secara bersamaan. Situasi berikut dapat terjadi: meter berisi nilai $ 01FF, Anda menganggap TCNT1H (berisi nilai 01 ke beberapa variabel). Selama waktu ini, impuls menghitung datang, dan isi TCNT1L menjadi $ 00, dan nilai $ 02 dicatat di TCNT1H.

Sekarang Anda membaca nilai TCNT1L ke variabel lain, dapatkan nilai $ 00 dalam variabel ini (setelah semua, timer / counter sudah membuat akun). Nilai 16-bit variabel-variabel ini adalah $ 0100, tetapi pada saat membaca byte yang lebih tua, isi konter adalah $ 01FF, dan Anda harus membaca byte yang lebih muda sebagai FF. Untuk mencegah situasi seperti itu, register sementara yang terkandung dalam unit timer / counter digunakan. Register ini transparan, I.E. Bertindak secara otomatis. Saat membaca nilai register TCNT1L ke variabel, isi TCNT1H jatuh ke dalam daftar ini. Kemudian ketika membaca byte yang lebih lama dalam variabel, nilai register waktu dibaca. Register sementara sepenuhnya transparan bagi pengguna, tetapi untuk operasi yang benar, perlu untuk mengikuti urutan tindakan di atas. Banding untuk register melalui daftar tambahan (buffer) disebut buffering ganda

Penghitung waktu dikaitkan dengan menghitung impulsyang bisa eksternal dan masukkan input khusus dari chip atau dibentuk oleh generator mereka sendiri. Pada gilirannya, frekuensi generatornya sendiri dapat disinkronkan oleh resonator kuarsa eksternal, dan dapat ditentukan oleh skema RC internal. Setelah itu, frekuensi luar atau frekuensi generatornya sendiri dipegang oleh register yang dikelola oleh register CLKPR.. Pengemudi generator setelah penjelajah (prescasher) CLKPR sering disebut sinyal jam (frekuensi jam) dari prosesor (CPU).
Frekuensi dipasok ke timer input ditunjukkan sebagai clktn. Frekuensi ini sesuai dengan sinyal jam prosesor.
Satu impuls yang dapat dihitung meningkatkan nilai timer per unit, sehingga register TCNT dihitung dan disebut timer / counter (TC).
Untuk pengoperasian timer / meter yang benar pada sinyal jam eksternal, waktu minimum antara dua switching sinyal jam eksternal harus setidaknya satu periode sinyal clock CPU. Sinyal jam eksternal yang disinkronkan dengan meningkatnya bagian depan sinyal jam CPU internal. (Harus diingat saat membangun meter frekuensi).
Timer / Penghitung Daftar Tcnt. adalah daftar Tccr..
Interrupt topeng Untuk timer / konter Tcnt. Menyajikan daftar Timsk. (Timer Interrupt Control Register).
Daftar Flags TIMSK Interrupt Mask - adalah Daftar TIFR. Ingat bahwa 3 register ini (TCCR, Timsk, TIFR) saat bekerja / dihitung TCNT digunakan hampir selalu.

Interupsi dapat dipanggil untuk melimping tcnt register, membandingkan nilai-nilai tcnt register dengan nilai register perbandingan OCR khusus, menangkap - dengan nilai register penangkapan ICR khusus dan ditentukan oleh mode penghitung waktu / penghitung . Selain itu, permintaan interupsi dapat terjadi pada respons watchdog timer wdt.

Pengatur waktu / penghitung dapat beroperasi dalam mode yang berbeda dan, sesuai, melakukan fungsi yang berbeda.
Mode operasi, I.E., perilaku timer / counter dan output sinyal kebetulan didefinisikan sebagai mode pengoperasian sinyal yang dikendalikan oleh register. WGM02; WGM01; WGM00. (Rekaman disingkat. WGM02: 0.) dan mode output sinyal kebetulan dikendalikan oleh register Soms0x1; Som0x0. (Rekaman disingkat. Som0x1: 0.). Status bit, di mana mode output dari sinyal kebetulan tergantung, tidak mempengaruhi urutan penghitungan, yang hanya ditentukan oleh status bit konfigurasi generator sinyal.

Bit Som0x1: 0. Tentukan apakah sinyal output PWM harus dibalik atau tidak (PWM terbalik atau tidak terbalik).
Modulasi pulsa (PWM) atau modulasi lebar pulsa (PWM).
Untuk mode non-PWM, isi bit som soms0x1: 0 menentukan apakah sinyal output harus dipasang dalam satu unit, reset ke nol atau beralih ke keadaan berlawanan pada saat kebetulan.

--
Terima kasih atas perhatiannya!
Igor Kotov, Editor-in-chief The Magazine "Datgorod"

Anda dapat mengambil langkah sama dengan satu, maka perubahan akan terlihat seperti ini:
Plus: tunda rcall; Transisi ke Inc Temp2 Tunda Subroutine; Pergi ke satu langkah dan periksa apakah hasilnya nol breq plus_1; Jika ya, kita beralih ke label kanan plus_1 rjmp; Penghargaan ke plus_1: Survei Tombol Temp2 Desember; Kami mengurangi unit RJMP yang benar; Kembali ke minus: tombol delay rcall; Transisi ke subprogram penundaan TEMP2 Desember; Pergi ke satu langkah dan periksa apakah hasilnya nol breq minus_1; Jika ya, kita beralih ke label yang benar rjmp minus_1; Kembali ke tombol minus_1: inc TEMP2; Tambahkan unit yang benar RJMP; Kembali ke Tombol Polling

Karena iritasi pada Avrstudio 5, dan mikrokontroler ATTINY2313, seri artikel akan ditulis ulang di bawah mikrokontroler AtmelStudio6, dan ATmega8 dan ATmega16. Saya minta maaf sebelumnya atas ketidaknyamanan.