Isi kandungan:

Memulakan Permulaan Dengan Bascom AVR: 5 Langkah
Memulakan Permulaan Dengan Bascom AVR: 5 Langkah

Video: Memulakan Permulaan Dengan Bascom AVR: 5 Langkah

Video: Memulakan Permulaan Dengan Bascom AVR: 5 Langkah
Video: Правда о ABA-терапии (прикладной анализ поведения) 2024, Julai
Anonim
Memulakan Permulaan Dengan Bascom AVR
Memulakan Permulaan Dengan Bascom AVR

Ini adalah permulaan siri untuk mengajar anda memprogram mikrokontroler AVR anda dengan Bascom AVR.

Mengapa saya melakukan ini.

Sebilangan besar sampel program dalam siri ini dapat anda buat dengan Arduino.

Ada yang lebih mudah dan yang lebih sukar, tetapi pada akhirnya kedua-duanya akan berjalan pada alat kawalan yang sama.

Tetapi cara pengaturcaraan berbeza di setiap persekitaran pembangunan. Arduino memerlukan perpustakaan untuk semua perkara kecuali fungsi asas. Bascom juga berfungsi dengan perpustakaan, tetapi saya jarang menyertakannya. Dengan Arduino, semua tetapan khusus perkakasan dibuat melalui perpustakaan. anda mempunyai pengaruh yang sangat kecil terhadap kekuatan sebenar mikrokontroler. Bermula dengan pemasa yang dimiliki pengawal. dengan arduino anda memerlukan perpustakaan lagi. jika anda mempunyai pemasa sehingga berfungsi, perpustakaan lain mungkin bertentangan dengan tetapan anda. Di bascom anda mempunyai akses percuma ke perkakasan lengkap termasuk sektor but yang dikuasai oleh arduino. sebagai contoh, beberapa perpustakaan di bascom bertanya kepada anda pemasa mana yang anda mahu gunakan. di sisi lain, kerana arduino sangat mudah untuk membuat perpustakaan sendiri, secara semula jadi menjadikannya platform di mana perkakasan dan sensor baru biasanya mempunyai perpustakaan secara langsung. apa yang sering dikaitkan dengan banyak penyelidikan di bascom dan fungsi-fungsi yang biasanya dilakukan oleh perpustakaan mesti dimasukkan dengan susah payah ke dalam kod program. tetapi berita baik komuniti bascom juga sangat besar dan itulah sebabnya ada penyelesaian untuk setiap idea.

Oleh itu, sebahagiannya bergantung pada projek apa yang digunakan untuk persekitaran pembangunan dan sebahagiannya bergantung pada pengetahuan orang yang memprogram.

tetapi mengapa saya melakukan siri ini. di satu pihak ia menjimatkan banyak wang. Saya tidak perlu membeli papan arduino untuk setiap projek. Sebagai contoh: Arduino uname bukan kos berharga kira-kira 12 € pengawal yang ada di dalamnya harganya hanya 2.5 € dengan litar minimum yang diperlukan untuk fungsi yang stabil, harganya sekitar 4 €. sebaliknya anda mempunyai pilihan lengkap cip avr yang disokong. atmegas 8 hingga 256 dan attiny 8 hingga 2313 dan banyak jenis xmega yang saya tidak mempunyai pengalaman. Sekiranya anda hanya mahu menggunakan servo dan sensor ultrasonik yang dapat mengenali tangan, sebagai contoh, dan kemudian membuka penutup tong sampah, anda boleh menggunakan cip sekecil mungkin. Oleh itu, terdapat banyak sebab untuk mempelajari bahasa kedua.

Oleh itu, mari kita mulakan

Bekalan

Ini adalah senarai bahagian minimum yang diperlukan untuk operasi cip dan pengaturcaraan yang stabil.

Papan roti untuk ujian

Atmega 8-16PU (lebih baik anda membeli 2 atau 3 jika anda membunuhnya secara tidak sengaja)

Pengatur voltan 7805 5V

Perintang 10Kohm

Kapasitor filem 100nF

Kapasitor elektrolitik 10µF

Kapasitor elektrolitik 100µF

beberapa wayar untuk papan roti

Windows PC 7/8 / 8.1 / 10

Programmer ISP (saya akan menggunakan di sini USBasp anda boleh membelinya di amazon dengan sedikit wang)

Bascom AVR (anda boleh memuat turun DEMO di sini. Semua fungsi tidak terkunci, tetapi anda hanya boleh menulis kod sehingga saiz 4Kb yang cukup untuk banyak kod).

Bahagian pilihan:

LED dengan perintang

suis tolak

bahagian khusus projek

Langkah 1: Pemasangan Bascom dan Persediaan

Pemasangan Bascom dan Persediaan
Pemasangan Bascom dan Persediaan
Pemasangan Bascom dan Persediaan
Pemasangan Bascom dan Persediaan
Pemasangan Bascom dan Persediaan
Pemasangan Bascom dan Persediaan

Muat turun fail dan pasang Bascom AVR. Pasang semua bahagiannya termasuk kotak pilihan terakhir selepas pemasangan.

Selepas itu reboot PC anda jika tidak, bascom tidak akan bermula.

Selepas reboot mulakan bascom.

Pergi ke Pilihan -> Pengaturcara dan pilih USBasp dari senarai, simpan tetapan dan tutup Bascom.

Gunakan Program ini untuk memasang usbasp. Selepas itu, but semula PC anda. Sekarang sambungkan USBasp dengan PC anda dan mulakan pengurus peranti. USBasp harus muncul di peranti libusb.

Stat Bascom sekali lagi dan buat fail baru. Simpan ke komputer anda dan tekan butang F7 pada papan kekunci anda.

Penyusun memulakan dan menyusun program kosong. Sekarang anda boleh menguji fungsi pengaturcara.

Tekan butang F4 pada papan kekunci anda untuk memulakan tetingkap pengaturcara. Sekarang pergi ke chip -> kenal pasti untuk memulakan interaksi. LED dari USBasp kini tidak lama. Anda harus mendapat mesej seperti cip Id FFFFFF tidak dapat membaca peranti. Itu petanda yang baik bahawa Programmer berfungsi tetapi ia tidak menemui cip.

Sekarang kita boleh mula membina litar pertama.

Langkah 2: Mari Lihat Lebih dekat pada Chip

Mari Lihat Lebih dekat pada Chip
Mari Lihat Lebih dekat pada Chip

Sekiranya anda melihat pin cip, nampaknya chip tidak mempunyai persamaan dengan papan arduino. Pasti, kami menggunakan Atmega8 dan di Arduino uno adalah Atmega328. Tetapi Pinout hampir sama tetapi ia chip papan Arduino Uno mempunyai lebih banyak fungsi. Berikut adalah nama-nama pin. VCC dan GND adalah pin untuk bekalan kuasa.

AREF dan AVCC adalah pin untuk voltan rujukan dan bekalan kuasa untuk penukar analog ke digital.

PB 0-7 PC 0-6 PD 0-7 adalah pin output input tujuan umum dengan penghunian berganda.

reset pin adalah seperti apa namanya. Untuk memulakan semula cip. Garis di atas nama tetapan semula bermaksud penolakan. Ini bermaksud, untuk menetapkan semula cip, anda harus menariknya ke 0V.

Untuk pin berikut arahan berasingan akan segera hadir.

RXD TXD adalah pin perkakasan untuk komunikasi bersiri UART.

INT0 INT1 adalah pin Interrupt Perkakasan

XCK / T0 UART Sumber jam / Timer / Counter0 Jam sumber

Pin XTAL / TOSC adalah untuk kristal luaran hingga 16MHz (model berbeza hingga 20MHz) / Pin kristal untuk RTC dalaman

T1 serupa dengan T0

Pin AIN adalah untuk pembanding analog

ICP1 serupa dengan T0 / T1

OC1A adalah pin output perkakasan untuk pwm timer1 saluran A

Cip SS / OC2 pilih pin untuk SPI / seperti OC1B tetapi saluran B

MOSI MISO SCK / OC2 adalah pin SPI perkakasan dan pin untuk pemrograman / pemasa output PWM2

ADC0 hingga ADC5 adalah input analog

SDA SCL adalah Pin untuk perkakasan I2C

Cip biasa boleh berfungsi dari 4, 5V hingga 5, 5V Atmega 8L boleh berfungsi dengan Voltan yang jauh lebih rendah.

Anda lihat walaupun cip ini dapat melakukan lebih banyak daripada yang tidak dapat dilakukan oleh Arduino Uno. Tetapi Arduino dapat melakukannya juga, anda hanya perlu memprogramnya.

Langkah 3: Litar Pertama

Litar Pertama
Litar Pertama
Litar Pertama
Litar Pertama

Sekarang masanya untuk membina litar pertama anda.

Apakah litar pertama yang biasanya? Betul! Mari kita kelipkan LED.

LED disambungkan dengan PB0. Perintang di sebelah cip mempunyai 10k Ohms.

Perintang di sebelah LED mempunyai 470 Ohm.

Sekarang anda boleh menyambungkan USBasp dengan Atmega seperti yang ditunjukkan dalam gambar.

Tetapi sebelum anda menghidupkan kuasa, mari kita menulis program.

Langkah 4: Tulis Program Pertama

Tulis Program Pertama
Tulis Program Pertama

Buat fail baru di Bascom dan ketik teks ikuti.

$ regfile "m8def.dat"

$ kristal = 1000000 konfigurasi portb.0 = output lakukan portb.0 = 1 tunggu 1 portb.0 = 0 tunggu 1 gelung

selepas itu menyusunnya dengan menekan F7 pada papan kekunci anda.

Sekarang kita dapat memprogram cip dengan menekan F4. Tetingkap pengaturcara muncul. Sekarang masanya untuk menghidupkan kuasa dari papan roti. Anda harus menggunakan sesuatu antara 6 dan 12 Volt.

Sekarang pergi ke cip -> autoprogram. Sekiranya tetingkap pengaturcara ditutup secara automatik, pengaturcaraan berjaya.

LED harus berkelip dalam frekuensi satu saat.

Sekarang perhatikan program dengan lebih dekat untuk memahami sintaks.

$ regfile "m8def.dat"

$ kristal = 1000000

dengan $ regfile kami memberitahu kompiler jenis cip yang digunakan nama cip Arduino akan menjadi "m328pdef.dat"

dengan $ kristal kami memberitahunya kelajuan cpu sekitar 1MHz.

config portb.0 = Keluaran

itu bermaksud PB0 harus bertindak sebagai output.

By the way, singkatan PB0 bermaksud port B bit 0. Chip dibahagikan kepada beberapa port. Setiap pelabuhan diberi surat untuk pengenalan yang jelas. dan setiap portpin sedikit dari 0 hingga 7. Sebagai contoh, saya dapat menulis bait lengkap ke dalam daftar output port, yang akan dikeluarkan melalui pin port individu.

buat

gelung

Inilah yang dimaksudkan dalam Arduino penyataan gelung void. Semua antara dua perintah itu akan berulang selama-lamanya. (dengan beberapa pengecualian tetapi kemudian lebih lanjut mengenai itu)

Portb.0 = 1

tunggu 1 portb.0 = 0 tunggu 1

Di sini kita melihat sekelip mata yang dikelip.

Portb.0 = 1 memberitahu cip untuk menukar output PB0 ke 5V

perintah tunggu 1 membiarkan cip menunggu selama satu saat. Sekiranya anda ingin menukar led lebih cepat, anda harus mengganti perintah tunggu dengan pelayan sekarang anda boleh memasukkan beberapa saat sekarang dalam milisaat mis. menunggu 500. (waitus bermaksud menunggu dalam nanodetik)

Portb.0 = 0 memberitahu cip untuk menukar output PB0 ke 0V.

Langkah 5: Tambah Butang untuk Menggunakan Input

Tambah Butang untuk Menggunakan Input
Tambah Butang untuk Menggunakan Input

Sekarang kita menambah butang untuk menyalakan led jika butang ditekan.

Masukkan butang seperti yang ditunjukkan dalam gambar.

sekarang taip dalam program ikuti.

$ regfile "m8def.dat"

$ kristal = 1000000 konfigurasi portb.0 = output output portd.7 = input Portd.7 = 1 lakukan jika pind.7 = 0 maka portb.0 = 1 yang lain portb.0 = 0 gelung

Sekiranya anda memuat naik program itu ke cip, lampu hanya akan menyala apabila butang ditekan. Tapi kenapa?

program bermula sama seperti yang terakhir hingga

config portd.7 = input. Ini bermaksud, pin PD7 yang dihubungkan dengan butang bertindak sebagai input.

Portd.7 = 1 tidak menukar pin ke tinggi, tetapi mengaktifkan perintang tarik dalaman Atmega.

Statem if if kelihatan agak aneh jika anda terbiasa dengan arduino.

jika anda menggunakan pernyataan if anda harus menggunakan pernyataan "kemudian". Dalam contoh ini pernyataan if digunakan untuk operasi perintah tunggal. Sekiranya anda ingin menggunakan lebih banyak arahan, anda harus menulisnya seperti ini.

jika pind.7 = 0 maka

portb.0 = 1 beberapa kod beberapa kod beberapa kod lain portb.0 = 0 berakhir jika

untuk penggunaan pernyataan if ini, anda mesti menggunakan pernyataan "end if" di akhir.

apa yang masih penting. Mungkin anda sudah melihatnya. input tidak disoal dengan portx.x, tetapi dengan pinx.x. Anda boleh mengingatnya dengan mudah. Output mempunyai "o" (port) dalam kata dan input mempunyai "i" (pin).

Sekarang giliran anda untuk bermain-main.

Arahan saya yang seterusnya akan segera hadir (pernyataan standard seperti sementara, pilih kes, untuk, dan pemboleh ubah.)

Sekiranya anda suka arahan saya dan mahukan lebih banyak, beritahu saya di komen.

Disyorkan: