Misalnya PIC10F200T
Hampir semua kode yang Anda tulis akan lebih besar dari itu, kecuali jika itu adalah chip tujuan tunggal. Apakah ada cara untuk memuat lebih banyak memori program dari penyimpanan eksternal atau sesuatu? Saya hanya ingin tahu, saya tidak melihat bagaimana ini bisa sangat berguna ... tetapi harus begitu.
microcontroller
pic
memory
storage
coder543
sumber
sumber
Jawaban:
Anda anak-anak, keluar dari halaman saya!
384 byte adalah banyak ruang untuk membuat sesuatu yang cukup kompleks di assembler.
Jika Anda menggali kembali sejarah hingga saat komputer seukuran ruangan, Anda akan menemukan beberapa karya seni yang benar-benar menakjubkan yang dieksekusi dalam <1k.
Misalnya, baca Story of Mel - A Programmer klasik . Diakui, orang-orang itu memiliki 4096 kata memori untuk dimainkan, orang-orang kafir yang dekaden.
Lihat juga beberapa kompetisi demoscene lama di mana tantangannya adalah memasukkan "intro" ke dalam bootblock floppy, target tipikal adalah 4k atau 40k dan biasanya mengatur untuk memasukkan musik dan animasi.
Sunting untuk ditambahkan : Ternyata Anda dapat menerapkan kalkulator ilmiah $ 100 pertama di dunia dalam 320 kata.
Edit untuk anak muda 'uns:
sumber
Mikrokontroler cukup murah sehingga sering digunakan untuk melakukan hal-hal sederhana yang pada tahun-tahun sebelumnya lebih mungkin dilakukan dengan logika diskrit. Hal yang sangat sederhana. Sebagai contoh, seseorang mungkin ingin perangkat untuk menyalakan output selama satu detik setiap lima detik, lebih tepatnya dari 555 timer akan mampu melakukannya.
Itu akan menjadi nyata, dapat digunakan, aplikasi, dalam waktu kurang dari 32 kata (48 byte) ruang kode. Seseorang dapat dengan mudah menambahkan beberapa opsi untuk memiliki beberapa pin I / O untuk mengontrol opsi pengaturan waktu dan masih memiliki banyak ruang untuk disisihkan, tetapi meskipun semua chip melakukan persis seperti yang ditunjukkan di atas, mungkin masih lebih murah dan lebih mudah daripada alternatif lain menggunakan diskrit. logika. BTW,
clrwdt
instruksi bisa dipindahkan ke subrutin, tetapi hal itu akan membuat hal-hal yang kurang kuat. Seperti yang tertulis, bahkan jika sebuah kesalahan menyebabkan tumpukan alamat pengirim rusak, anjing penjaga tidak akan diberi makan sampai eksekusi kembali ke loop utama. Jika itu tidak pernah terjadi, anjing penjaga akan mengatur ulang chip setelah beberapa detik.sumber
clrwdt
instruksi. Ini bukan pengaturan counter yang paling pasti gagal, tetapi beberapa pertimbangan diberikan untuk masalah keselamatan (misalnya penghindaranclrwdt
dalam subrutin)."HANYA" 384 byte?
Jauh di masa lalu, saya memiliki tugas menulis seluruh sistem operasi (sendiri) untuk komputer khusus yang melayani industri manajemen kapal, pipa, dan kilang. Produk seperti pertama perusahaan berbasis 6800 dan sedang ditingkatkan ke 6809, dan mereka ingin OS baru untuk pergi bersama dengan 6809 sehingga mereka dapat menghilangkan biaya lisensi dari sistem operasi asli. Mereka juga meningkatkan ukuran boot rom ke 64 byte, naik dari 32. Jika saya ingat dengan benar - itu sekitar 33 tahun yang lalu! - Saya meyakinkan para insinyur untuk memberikan saya 128 byte sehingga saya dapat menempatkan driver perangkat sistem operasi keseluruhan pada rom dan dengan demikian membuat seluruh perangkat lebih dapat diandalkan dan serbaguna. Ini termasuk:
Ya, semua ini adalah tulang kosong yang didapatnya, dan dioptimalkan dengan tangan untuk menghilangkan setiap siklus asing, tetapi sangat bisa digunakan dan dapat diandalkan. Ya, saya menyemir semua itu ke byte yang tersedia - oh, itu JUGA mengatur penanganan interupsi, berbagai tumpukan, dan menginisialisasi sistem operasi real-time / multi-tasking, mendorong pengguna pada opsi boot, dan mem-boot sistem.
Seorang teman saya yang masih berafiliasi dengan perusahaan (penggantinya) mengatakan kepada saya beberapa tahun yang lalu bahwa kode saya masih dalam pelayanan!
Anda dapat melakukan BANYAK dengan 384 byte ...
sumber
Anda dapat menggunakan ini untuk aplikasi yang sangat kecil (misalnya start PSU yang tertunda , penggantian 555 timer , kontrol berbasis triac , LED berkedip dll ...) dengan tapak yang lebih kecil daripada yang Anda perlukan dengan gerbang logika atau penghitung waktu 555.
sumber
Saya merancang sensor kelembaban untuk tanaman yang melacak jumlah air yang dimiliki tanaman dan berkedip LED jika tanaman membutuhkan air. Anda dapat membuat sensor mempelajari jenis tanaman dan dengan demikian mengubah pengaturannya saat berjalan. Ini mendeteksi tegangan rendah pada baterai. Saya kehabisan flash dan ram tetapi mampu menulis semuanya dalam kode C untuk membuat produk ini berfungsi dengan sempurna.
Saya menggunakan pic10f yang Anda sebutkan.
Ini kode yang saya buat untuk Sensor Air Tanaman saya. Saya menggunakan pic10f220 karena memiliki modul ADC, ia memiliki memori yang sama dengan pic10f200, saya akan mencoba mencari skema besok.
Kode ini dalam bahasa Spanyol, tetapi sangat sederhana dan harus mudah dipahami. Ketika Pic10F bangun dari mode tidur, ia akan mengatur ulang sehingga Anda harus memeriksa apakah itu PowerUp atau reset dan bertindak sesuai. Pengaturan pabrik disimpan dalam ram karena tidak pernah benar-benar mati.
MAIN.C
MAIN.H
Beritahu saya jika Anda memiliki pertanyaan, saya akan mencoba menjawab berdasarkan apa yang saya ingat. Saya mengkodekan ini beberapa tahun yang lalu jadi jangan periksa kemampuan coding saya, mereka telah meningkat :)
Catatan Akhir. Saya menggunakan kompiler Hi-Tech C.
sumber
Satu hal yang belum saya lihat disebutkan: Mikrokontroler yang Anda sebutkan hanya $ 0,34 masing-masing dalam jumlah 100. Jadi untuk produk murah yang diproduksi secara massal, masuk akal untuk pergi ke masalah pengkodean tambahan yang dikenakan oleh unit terbatas tersebut. Hal yang sama berlaku untuk ukuran atau konsumsi daya.
sumber
Ketika saya masih di sekolah menengah, saya memiliki seorang guru yang bersikeras bahwa peredupan cahaya adalah tugas yang terlalu sulit bagi siswa seperti saya untuk atasi.
Dengan demikian menantang saya menghabiskan cukup banyak waktu untuk belajar dan memahami peredupan cahaya berbasis fase menggunakan triac, dan pemrograman 16C84 dari microchip untuk melakukan hal ini. Saya berakhir dengan kode perakitan ini:
Tentu saja Anda perlu memodifikasi ini untuk chip yang Anda sebutkan, dan mungkin menambahkan rutin serial murah untuk input karena chip Anda tidak memiliki port lebar 8 bit untuk didengarkan, tetapi idenya adalah bahwa pekerjaan yang tampaknya rumit dapat dilakukan dalam kode yang sangat sedikit - Anda dapat memasukkan sepuluh salinan dari program di atas ke dalam 10F200.
Anda dapat menemukan lebih banyak informasi proyek di halaman Peredupan Cahaya saya . Kebetulan saya tidak pernah menunjukkan ini kepada guru saya, tetapi akhirnya melakukan sejumlah rig pencahayaan untuk teman DJ saya.
sumber
Nah, bertahun-tahun yang lalu saya menulis pengontrol suhu dengan serial I / O (menggedor serial I / O karena MCU tidak memiliki UART) dan juru bahasa perintah sederhana untuk berbicara dengan pengontrol. MCU adalah Motorola (sekarang Freescale) MC68HC705K1 yang memiliki 504 byte memori program (OTPROM) dan sekitar 32 byte RAM. Tidak sesederhana PIC yang Anda referensi, tapi saya ingat ada beberapa ROM yang tersisa. Saya masih memiliki beberapa unit rakitan yang tersisa, 17 tahun kemudian; mau beli satu?
Jadi ya, itu bisa dilakukan, setidaknya dalam perakitan.
Bagaimanapun, saya telah menulis program C yang sangat sederhana baru-baru ini yang mungkin akan muat di dalam 384 byte ketika dioptimalkan. Tidak semuanya membutuhkan perangkat lunak yang besar dan kompleks.
sumber
Anda dapat menulis blink LED dengan memori program 384 bytes, dan bahkan lebih.
Sejauh yang saya tahu, tidak mungkin untuk memperpanjang memori program dengan chip eksternal (kecuali jika Anda sedang membangun juru bahasa ASM penuh dalam 384 byte , yang akan lambat). Dimungkinkan untuk menambah memori data dengan chip eksternal (EEPROM, SRAM).
sumber
Ini sebenarnya lebih buruk daripada yang Anda pikirkan. Halaman Mouser Anda yang ditautkan membingungkan karena menentukan prosesor ini memiliki memori program 384 byte. PIC10F200 sebenarnya memiliki 256 kata 12-bit memori program.
Jadi, apa yang dapat Anda lakukan dengan itu? Set instruksi PIC 12-bit yang digunakan oleh perangkat PIC10F20 x semuanya adalah instruksi satu kata, jadi setelah Anda mengurangi beberapa instruksi untuk pengaturan prosesor, Anda memiliki ruang yang cukup untuk program sekitar 250 langkah. Itu cukup untuk banyak aplikasi. Saya mungkin bisa menulis pengontrol mesin cuci di ruang semacam itu, misalnya.
Saya baru saja melihat ke kompiler PIC C yang tersedia, dan sepertinya sekitar setengah dari mereka bahkan tidak akan mencoba untuk mengeluarkan kode untuk PIC10F200. Mereka yang mungkin mengeluarkan kode boilerplate begitu banyak sehingga Anda mungkin hanya dapat menulis flasher LED di ruang yang tersisa. Anda benar-benar ingin menggunakan bahasa rakitan dengan prosesor seperti itu.
sumber
Mengayunkan tongkat saya di hari saya, kami harus menggosok bit kami sendiri dari pasir!
Pada tahun 1976 (atau sekitar itu) sistem Atari 2600 VCS adalah salah satu "platform video game" yang paling populer saat itu. Di dalamnya, mikroprosesor (MOSTEK 6507) berjalan pada kecepatan ~ 1 MHz dan memiliki **** 128 byte RAM **.
Contoh kedua yang saya ingat dari mikrokontroler dengan RAM yang sangat terbatas (~ 128 byte) adalah PIC12F yang digunakan pada konverter DC-DC. Mikro ini juga harus menggunakan bahasa rakitan agar dapat berjalan sama sekali.
sumber