18-Pins 16F88

18-Pins 16F88

Beberapa waktu yang lalu saya berpikiran untuk membuat sebuah Antenna Analyzer yang mampu melihat detail R+/-jX pada frekuensi resonansinya, kebutuhan itu didorong oleh eksperimen saya dalam membuat 80M-EH Antenna. Setelah melakukan searching di NET saya memperoleh beberapa referensi Antenna Analyzer dimaksud, dengan melakukan penyesuaian seperlunya tool tersebut sangat mungkin untuk dibuat, namun expectation saya menjadi bertambah, yang sebelumnya hanya ingin mengetahui R+-jX antenna dengan dibantu kalkulator sebagai post-processing, menjadi ingin memperkerjakan microcontroller untuk urusan hitung-menghitung ini, dan hasilnya langsung bisa dilihat di LCD secara near-real time (sebab processiong tetap membutuhkan waktu).

18 Pins 16F84A

18 Pins 16F84A

Dari requirement ini, akhirnya saya membutuhkan sebuah microcontroller PIC namun yang bisa menghandle input berupa sinyal analog (tegangan dari jembatan wheatstone pada antenna analyzer). Pilihan saya tertuju kepada PIC16F88, yang konon merupakan penerus dari si selebriti PIC16F84A, dimana evolusinya melewati tahapan berikut 16F84 –> 16F84A –> 16F628 –> 16F88, semuanya 8 bit MCU dengan jumlah pin sebanyak 18 buah dan ada juga yang 20 pin, namun saya hanya refer ke 18 pin.

Sekilas kelebihan PIC ini yang saya penting buat saya adalah (please CMIIW, lengkapnya silakan merefer ke www.microchip.com) :

1. Teknologi Go Green “Nano Watt”, yaitu membutuhkan asupan energi yang sangat kecil, pada mode “tidur” atau “sleep” bisa mencapai orde “Nano Watt” saja … jadi battery kita akan sangat awet dibuatnya.

18 Pins 16F628

18 Pins 16F628

2. In Circuit Programming, yaitu bisa langsung diprogram/ditulis tanpa harus melepaskannya dari rangkaian project kita, hanya dengan beberapa utas kabel.

3. Dari 18pin yang ada, 16 pin bisa difungsikan sebagai I/O, dimana 7 pin bisa interfacing dengan ADC (6 input 1 input/output). Selain itu support juga sebagai PWM, comparator, dan otomatis digital. Artinya dari sini adalah IC ini hanya cukup diberi catuan Vdd dan Ground, pin sisanya berfungsi sebagai I/O … wow luar biasa – Fabolous!

4. Tersedia internal RC Clock s/d 8MHz, sehingga meminimisasi jumlah external component X’tal dan capacitor pendukungnya, tentunya untuk komputasi yang tidak membutuhkan presisi tinggi sudah cukup. Saya sudah mencobanya, dan memang benar-benar running properly. Sementara untuk external clock maksimum 20MHz.

5. Program memory-nya cukup besar yaitu 4K word (16F84 1K word, 16F84A 2K word, 16F628 4K word), sehingga makin banyak program bisa kita jejalkan ke “binatang kecil hitam berkaki banyak” ini … hehehe.

6. Masih banyak lagi features yang bisa anda temukan di manual booknya.

 

Namun karena ini adalah tipe yang relatif baru, maka ada beberapa hal-hal kontra sebagai berikut :

1. Example source code atau project-project yang menggunakan 16F88 relatif agak sulit dibandingkan dengan 16F84A, 16F628 untuk ditemukan secara openned, kebanyakan firmware-nya dihidden entah apa maksud authornya. Sehingga ya harus explore sendiri dengan cara “Learning by Doing” plus “Trial and Error”.

2. Sampai saat ini baru saya temukan 1 command yang belum pernah ditemui di PIC-PIC yang telah saya pelajari sebelumnya, yaitu ANSEL, kayaknya merupakan ciri khas tipe ini. ANSEL yang merupakan kepanjangan dari Analog Selector fungsinya adalah menswitch pin-pin analog PIC response to Digital atau Analog, sebab 1 pin bisa difungsikan ganda baik Analog maupun Digital dengan mengaktifkan command ini.

3. Karena makin banyaknya features PIC ini, maka makin banyak pula Special Function Register (SFR) yang harus diingat, menyebabkan jumlah page memory menjadi sebanyak 4 buah, page0, page1, page2 dan page3. Ya konsekuensi logis …

Dengan features yang disupport oleh PIC16F88 ini kita bisa membuat berbagai tools, untuk RF homebrewer misalnya adalah : Antenna Analyzer, RF Power Meter, SWR Meter, L/C Meter, FLL (Freq. Locked Loop), Q-Meter, Frequency Counter, dan masih banyak lagi.

Bagi yang penasaran dan ingin mencobanya, silakan menjalankan program sederhana membuat flashing LED berikut:

Sumber dari Jay Slovak dengan saya tambahi comment seperlunya.

;title “PIC Sample code: PIC16F88 program”
;subtitle “Version 1.1 (c) Jay.slovak”
;Designed for 16F88 @4Mhz
;***************************************************************
 list p=16F88
 #include <p16F88.inc>
 __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO
 ERRORLEVEL -302
;***************************************************************
z1 equ 20h
z2 equ 21h
z3 equ 22h
z4 equ 23h
;***************************************************************
 org   0x0000
 goto INIT
 NOP
 NOP
 NOP
 NOP
 org 0x0005
INIT CLRF PORTA
 CLRF PORTB
 BSF STATUS,RP0                         ;Select Bank 1
 CLRF ANSEL                                  ;All pins are Digital –> Hanya dikenal di 16F88, jadi hati-hati !
 BSF OSCCON,6                              ;Set oscilator to 4Mhz –> Menset Internal RC OSC
 BSF OSCCON,5
 MOVLW H’07’
 MOVWF CMCON                          ;Turn off comparators –> Pin I/O sbg Komparator dinonaktifkan
 CLRF TRISA                                  ;Port A is output
 CLRF TRISB                                  ;Port B is output
 BCF STATUS,RP0                       ;Select Bank 0

Start MOVLW 0xFF
 MOVWF PORTA
 MOVWF PORTB
 CALL Delay
 CLRF PORTA
 CLRF PORTB
 CALL Delay
 GOTO Start
;***************************************************************
;***************************************************************
;subtitle “Delay subprogram”
Delay movlw D’3′
 movwf z3
 movlw D’137′
 movwf z2
 decfsz z1,f
 goto $-1
 decfsz z2,f
 goto $-3
 decfsz z3,f
 goto $-5
 return
 
 END

Okay, semoga menambah wawasan kita bersama.

Regards

YD1CHS