rahmat700 0 Report post Posted November 14, 2012 hello kengkawan aku teringin dan minat nak blajar pasal programmer ni,,, ape yg patut aku lakukan utk belajar prog atmel atau pic ni,,, aku zero xtau pape,,, xtau nak mulakan .. Quote Share this post Link to post Share on other sites
NeoLogy 74 Report post Posted November 14, 2012 Dua2 senang..dua2 susah..actually same je..programming language yg digunakan menentukan susah atau senang. Kalau familiar dengan embedded c, senang la gune c. Kalau familiar dgn assembly, senang la gune assembly. Tapi essembly depend pada compiler n microcontroller..kena study sket..tapi flexibility dia tinggi compare dgn c. Untuk permulaan, 2 microcontroller ni sesuai la untuk newbie. Skrang popular dgn ARM controller..nak advanced lagi, gune resberry pie.. Quote Share this post Link to post Share on other sites
rahmat700 0 Report post Posted November 15, 2012 pic ar atmel aku da ade hardware nye,,, skrg ni cmne nk blajar programer nye,, xtau nak mule Quote Share this post Link to post Share on other sites
NeoLogy 74 Report post Posted November 15, 2012 Programmer adalah tool yg digunakan untuk write code dlm microcontroller. Pic ada programmer dia..atmel pn ada programmer dia sendiri.. Yang ko nak blajar ni programming ke programmer? Ko nak pkai programming language ape? Compiler ape? Kalau pic ko bleh gune MPLAB IDE daripada microchip. Atmel aku xsure lak..tapi ada compiler x? Quote Share this post Link to post Share on other sites
rahmat700 0 Report post Posted November 17, 2012 ape maksud compiler,, ape kegunaanya,,, ok ,, aku ade pic n ade mplab ide Quote Share this post Link to post Share on other sites
NeoLogy 74 Report post Posted November 18, 2012 Compiler adalah tool utk convert code programming kepada machine code. Maknanya convert bahasa yg kita faham kepada bahasa yg mesin faham. MPLAB IDE didatangkn dgn HI-TEC C Compiler. Ada juga assembly compiler. Tak semestinya kita hanya boleh guna compiler ni sahaja. Banyak lagi compiler yang ada. Contohnya PICC Compiler,PIC Basic dan lain-lain. Bergantung programming language yg kita gunakan. Setiap compiler ni juga ada special keyword atau compile option yg boleh digunakan. Untuk beginner ni, ada satu website yg jual development kit utk pic dan atmel. Local company la. Ada contoh2 source code dan aplikasi yg boleh dirujuk. http://www.cytron.com.my Quote Share this post Link to post Share on other sites
rahmat700 0 Report post Posted November 19, 2012 aku da bli brag di cytron tu la,,,, cuma skarg ni aku nak blaja basic je dulu,,, tp xtau nak mula Quote Share this post Link to post Share on other sites
NeoLogy 74 Report post Posted November 19, 2012 Ko beli SK40C ke?utk permulaan, cuba main-main IO dulu..output dia bleh tgk dengan LED kat board..buat blinking ke..alternate blinking ke..pastu main dgn button switch..bile dah mahir dengan IO, bleh la explore adc, timer, interrupt, pwm, spi dan lain-lain. Kat website cytron ada contoh2 source code. Boleh rujuk situ. Tapi sebelum tu, ko kena study datasheet pic. Study io pins..study registers..baru nampak dengan lebih jelas Quote Share this post Link to post Share on other sites
rahmat700 0 Report post Posted November 19, 2012 da bli da bende tu,,, mcm mane nak tau bahasa progrming tu bahasa c atau asambly? Quote Share this post Link to post Share on other sites
NeoLogy 74 Report post Posted November 20, 2012 ko ada basic programming tak?ape language yang ko familiar? ni contoh programming dalam c untuk pic. [code] #include <stdio.h> #include <16f877a.h> /*------- Register Settings for IO -------------*/ TRISA = 0x00; TRISB = 0xFF; /*-------Function prototype-------------*/ void delay( void ); void main( void ) { while(1) { RB0 != RB0; //blinking delay(); } } void delay( void ) { for(;; //do nothing } [/code] Quote Share this post Link to post Share on other sites
rahmat700 0 Report post Posted November 20, 2012 aku xde basic langsung.. sbb minat ni yg nk blajar.. #include <stdio.h> #include <16f877a.h> ape function include..? <stdio.h> ni ape ,,, wajib ke bnde ni letak,,, 16f877a.h utk pic yg kite gune kepe? Quote Share this post Link to post Share on other sites
NeoLogy 74 Report post Posted November 21, 2012 Takde basic langsung? Agak susah jugak ni. Ko belajar jurusan ape? Aku nak ajar pun agak susah kalau xde basic langsung. Kalau C ko tak tahu langsung, tambah la assembly. Tapi ko jangan risau, ko blaja benda basic dulu. Basic C programming. Ko kena tahu dulu C programming structure. Benda yang penting:[list=1] [*]basic data type [*]arithmetic conversion of data type [*]statement [*]type definition [*]constants [*]type qualifier [*]operators [*]preprocessor statements [*]storage class [*]expressions [*]arrays [*]pointers [*]functions [*]structure [*]unions [/list] #include - ni preprocessor statement. Di mana kita reference kan header file dalam source code kita. Contoh <stdio.h> adalah standard I/O header file yang ada function, constants, etc. yang akan digunakan dalam source code kita. File ni biasanya disediakan oleh compiler developer. kalau ko tak letak pun takpe, tapi ko kena buat sendiri la functions yang ada dalam stdio.h tu.. <16f877a.h> lak header file yang mengandungi data, register, io adfdress dan lain-lain lagi related to PIC yang digunakan. Setiap PIC berbeza dia punya io address, register address. So header file ni mengandungi maklumat tentang PIC yang kita guna. Quote Share this post Link to post Share on other sites
rahmat700 0 Report post Posted November 21, 2012 aku amik jurusan dip kej elektronik, kat poli,, penah blaja dulu basic je c++,,, tu pun run kat cmd.... xde hardware pun,,, da lupe dah,, lame tinggalkn,,,, so skarg ni aku nk blaja pasal programming pastu aku nk aplikasikn kat hardware,, bru nmpk hasil.. hardware xde masaalh cth nye skemmatikk dll.. cume programming je xtau ape,,, minat tu ade cume nak cari org yg blh tunjuk je yg xde ni,,,, nak bace bku je xpaham la,,, mcm org blajo gitar,, mesti ade org yg ajarnye,,, studio.h ni dapat dri mane,,, knpe yg ade gune <pic.h> TRISA = 0x00; TRISB = 0xFF; ni io kan ..trisA port A,,,,, trisB port B,, so 0x00, 0xFF ni pe plk,, ape function..... Quote Share this post Link to post Share on other sites
NeoLogy 74 Report post Posted November 21, 2012 File stdio.h ni ada dalam include folder dlm compiler punya directory kalau xsilap. Selain tu ada macam-macam lagi macam math.h (untuk mathematic operation, log, square root, exponential ,etc.) Bergantung kepada compiler, ada yang gune pic.h, ada yang gune 16f877a.h, benda tu xde masalah pun. Boleh refer kat documentation. TRISA dan TRISB ni utk setting IO port sebagai input. Mane-mane bit yang 1 akan jadi input. Yang value 0 jadi output. Sbg contoh, port b ada 8 pin. (RB0-RB7). Bile kite set TRISB = 0xf0 , kita set RB4-RB7 sebagai input dan RB0-RB3 sebagai output. Aku assume ko tau pasal sistem nombor yg digunakan. (Hexadecimal, decimal dan binary) Hex : 0x12 Dec : 18 Bin : 0b00010010 Semua value ni mempunyai nilai yg sama. Dan tu jugak cara kita nak guna sistem nombor tu. Ape2 sistem nombor pn boleh digunakan. Quote Share this post Link to post Share on other sites
rahmat700 0 Report post Posted November 21, 2012 (edited) TRISA, TRISB = 0xf0 = MASIH XFAHAM LAGI AR,, [color=#ff0000]RB4-RB7 sebagai input dan RB0-RB3 sebagai output[/color] ni secara automatik ke RB4-3 jadi input n RB0-3 jadi output? aduhh nak kene bljar lgi sistem nombr,, allamak,, lupe2... include folder yg kite nak gune tu ada di mplabide atau datasheet pic tu kepe? input ni gunaya spt button switch, sensor n outpt spt led, motor,servo,buzzer,, betul x? pic16f877a ni aku tengok datasheet bnyak plk portnye ade port A,B,C,D,E Edited November 21, 2012 by rahmat700 Quote Share this post Link to post Share on other sites
NeoLogy 74 Report post Posted November 22, 2012 First ko kena faham IO Port tu..Untuk PIC16F877A dia ada Port A,B,C,D,E Port A,B,C ada 8 pin setiap satu..Port D ada 5 pin an Port E ada 3 pin. Setiap IO pin ni boleh jadi input atau output. Kita boleh set pada registers mengikut design kita. Input ada 2 jenis. Digital atau analog. Digital di sini bermaksud pin tersebut akan membaca logic input. Sekiranya voltage high (3.3v~5V), maka logic dia TRUE (1). Kalau voltage bawah daripada itu, logicnya FALSE (0). Untuk analog signal pulak, pic boleh membaca voltage. Tetapi nilai voltage ni akan melalui satu modul ADC (Analog-Digital Converter). Boleh pilih 8bit atau 10bit dengan set pada register. Tapi ni complicated sket sebab dia ada calculation skit. Untuk beginner, tumpu pada digital input dulu. Dah mahir, baru pergi kepada analog input. output pulak logic pada pin sama ada TRUE atau FALSE. Logic ni kita boleh set pada port yang kita nak. Untuk makluman la, pic ni microcontroller. So dia cuma control signal. Ko tak boleh pasang direct dc motor atau led. Sebab benda ni akan draw current yang tinggi. Boleh merosakkan pic. Kalau nak smbung, mesti buat pull up/down resistor kat led. DC motor lak kena ada motor driver. Psal TRISA dan TRISB yang ko tak faham tu, aku tunjukkan 3 contoh guna sistem nombor yang berlainan tetapi result dia sama. Sebelum tu ko kena tahu Port A ada RA0,RA1,RA2,RA3,RA4,RA5,RA6 dan RA7. [code]TRISA = 0b00010010 ;[/code] Ini adalah sistem binary. LSB (less significant bit) yang sebelah kanan dan MSB (most significant bit) yang sebelah kiri sekali. LSB start pada bit 0 dan MSB pada bit 7. Bit 0 adalah RA0, bit 4 adalaha RA4, dan Bit 7 adalah RA7. (Ko faham setakat ni?) Berdasarkan code di atas, value bit 1 dan bit 4 adalah 1 dan yang lain adalah 0. Jadi, bit yang valuenya 1 akan jadi input dan bit yang valuenya 0 akan jadi output. [code]TRISA = 0x12;[/code] Code ni sama je dengan di atas. Cuma dia guna sistem nombor hexadecimal. Kalau convert hex kepada bin, value dia sama. Macam mana nak tukar? Amik calculator casio fx-570MS. Tekan MODE 2 kali pastu tekan nombor 3. Tekan butang ^, masukkan nombor hex. Tekan butang =. Pastu tekan butang "log". nak convert ke decimal, tekan butang x[sup]2[/sup] [code]TRISA = 18;[/code] pun sama dengan di atas. Cuma menggunakan sistem nombor decimal. Quote Share this post Link to post Share on other sites
rahmat700 0 Report post Posted November 22, 2012 [color=#ff0000]TRISA = 0b00010010 ;[/color] [color=#ff0000]Ini adalah sistem binary. [/color][color=#0000ff]LSB (less significant bit) yang sebelah kanan[/color][color=#ff0000] dan [/color][color=#008000]MSB (most significant bit) yang sebelah kiri sekali[/color][color=#ff0000]. LSB start pada bit 0 dan MSB pada bit 7. Bit 0 adalah RA0, bit 4 adalaha RA4, dan Bit 7 adalah RA7. (Ko faham setakat ni?)[/color] = [color=#ff0000]TRISA = 0b[/color][color=#008000]0001001[/color][color=#0000ff]0[/color] yg aku hijaukn tu MSB ke? yg biru tu lsb ke? b tu ape,, kene ade ke.. bit 4 n bit 7 tu yg ade nombor 1 kan?bace dari kiri ke kanan or sebalaiknye...? [color=#000000]0b ..tu pe plk?[/color] Quote Share this post Link to post Share on other sites
NeoLogy 74 Report post Posted November 22, 2012 Ob ni menunjukkan nombor tu dlm sistem binari. 0x lak menunjukkan nombor tu dlm sistem hexadecimal. Dalam binari, bit 0 bermula dari sebelah kanan sekali. Bit 0 tu dikenali sbg LSB. Dan bit yg terakhir (tak kisah la 7 ke..32 ke..janji last bit) dipanggil MSB. Last bit sahaja. Clear?! so, urutan bit bermula dari kanan ke kiri..dari bit 0 ke last bit. Nak bagi senang nmpak, kita biasanya guna sistem binari. Kita boleh nmpk setiap bit atau pin accordingly. Kalau kita nk set pin RA5 sebagai input, kita just set bit 5 kepada 1. [Code]TRISA = 0b00110010;[/code] Quote Share this post Link to post Share on other sites
rahmat700 0 Report post Posted November 23, 2012 ok faham,, bab ni,, seterusnye,, TRISB = 0xFF; kenape/ ape itu ff,,, n kalau gune sis no hex camni,, mcm mane nak tau input n outputnye? Quote Share this post Link to post Share on other sites
NeoLogy 74 Report post Posted November 23, 2012 Ni sistem nombor hex. O,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 0xFF = 0b11111111 = 255 Basically, cuma sistem nombor yg berubah. Value dia tetap sama. Kalau value 0xFF, maknanya semua bit (bit 0-bit 7) diset 1*. Maknanya semua pin pada port b adalah input. *rujuk hex to bin conversion Quote Share this post Link to post Share on other sites
rahmat700 0 Report post Posted November 23, 2012 kalau gune sistem hex kite xleh campur aduk inpt n output la,, ? Quote Share this post Link to post Share on other sites
NeoLogy 74 Report post Posted November 23, 2012 Boleh je..kalau nk set input pada pin 5 dan 7 sahaja, set la 0xA0.. Aku rasa better ko study number system dulu. Benda ni fundamental kepada digital system. Kalo xdpt catch up asas ni, memang susah ko nk faham Quote Share this post Link to post Share on other sites
rahmat700 0 Report post Posted November 23, 2012 [quote name='NeoLogy' timestamp='1353681829' post='1087008'] Boleh je..kalau nk set input pada pin 5 dan 7 sahaja, set la 0xA0.. Aku rasa better ko study number system dulu. Benda ni fundamental kepada digital system. Kalo xdpt catch up asas ni, memang susah ko nk faham [/quote] 0b10100000 betul x?/*-------Function prototype-------------*/ void delay( void ); void main( void ) { while(1) { RB0 != RB0; //blinking delay(); } } void delay( void ) { for(;; //do nothing } ape function void,,delay, n bahase2 lain nya? Quote Share this post Link to post Share on other sites
NeoLogy 74 Report post Posted November 24, 2012 Ni ko kena study c language la..untuk pic ni..dia panggil embedded c. Secara asasnya, sama je dgn c language lain. Bezanya cuma function dia lebih kepada embedded programming. Dlm embedded, xde printf atau scanf..xde function read file, write file. Dlm pic mmg ada memory, tapi nk write,kena tahu address..kena tahu size.. The best way nak blaja, kena study datasheet dan kena tahu basic electronic. Time diploma dulu aku blaja digital electronic. Byk membantu la utk aku paham pic. Quote Share this post Link to post Share on other sites
rahmat700 0 Report post Posted November 24, 2012 aduhh nak blaja cam ne,, xda rujukan,,, datasheet tu pic yg kite nak gune punye datasheet ke? Quote Share this post Link to post Share on other sites