🍠 Programer, Desainer, Hardware Hacker ataukah?

PROGRAMERAT89C51ASSEMBLYHARDWAREELEKTRONIKA

Hi, tulisan ini hanya bertujuan untuk berbagi, semoga berguna jika anda sekedar ingin tahu seperti apa hardware programming di era awal millenium (2000).

Sedikit cerita, sekitar tahun 2006 saya sudah diberi kesempatan untuk memprogram mikrokontroler AT89C51 dari Atmel (sekarang Microchip) dan waktu itu tentu saja hanya bisa memprogramnya memakai Bahasa Assembly.

ATMEL 8951

AT89C51 merupakan mikrokontroler 8 bit varian dari Intel MCS-51 atau lebih sering dikenal dengan 8051, chip ini memakai arsitektur harvard dengan set instruksi termasuk CISC dan mungkin mikrokontroler ini sekarang sudah masuk museum meskipun varian baru masih diproduksi seperti AT89C2051.

AT89C51 sangat umum dipakai di kalangan praktisi elektronika waktu itu karena selain harganya murah, sekitar 20-ribuan, bentuk paket IC adalah DIP (Dual Inline Package) sehingga mudah dalam urusan pen-solder-an dan chip ini bisa didapatkan dengan mudah di toko elektronik terdekat.

Alur Kerja (Work Flow)

Alur kerja pemrograman hardware saat ini sebenarnya jauh lebih fleksible dan canggih dibandingkan cara yang saya lakukan beberapa tahun yang lalu karena sekarang banyak tersedia development board dengan sistem module add-on, contohnya seperti pada Arduino, sehingga saat ini untuk membuat prototipe produk berdasar hardware elektronik sangatlah mudah.

Skematik Elektronik

asm51

Meskipun terlihat ruwet atau “mbulet” kalau anda belum terbiasa melihat schematic electronic tetapi bisa saya pastikan kalau anda mengetahui rules dan arti simbol-nya maka akan dengan mudah membaca schematic.

Waktu itu desain sirkuit atau skematik elektronik dilakukan dengan memakai OrCAD edisi Lite (saya lupa versinya). Tool seperti OrCAD ini dinamakan Electronic Design Automation atau EDA dan sekarang sangat banyak pilihannya, bahkan tersedia software seperti KiCAD yang gratis sepenuhnya, bisa juga memakai Autodesk Eagle untuk proyek kecil dan kedua EDA ini menyediakan fitur tampilan desain produk secara 3D. Pilihan lain anda bisa mencoba layanan online gratis seperti EasyEDA kalau anda tidak mau repot-repot dalam instalasi software.

Perhitungan Komponen

Perhitungan komponen-pun harus menyesuaikan karakteristik elektrik dan desain yang diinginkan, dan sinilah pentingnya membaca datasheet, kala itu perhitungan dilakukan secara manual yaitu corat-coret diatas kertas dan kalkulator sebagai bantu alat hitung,

cir

Ada tool yang bernama P-SPICE yang fungsinya untuk mensimulasi rangkaian elektrik hanya saja perhitungan manual sangat diperlukan untuk penguasaan dasar-dasar elektronika.

BOM

Bill Of Material yaitu daftar komponen dan harga. Ketersediaan komponen dipasaran cukup penting dalam desain skematik karena mempengaruhi keputusan dalam pemilihan dan tentu saja budget yang anda punyai. Kalau sekarang batasan ini mungkin sudah tidak berlaku, karena dengan mudah anda bisa memesan berbagai macam komponen secara online.

Desain, Pelarutan & Pengeboran PCB

Desain

Sebenarnya OrCAD sangat lengkap hanya saja kala itu waktu untuk mempelajarinya sangatlah terbatas sehingga desain PCB murni dilakukan secara manual memakai desain tempel seperti Rugos. Terus terang diperlukan kesabaran ekstra untuk mendesain jalur-jalur elektronik di PCB memakai cara ini yang memang hanya sekali pakai.

Pelarutan

Langkah berikutnya adalah pelarutan jalur-jalur tembaga yang tidak diperlukan dengan memakai larutan kimia yang saat itu sangat umum memakai bahan kimia yang bernama Ferric Chloride (FeCl3).

Pengeboran

Langkah terakhir anda harus melubangi PCB tersebut sehingga kemudian bisa ditanamkan komponen-komponen yang sesuai.

Saran saya kalau sekarang mending mendesain sendiri PCB melalui software atau pesan secara online dan jika untuk tujuan produksi maka serahkan desain tersebut ke pihak lan seperti layanan online, desain PCB manual sangat terbatas untuk desain tipe single layer dan biasanya hanya untuk prototipe, sebaiknya anda memanfaatkan layanan seperti desain PCB online terutama jika ingin memproduksinya secara masif.

Pemasangan & Penyolderan

Saya selalu ingat kalau tipe komponen elektronika yang tersebar terbagi menjadi beberapa:

  • Komponen Kelas Space

  • Komponen Kelas Militer

  • Komponen Kelas Industri

  • Komponen Kelas Pasaran

Perbedaan pasti ada di kualitas komponen seperti toleransi nilai komponen terhadap temperatur dll. Kalau anda membuat alat elektronika yang tidak membutuhkan kepresisian yang tinggi atau harus beroperasi di lingkungkan yang ekstrim maka komponen kelas pasaran bisa digunakan.

foto alat

Koding

Bahasa Assembly terkenal mengintimidasi bagi mereka yang berangkat mengenal bahasa pemrograman dari bahasa pemrograman high-level tetapi sebenarnya Assembly MCS-51 tidaklah terlalu susah untuk dipahami hanya saja karena termasuk jenis CISC atau Instruksi Set Kompleks maka jumlah Instruction Set-nya relatif banyak sehingga mau tidak mau anda harus selalu melihat datasheet.

CJNE @R0, #data, rel

Opcode diatas CJNE berarti Compare Jump if Not Equal artinya bandingkan data tersimpan di alamat yang tersimpan di Register 0 (pointer) dengan data langsung, jika data tidak sama maka eksekusi program akan meloncat.

Bagi yang belum tahu, assembly sangatlah device specific artinya sangat bergantung dengan arsitektur hardware, bahasa assembly MCS-51 sangatlah berbeda dengan bahasa assembly Cortex®-M4 misalnya, dengan kata lain untuk jenis mikrokontroller atau mikroposesor yang berbeda,

Bahasa Assembly Sangatlah Tidak Portabel

Sehingga jika anda ingin memprogram memakai bahasa assembly sudah pasti anda harus mengetahui secara pasti seperti apa jeroan dari perangkat keras yang akan anda program.

Haruskah Assembly?

Terus terang waktu itu saya memang belum mengenal bahasa pemrograman seperti C/C++ dan berbekal datasheet, manual set instruksi, application note dari AT89C51 maka belajarlah saya dalam memprogram mikrokontroler satu ini memakai assembly.

Di kala itu koding hanya dengan mengandalkan resource datasheet, coretan flow-chart dan ketikan kode di Notepad yang sudah cukup untuk memprogram AT89C51 beserta peripheral-nya yang kemudian menghasilkan sekitar 16 lembar halaman kode assembly utama beserta kode test (front print, 2 kolom).

asm51

Cara kompilasi source code bahasa assembly tidaklah jauh berbeda dengan alur kerja software development saat ini, maksud saya cara manual, ambil contohlah kompilasi Rust memakai kompiler rustc, bedanya dengan assembly MCS-51 yaitu setelah kompilasi anda perlu “menaruh” kode hasil kompilasi tersebut di dalam EEPROM mikrokontroler.

Caranya?

Kalau di pengembangan software saat ini, compiled program langsung di taruh di RAM/HardDisk dan bisa langsung dijalankan.

Prinsipnya sama, hanya saja karena sistem hardware seperti AT89C51 + peripheral-nya itu tidak memiliki OS maka anda harus “menaruh” compiled program secara manual memakai alat yang bernama programmer.

Programmer disini berupa device khusus untuk memprogram mikrokontroler AT89C51

Tidak ada fitur multi-tasking untuk device sekelas AT89C51 artinya sekali anda memprogramnya maka mikrokontroler akan melakukan fungsi sebagai mana program yang anda desain artinya jika anda menginginkan AT89C51 melakukan fungsi yang lain maka anda harus memprogram ulang secara manual.

Saran saya untuk memprogram hardware pakai bahasa apa saja yang anda kuasai, tidak harus assembly hanya saja kelebihan assembly secara tidak langsung anda dipaksa untuk melihat internal dari hardware yang mana itu hal yang bagus jika anda benar-benar mendalami hardware programming.

AT89C51 sekarang agak susah didapatkan selain sudah tua dan selama dasawarsa sangat banyak bermunculan mikrokontroler baru yang jauh lebih mutakhir tetapi dengan harga yang relatif sama bahkan lebih murah.

Kalau anda ingin menekuni hardware programming saya sarankan mempelajari arsitektur ARM (contoh chip seperti STM32F401RE) karena hampir 80% alat elektronik saat ini pasti memakai chip berarsitektur ARM.


Menjelang 2020

Hampir 10 tahun saya tidak menyentuh hardware programming dan selama itu 7 tahun saya habiskan di dunia pemrograman (web, back-end maupun desktop) dengan melibatkan banyak bahasa seperti Java, ColdFusion, PHP, Adobe Flex, C# dan JavaScript.

Pelajaran penting dari hardware programming adalah meskipun learning curve-nya agak susah tetapi secara jangka panjang pengetahuan ataupun keahlian masih sangatlah relevan dan reliable untuk beberapa puluh tahun kedepan dibandingkan misalnya anda belajar pemrograman web yang bisa sangat berubah drastis dalam lingkup tahun bahkan bulan.

Selama pengalaman saya di bidang pengembangan teknologi, terutama pemrograman, banyak sekali menyandang atribut-atribut yang sebenarnya hanya untuk keperluan pasar yang sama sekali tidak esensial apalagi menggambarkan kemampuan utuh ataupun potensi dari manusia, dan yang lebih penting menurut saya adalah apakah yang anda buat tersebut memiliki manfaat atau tidak bagi orang lain.

Terima Kasih Sudah Membaca 😁


Equan Pr.

Equan Pr. (@junwatu)