Daftar Isi:

Memulai Dengan Bascom AVR: 5 Langkah
Memulai Dengan Bascom AVR: 5 Langkah

Video: Memulai Dengan Bascom AVR: 5 Langkah

Video: Memulai Dengan Bascom AVR: 5 Langkah
Video: PENGENALAN PEMROGRAMAN BASCOM AVR 2024, Juli
Anonim
Memulai Dengan Bascom AVR
Memulai Dengan Bascom AVR

Ini adalah awal dari seri untuk mengajarkan Anda memprogram mikrokontroler AVR Anda dengan Bascom AVR.

Mengapa saya melakukan ini.

Sebagian besar sampel program dalam seri ini dapat Anda buat dengan Arduino.

Beberapa lebih mudah dan beberapa lebih sulit, tetapi pada akhirnya keduanya akan berjalan pada pengontrol yang sama.

Tetapi cara pemrograman berbeda di setiap lingkungan pengembangan. Arduino membutuhkan perpustakaan untuk semuanya kecuali fungsi dasar. Bascom juga bekerja dengan perpustakaan, tetapi saya jarang harus menyertakannya. Dengan Arduino, semua pengaturan khusus perangkat keras dilakukan melalui perpustakaan. Anda memiliki pengaruh yang sangat kecil pada kekuatan sebenarnya dari mikrokontroler. Dimulai dengan pengatur waktu yang dimiliki pengontrol. dengan arduino Anda membutuhkan perpustakaan lagi. jika Anda memiliki timer sampai berfungsi, mungkin perpustakaan lain bertabrakan dengan pengaturan Anda. Di bascom Anda memiliki akses gratis ke perangkat keras lengkap termasuk sektor boot yang ditempati oleh arduino. misalnya, beberapa perpustakaan di bascom menanyakan timer mana yang ingin Anda gunakan. di sisi lain, karena arduino membuatnya sangat mudah untuk membuat perpustakaan sendiri, secara alami membuatnya menjadi platform di mana perangkat keras dan sensor baru biasanya memiliki perpustakaan secara langsung. apa yang sering dikaitkan dengan banyak penelitian di bascom dan fungsi yang biasanya dilakukan oleh perpustakaan harus dengan susah payah dimasukkan ke dalam kode program. tapi kabar baiknya komunitas bascom juga sangat besar itulah sebabnya ada solusi untuk setiap ide.

Jadi itu sebagian tergantung pada proyek apa yang digunakan untuk lingkungan pengembangan dan sebagian pada pengetahuan orang pemrograman.

tapi mengapa saya melakukan seri ini. di satu sisi menghemat banyak uang. Saya tidak perlu membeli papan arduino untuk setiap proyek. Sebagai contoh: Arduino uno noname berharga sekitar 12 €, pengontrol yang ada di dalamnya hanya 2,5 € dengan sirkuit minimum yang diperlukan untuk fungsi yang stabil, biayanya sekitar 4 €. di sisi lain Anda memiliki pilihan lengkap chip avr yang didukung tersedia. atmegas 8 hingga 256 dan attiny 8 hingga 2313 dan banyak jenis xmega yang saya tidak punya pengalaman. Jika Anda hanya ingin menggunakan servo dan sensor ultrasonik yang dapat mengenali tangan, misalnya, dan kemudian membuka tutup tempat sampah, Anda dapat menggunakan chip sekecil mungkin. Jadi ada banyak alasan untuk belajar bahasa kedua.

Jadi mari kita mulai

Perlengkapan

Ini adalah daftar bagian minimum yang diperlukan untuk pengoperasian chip dan pemrograman yang stabil.

Papan tempat memotong roti untuk pengujian

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

7805 pengatur tegangan 5V

Resistor 10Kohm

Kapasitor film 100nF

10µF kapasitor elektrolitik

Kapasitor elektrolit 100µF

beberapa kabel untuk papan tempat memotong roti

Windows PC 7/8/8.1/10

Programmer ISP (saya akan menggunakan USBasp di sini Anda dapat membelinya di amazon dengan sedikit uang)

Bascom AVR (Anda dapat mengunduh DEMO di sini. Semua fungsi tidak terkunci, tetapi Anda hanya dapat menulis kode hingga ukuran 4Kb yang cukup untuk banyak kode).

Bagian opsional:

LED dengan resistor

saklar dorong

bagian khusus proyek

Langkah 1: Instalasi Bascom dan Setup

Instalasi Bascom dan Setup
Instalasi Bascom dan Setup
Instalasi Bascom dan Setup
Instalasi Bascom dan Setup
Instalasi Bascom dan Setup
Instalasi Bascom dan Setup

Unduh file dan instal Bascom AVR. Instal semua bagiannya termasuk kotak centang terakhir setelah menginstal.

Setelah itu reboot PC Anda jika tidak bascom tidak akan mulai.

Setelah reboot mulai bascom.

Buka Opsi -> Programmer dan pilih USBasp dari daftar, simpan pengaturan dan tutup Bascom.

Gunakan Program ini untuk menginstal usbasp. Setelah itu, reboot PC Anda lagi. Sekarang hubungkan USBasp dengan PC Anda dan mulai pengelola perangkat. USBasp akan muncul di perangkat libusb.

Stat Bascom lagi dan buat file baru. Simpan ke komputer Anda dan tekan tombol F7 pada keyboard Anda.

Kompiler memulai dan mengkompilasi program kosong. Sekarang Anda dapat menguji fungsionalitas programmer.

Tekan tombol F4 pada keyboard Anda untuk memulai jendela programmer. Sekarang buka chip -> mengidentifikasi untuk memulai interaksi. LED dari USBasp sekarang akan berkedip singkat. Anda harus mendapatkan pesan seperti chip Id FFFFFF tidak dapat membaca perangkat. Itu pertanda baik bahwa Programmer bekerja tetapi tidak menemukan chip.

Sekarang kita bisa mulai membangun sirkuit pertama.

Langkah 2: Mari Kita Lihat Lebih Dekat pada Chip

Mari Kita Lihat Lebih Dekat Chipnya
Mari Kita Lihat Lebih Dekat Chipnya

Jika dilihat dari pinout chipnya sepertinya chip tersebut tidak memiliki kemiripan dengan board arduino. Tentu, kami menggunakan Atmega8 dan di Arduino uno adalah Atmega328. Tetapi Pinoutnya hampir sama tetapi chip board Arduino Uno memiliki lebih banyak fungsi. Berikut nama-nama pin. VCC dan GND adalah pin untuk catu daya.

AREF dan AVCC adalah pin untuk tegangan referensi dan catu daya untuk konverter analog ke digital.

PB 0-7 PC 0-6 PD 0-7 adalah pin input output tujuan umum dengan beberapa hunian.

reset pin sesuai dengan namanya. Untuk me-restart chip. Baris di atas nama reset berarti negasi. Itu berarti, untuk mereset chip Anda harus menariknya ke 0V.

Untuk pin berikut instruksi terpisah segera hadir.

RXD TXD adalah pin perangkat keras untuk komunikasi serial UART.

INT0 INT1 adalah pin Interupsi Perangkat Keras

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

Pin XTAL /TOSC untuk kristal eksternal hingga 16MHz (model berbeda hingga 20MHz) /Pin kristal untuk RTC internal

T1 mirip dengan T0

Pin AIN adalah untuk komparator analog

ICP1 mirip dengan T0/T1

OC1A adalah pin output perangkat keras untuk pwm timer1 channel A

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

MOSI MISO SCK/ OC2 adalah pin SPI perangkat keras dan pin untuk pemrograman / PWM output timer2

ADC0 ke ADC5 adalah input analog

SDA SCL adalah Pin untuk perangkat keras I2C

Chip normal dapat bekerja dari 4, 5V hingga 5, 5V, Atmega 8L dapat bekerja dengan Tegangan yang jauh lebih rendah.

Anda melihat bahkan chip ini dapat melakukan lebih dari yang tampaknya tidak dapat dilakukan oleh Arduino Uno. Tetapi Arduino juga dapat melakukannya, Anda hanya perlu memprogramnya.

Langkah 3: Sirkuit Pertama

Sirkuit Pertama
Sirkuit Pertama
Sirkuit Pertama
Sirkuit Pertama

Sekarang saatnya untuk membangun sirkuit pertama Anda.

Apa biasanya sirkuit pertama? Benar! Mari kita berkedip LED.

LED terhubung dengan PB0. Resistor di sebelah chip memiliki 10k Ohm.

Resistor di sebelah LED memiliki 470 Ohm.

Sekarang Anda dapat menghubungkan USBasp dengan Atmega seperti yang ditunjukkan pada gambar.

Tetapi sebelum Anda menghidupkan daya, izinkan kami menulis programnya.

Langkah 4: Tulis Program Pertama

Tulis Program Pertama
Tulis Program Pertama

Buat file baru di Bascom dan ketik teks berikut.

$regfile "m8def.dat"

$crystal = 1000000 config portb.0 = keluaran lakukan portb.0 = 1 tunggu 1 portb.0 = 0 tunggu 1 loop

setelah itu kompilasi dengan menekan F7 pada keyboard Anda.

Sekarang kita dapat memprogram chip dengan menekan F4. Jendela pemrogram muncul. Sekarang saatnya untuk menyalakan daya dari papan tempat memotong roti. Anda harus menerapkan sesuatu antara 6 dan 12 Volt.

Sekarang pergi ke chip -> program otomatis. Jika jendela programmer menutup secara otomatis pemrograman berhasil.

LED harus berkedip dalam frekuensi satu detik.

Sekarang lihat lebih dekat ke program untuk memahami sintaks.

$regfile "m8def.dat"

$kristal = 1000000

dengan $regfile kami memberi tahu kompiler jenis chip yang digunakan nama chip Arduino akan menjadi "m328pdef.dat"

dengan $crystal kami memberi tahu dia kecepatan cpu sekitar 1MHz.

config portb.0 = Keluaran

itu berarti PB0 harus bertindak sebagai output.

Omong-omong, singkatan PB0 berarti port B bit 0. Chip ini dibagi menjadi beberapa port. Setiap pelabuhan diberikan surat untuk identifikasi yang jelas. dan setiap portpin sedikit dari 0 hingga 7. Sebagai contoh, saya dapat menulis satu byte lengkap ke dalam register keluaran port, yang akan dikeluarkan melalui pin port individual.

melakukan

lingkaran

Inilah yang dimaksud dengan pernyataan void loop di Arduino. Semua di antara dua perintah itu akan berulang selamanya. (dengan beberapa pengecualian tetapi nanti lebih banyak tentang itu)

Portb.0 = 1

tunggu 1 portb.0 = 0 tunggu 1

Di sini kita menghasilkan kedipan led.

Portb.0 = 1 memberitahu chip untuk mengalihkan output PB0 ke 5V

perintah wait 1 biarkan chip menunggu selama satu detik. Jika Anda ingin mengganti led lebih cepat, Anda harus mengganti perintah wait dengan waitms sekarang, Anda dapat memasukkan beberapa waktu sekarang dalam milidetik mis. waitms 500. (waitus berarti menunggu dalam nanodetik)

Portb.0 = 0 memberitahu chip untuk mengalihkan output PB0 ke 0V.

Langkah 5: Tambahkan Tombol untuk Menggunakan Input

Tambahkan Tombol untuk Menggunakan Input
Tambahkan Tombol untuk Menggunakan Input

Sekarang kita tambahkan tombol untuk menyalakan led jika tombol ditekan.

Masukkan tombol seperti yang ditunjukkan pada gambar.

sekarang ketik program berikut.

$regfile "m8def.dat"

$crystal = 1000000 config portb.0 = output config portd.7 = input Portd.7 = 1 lakukan jika pind.7 = 0 maka portb.0 = 1 else portb.0 = 0 loop

Jika Anda mengunggah program itu ke chip, led hanya menyala ketika tombol ditekan. Tapi kenapa?

program dimulai secara identik seperti yang terakhir sampai

config portd.7 = masukan. Artinya, pin PD7 yang terhubung dengan tombol bertindak sebagai input.

Portd.7 = 1 tidak mengalihkan pin ke high, tetapi mengaktifkan resistor pull up internal Atmega.

Pernyataan if terlihat agak aneh jika Anda terbiasa dengan Arduino.

jika Anda menggunakan pernyataan if Anda harus menggunakan pernyataan "maka". Dalam contoh ini pernyataan if digunakan untuk operasi perintah tunggal. Jika Anda ingin menggunakan lebih banyak perintah, Anda harus menulisnya seperti ini.

jika pind.7=0 maka

portb.0=1 beberapa kode beberapa kode beberapa kode lain portb.0 = 0 end if

untuk penggunaan pernyataan if ini, Anda harus menggunakan pernyataan "end if" di bagian akhir.

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

Sekarang giliran Anda untuk bermain-main sedikit.

Instruksi saya berikutnya akan segera hadir (pernyataan standar seperti while, pilih case, for, dan variabel.)

Jika Anda menyukai instruksi saya dan ingin lebih banyak, beri tahu saya di komentar.

Direkomendasikan: