Rangkaian Downloader PIC (PIC Multi Programmer)

Ini adalah perangkat andalan saya ketika bereksperimen dengan mikrokontroler PIC, karena dengan satu perangkat ini kita sudah dapat memprogram berbagai macam mikrokontroler PIC yang termasuk keluarga PIC10F, PIC12C, PIC12F, PIC16F. selain itu perangkat downloader ini dapat dibuat dengan mudah karena menggunakan PCB single layer.

Hardware
  Skema rangkaian (klik pada gambar untuk lebih jelas)

PCB tampak atas (lebih detail download disini)
 

PCB tampak bawah (jalur PCB) lebih detail download disini

Penampakan
 
Software 
Untuk software bisa langsung di download disini 

 
Jenis Mikrokontroler yang di program dengan alat ini:
·         PIC12C508,PIC12C509
·         PIC12C508A,PIC12C509A
·         PIC12CE518,PIC12CE519
·         PIC12C671,PIC12C672,PIC12CE673,PIC12CE674
·         PIC12F508,PIC12F509 
·         PIC12F629,PIC12F635(1)(2),PIC12F675,PIC12F683(2)
·         PIC16C505
·         ,16C62B(3),
·         PIC16F627,PIC16F628
·         PIC16F627A(2),PIC16F628A,PIC16F648A
·         PIC16F630,PIC16F636(2),PIC16F676,PIC16F684(2),PIC16F688(2)
·         ,PIC16C711(3), PIC16C716(3)
·         PIC16C745(3),PIC16C765(3)
·         ,PIC16C771(7)
·         PIC16C773,PIC16C774
·         PIC16C781(7),
·         PIC16F818,PIC16F819
·         PIC16F84
·         PIC16F84A
·         PIC16F87(2),PIC16F88
·         PIC16F870(8),PIC16F871(8),PIC16F872,PIC16F873,PIC16F874(4),PIC16F876(5),PIC16F877(5)
·         PIC16F873A(5),PIC16F874A(5),PIC16F876A,PIC16F877A
·         PIC18F1320,PIC18F2320,PIC18F4320
·         PIC18F242,PIC18F252,PIC18F442,PIC18F452
·         PIC18F248,PIC18F258,PIC18F448,PIC18F458(3)
·         PIC18F4539(3)
Sumber : http://feng3.cool.ne.jp/en/pg5v2.html

Penjelasan Port Pada Mikrokontroler PIC16F84

Istilah "port" mengacu kepada sekelompok pin pada mikrokontroler yang dapat diakses secara bersamaan, atau di mana kita bisa mengatur kombinasi yang diinginkan dari nol dan satu, atau membaca status yang ada. Secara fisik, port adalah register di dalam mikrokontroler yang dihubungkan dengan kabel ke pin mikrokontroler. Port merupakan koneksi fisik dari Central Processing Unit dengan dunia luar (Perangkat Luar). Mikrokontroler menggunakan Port  untuk memantau atau mengontrol komponen atau perangkat lain. Karena fungsi, beberapa pin memiliki peran ganda seperti PA4/TOCKI misalnya, yang dalam waktu bersamaan bit keempat Port A dan input eksternal untuk Free-Run Counter. Seleksi salah satu dari dua fungsi pin dilakukan di salah satu register konfigurasi. Sebuah ilustrasi ini adalah T0CS bit kelima dalam register OPTION. Dengan memilih salah satu fungsi yang lainnya dinonaktifkan.

Semua port pin dapat ditunjuk sebagai input atau output , sesuai dengan kebutuhan perangkat yang sedang dikembangkan. Dalam rangka untuk mendefinisikan pin sebagai pin input atau output, kombinasi yang tepat dari nol dan satu harus ditulis dalam register TRIS. Jika bit yang sesuai dari register TRIS berisi logika "1", maka pin adalah pin masukan, dan jika sebaliknya  ini merupakan pin output. Setiap port memiliki register TRIS. Dengan demikian, port A memiliki TRISA, dan port B  TRISB.  PortA dan PORTB terletak pada register memori bank 0, sedangkan TRISA dan TRISB pin register  berlokasi di bank 1.

PORTB dan TRISB
PORTB berisi 8 pin. Register yang tepat untuk mengatur arah data adalah TRISB. Mengatur bit register TRISB mendefinisikan pin port sebagai input, dan mereset bit di register TRISB berarti mendefinisikan pin port yang sesuai sebagai output.
Setiap pin PORTB memiliki internal  pull-up resistor yang lemah (resistor yang mendefinisikan baris ke logika satu) yang dapat diaktifkan dengan mengatur ulang RBPU bit ketujuh dalam register OPTION. 'pull-up' ini resistor otomatis akan dimatikan bila pin port dikonfigurasi sebagai output. Bila mikrokontroler diaktifkan, pull-up dinonaktifkan.

Empat pin PORTB, RB7: RB4 dapat menyebabkan interupsi yang terjadi ketika status mereka berubah dari logika satu ke logika nol dan berlawanan. Hanya pin dikonfigurasi sebagai input dapat menyebabkan interupsi ini terjadi (jika ada RB7:. pin RB4 dikonfigurasi sebagai output, interrupt tidak akan dihasilkan pada perubahan status) opsi interupsi ini  bersama dengan internal pull-up resistor membuatnya lebih mudah untuk memecahkan masalah-masalah umum kita temukan dalam praktek misalnya keyboard matriks. 


bsf STATUS, RP0 ;Bank1
movlw 0x0F ;Mengatur pin input dan output
movwf TRISB ;Menulis ke register TRISB
bcf STATUS, RP0 ;Bank0
bsf PORTB, 4 ;PORTB <7:4>=0
bsf PORTB, 5  
bsf PORTB, 6  
bsf PORTB, 7

Contoh di atas menunjukkan bagaimana pin 0, 1, 2, dan 3 di set sebagai input, dan pin 4, 5, 6, dan 7 untuk output, setelah pin  output PORTB diatur ke satu.


PORTA dan TRISA
PORTA memiliki 5 pin yang berdampingan. Register yang sesuai untuk arah data TRISA pada alamat 85h. Seperti dengan PORTB, Mengset bit (1) di register TRISA juga mendefinisikan pin port yang sesuai sebagai input, dan mereset bit (0) di register TRISA mendefinisikan pin port yang sesuai sebagai output.

Penting untuk dicatat bahwa PORTA pin RA4  hanya dapat menjadi input. Pada pin ini juga terletak input eksternal untuk timer TMR0. 


bsf STATUS, RP0 ;Bank1
movlw b'11111100' ;Mengatur pin input dan output
movwf TRISA ;Menulis Register TRISA
bcf STATUS, RP0 ;Bank0

Contoh menunjukkan bagaimana pin 0, 1, 2, 3, dan 4 ditujukan sebagai input, dan pin 5, 6, dan 7 sebagai output.

 


Reset Pada Mikrokontroler PIC16F84

Reset digunakan untuk menempatkan mikrokontroler ke kondisi 'dikenal/known'. Itu berarti pada penggunaanya mikrokontroler dapat berjalan diluar keinginan. Maka supaya mikrokontroler dapat terus berfungsi perlu dilakukan pengaturan ulang, yang berarti semua register akan ditempatkan pada posisi awal. Reset tidak hanya digunakan ketika mikrokontroler tidak berjalan seperti yang kita inginkan, tetapi juga dapat digunakan ketika mencoba perangkat sebagai interupsi dalam pelaksanaan program, atau supaya mikrokontroler siap ketika loading program.
 
Untuk mencegah logika nol terbawa ke pin MCLR secara tidak sengaja ( reset tersebut diaktifkan dengan nol logis), MCLR harus dihubungkan melalui resistor ke kutub suplai positif. Resistor memiliki nilai antara 5 dan 10K. Resistor tersebut fungsinya adalah untuk menjaga pin MCLR pada satu logis sebagai pencegahan, teknik ini dinamakan Pull up.


Mikrokontroler PIC16F84 memiliki beberapa sumber me-reset:
a) Reset saat power on, POR (Power-On Reset)
b) Reset ketika mikrokontroler bekerja  dengan memberika logika nol pada pin MCLR .
c) Reset selama kondisi sleep
d) Reset pada penjaga waktu (watchdog timer) (WDT) overflow
e) Reset saat overflow WDT selama kondisi sleep.

Sumber reset paling penting adalah a) dan b). Yang pertama terjadi setiap kali power supply diberikan ke mikrokontroler dan berfungsi untuk membuat semua register dan eksekusi program ke posisi awal. Yang kedua adalah dengan cara memberikan logika nol pada pin MCLR selama pengoperasian normal mikrokontroler. Sumber reset yang kedua sering digunakan dalam pengembangan program.

Selama reset, lokasi memori RAM  tidak diatur ulang. RAM  tidak berubah di reset apapun. Yang berubah keposisi awal adalah Register SFR. Salah satu efek yang paling penting dari reset adalah menetapkan program counter (PC) ke nol (0000H), yang memungkinkan program untuk memulai eksekusi dari instruksi tertulis pertama.

Reset Ketika Suplai Tegangan Drop/di bawah diijinkan (Brown-out Reset)

Impulse untuk reset selama teganan-naik yang dihasilkan oleh mikrokontroler itu sendiri ketika mendeteksi peningkatan pasokan Vdd (berkisar dari 1.2V ke 1.8V). Dorongan itu berlangsung 72ms yang memberikan cukup waktu bagi osilator untuk mendapatkan kondisi stabil. 72ms ini disediakan oleh timer PWRT internal . Mikrokontroler  dalam mode reset selama PWRT aktif. Namun, sebagai perangkat kerja, masalah muncul ketika pasokan tidak drop ke nol tapi turun di bawah batas yang menjamin berfungsinya mikrokontroler. Kasus ini mungkin terjadi ketika penggunaan, terutama di lingkungan industri dimana gangguan dan ketidakstabilan pasokan listrik merupakan kejadian sehari-hari. Untuk mengatasi masalah ini kita perlu memastikan bahwa mikrokontroler dalam kondisi reset setiap kali suplai tegangan jatuh di bawah limit yang telah ditentukan.
Jika, menurut spesifikasi listrik, rangkaian reset internal mikrokontroler tidak dapat memenuhi kebutuhan, komponen elektronik khusus dapat digunakan yang mampu menghasilkan sinyal reset diinginkan. Selain fungsi ini, rangkaian ini juga dapat berfungsi untuk menjaga tegangan suplai. Jika penurunan tegangan di bawah tingkat yang ditentukan, logika nol akan muncul pada pin MCLR  yang membuat mikrokontroler dalam keadaan reset sampai tegangan tidak dalam batas yang menjamin kinerja yang akurat.