Halo lagi!
Saya terus menggambarkan perkembangan shDRO saya. Pada bagian ini, saya akan menjelaskan algoritma polling perangkat dan format perintah konsol.
Bagian pertama.FirmwareKarena jumlah saluran / port tempat pembaca dapat terhubung adalah 12, dan setiap saluran secara teoritis dapat dikonfigurasi untuk menyela, dua penangan interupsi PCINT digunakan (untuk port D dan C). Ini menyiratkan satu batasan pada koneksi: semua output perangkat yang dikonfigurasi untuk input harus terhubung ke saluran satu grup. Jika saluran dikonfigurasikan untuk keluaran, maka untuk perangkat saat ini, tidak masalah dari kelompok mana ia berasal. Grup: group1 (saluran 0-5), group2 (saluran 6-11).
Dua buffer cincin, masing-masing 256 byte, digunakan untuk penangan interrupt.
Kode penangan interrupt adalah:
buf[pos] = DATA_N; pos++;
Di mana DATA_N adalah salah satu port: PIND, PINC.
Pemrosesan data adalah sebagai berikut:
- terjadi interupsi, nilai port baru ditulis ke buffer;
- buffer disurvei secara berkala, dan darinya data yang muncul setelah polling terakhir dibaca (posisi buffer polling terakhir disimpan dalam struktur perangkat);
- dalam proses membaca data baru, level interupsi yang ditetapkan untuk saluran dibandingkan dengan data port saat ini. Jika level interupsi tidak cocok, maka data diabaikan.
- memeriksa bahwa semua data untuk diproses telah diterima (misalnya, 24 bit harus diterima untuk protokol BIN6);
- data diproses dalam bentuk "dapat dibaca" dan data yang diproses ditampilkan di layar;
- lalu prosesnya diulang;
Untuk menerapkan logika di atas, modul-modul logika berikut ini diterapkan dalam firmware:
- Perangkat: modul berisi semua informasi tentang satu perangkat yang terhubung. Untuk setiap perangkat yang terhubung, modul tersebut dibuat;
- Protokol: modul berisi informasi tentang protokol dan cara memproses sinyal yang tiba di pelabuhan sesuai dengan protokol pertukaran ini;
- Fungsi: modul berisi informasi tentang cara mengkonversi data yang diterima dari modul Protokol. Misalnya, ada modul Protokol yang mendukung sinyal quadrature, tetapi perangkat yang mengeluarkan sinyal quadrature mungkin berbeda: itu bisa berupa penggaris optik, atau sensor kecepatan. Yaitu dalam satu kasus, data perlu dikonversi ke mm atau inci, dan dalam rpm lainnya. Modul ini hanya melakukan ini;
- Led: modul yang menampilkan informasi tentang indikator. shDRO berisi 4 indikator, dan untuk setiap perangkat indikator tampilan yang diinginkan diatur;
Akibatnya, untuk menghubungkan perangkat, di konsol yang Anda butuhkan:
- konfigurasikan saluran yang diinginkan;
- tambahkan perangkat;
- untuk protokol set perangkat, fungsi dan led;
- tambahkan / ikat saluran yang diperlukan ke perangkat;
KonsolSaat ini, saya memeriksa pengoperasian konsol di monitor port ArduinoIDE dan di Terminal v.1.9b. Untuk terminal jenis Putty, Anda perlu menerapkan mode gema (tidak diterapkan).
Format perintah:
<> </1> <_1> </N> <_N>
Jumlah argumen maksimum per baris adalah 5.
Kasus tidak masalah; parsing perintah terjadi setelah string dikonversi ke huruf kecil (pengecualian: nilai argumen dalam tanda kutip).
Semua perintah dieksekusi hanya setelah perintah Pengaturan dikeluarkan (pengecualian adalah perintah Bantuan, yang menampilkan daftar semua perintah yang tersedia).
Semua perintah dijelaskan dalam arsip terlampir, serta versi pertama dari firmware dalam format hex.
shDRO.zip (.hex + deskripsi perintah)Sumber ShDROUntuk dilanjutkan.
Terima kasih
PS
Perintah yang terkait dengan konfigurasi perangkat dan saluran dapat dikirim ke bard arduino tanpa pengikat.
PS1
Meminta mereka yang tinggal di Kazan.
Jika Anda memiliki:
- kaliper digital bekerja sesuai dengan protokol: 24BIT, BCD7;
- iGaging penguasa digital (protokol 21BIT);
lalu bisakah Anda memberikannya kepada saya selama beberapa hari untuk menulis dan men-debug protokol untuk mereka?
Saya berjanji untuk menjaga mereka tetap aman dan sehat!
Tapi ini di PM. Terima kasih sebelumnya.
PS2
Saya lupa menambahkan dua perintah ke file deskripsi perintah:
- save: menyimpan pengaturan saluran dan perangkat di EEPROM;
- load: membongkar pengaturan saluran dan perangkat dari EEPROM (memuat dilakukan secara otomatis selama inisialisasi);
Saya tidak akan mengunggah ulang file, hanya perlu diingat. Tetapi "bantuan" menampilkan perintah-perintah ini.