You are on page 1of 7

Bu yaz Bilim ve Teknik Dergisi Ocak 2005 saysnda yaymlanmtr.

M KRO LEMC LER N EVRE B R MLER N N KULLANILMASI Robotlarn beyinleri olan ve nceden programlanm ynetim ve karar mekanizmalarn ieren mikroilemciler birok farkl birimden olumaktadrlar. Bu birimler aritmetik mantk birimleri(ALU), bellek, giri k portlar ve yazmalar ile birlikte eitli alt evresel birimlerdir. Bu evresel birimlerden bazlar zamanlayclar, kesme mekanizmalar, analog-dijital eviriciler (ADC), PWM ve seri haberleme birimleri(UART) olabilmektedir. Bu ayki yazmzda mikroilemcilerin sahip olduu nemli evre birimlerinin kullanlmas ve bu birimlerle neler yaplabileceimiz konusunda eitli uygulamalarmz olacak. Sizlerle zamanlayc alt birimini kullanarak bir saat ve analog-dijital evirici birimini kullanarak ta bir pil test cihaz uygulamas yapacaz.

ekil 1: Piyasada bulunabilen eitli PIC mikroilemciler

Kesme evre Biriminin kullanlmas:


Kesmeler, mikroilemcilerin ani cevap vermesi gereken baz zel durumlarda kullanlan mekanizmalardr. Bu durumlar mikroilemcinin RB0/INT pininin deerinin deimesi, seri porttan bir bilgi alnmas, yada zamanlayclardan birisinin tam (overflow) olmas olabilir. Kullanlan mikroilemci trne ve byklne bal olarak kesme durumlarnn says ve eidi deiebilir. Herhangi bir kesme olmadn zaman bir mikroilemci normal olarak kendi ana program zerinde srekli bir dng halinde alr ve hibir duraksama olmaz. Bir kesme olutuunda ise mikroilemci kesmeyi fark eder, ana programn almasn durdurur ve o kesmeye zel alt program (interrupt routine) altrmaya balar. Bu alt programda oluan kesme durumu analiz edilir ve bu durum karsnda mikroilemcinin nasl bir tepki vermesi gerektii tanmlanr. Kesmenin analiz edilmesi gereklidir nk birden fazla kesme tr bulunduu iin mikroilemcimizin bunlardan hangisine tepki vermesi gerektii nceden belirtilmelidir. Kesme alt program tamamlandktan sonra mikroilemci tekrar ana program dngsnde kald yerden devam etmeye balar.

ekil 2: RB0/INT pininin deerinin deimesi ile ilgili kesme uygulamas.

ekil 2deki devre emasnda mikroilemcinin RB0/INT pininin deerinin deimesi ile tetiklenen kesme mekanizmas kullanlmtr. Kesme adl buton mikroilemcinin RB0/INT pinine, LED_RUN adl LED PORTB.7 pinine, LED_KESME adl LED ise PORTB.6 pinine balanmtr. Kesme olmadnda sadece LED_RUN yank durumda, LED_KESME ise snk durumdadr. Kesme butonuna basldnda ise bir kesme oluur ve mikroilemci kesmenin tanmland ksmdaki kodu altrlmaya balar. Bu ksmda ise bu sefer LED_RUN sndrlr ve LED_KESME yanmaya balar. Mikroilemciye yklenecek PICBASICPRO(PBP) kodu ise u ekildedir. ;*********KESME.BAS*******
LED_RUN VAR PORTB.7 LED_KESME VAR PORTB.6 TRISB = %00111111 OPTION_REG = %10000000 On Interrupt Goto KESME INTCON = %10010000 PORTB = 0 ANADONGU: HIGH LED_RUN LOW LED_KESME GOTO ANADONGU DISABLE KESME: LOW LED_RUN HIGH LED_KESME PAUSE 500 INTCON.1 = 0 RESUME ENABLE END

Zamanlayc evre Biriminin kullanlmas:


PIC mikroilemcilerin tmnde TIMER0 zamanlaycs bulunmaktadr. Bu zamanlayc bizden bamsz olarak geri planda srekli alr. Zamanlayc 8 bitliktir. Yani maksimum alabilecei deer 255 tir. 4 MHz lik bir osilatrn kullanldn varsayarsak TIMER0 her 1 mikrosaniyede bir artar ve 256 mikrosaniye de bir baa dner. Bu zamanlayc sre amna uradnda INTCON yazmacnn 2.biti 1 olur. Eer TMR0 kesmesi etkinletirilmi ise bu bir kesme oluturur. TIMER0n en gzel olan yan leklendirilebilmesidir. Yani zamanlaycnn art aralklar deitirilerek kesme sresi uzatlabilir yada ksaltlabilir. TIMER0 2,8,16,32,64,128 ve 256 ile leklemek olanakldr. rnek olarak eer biz TIMER0 256 ile leklersek, 256x256 yani 65.535 mikrosaniyede bir kesme gerekleecektir. TIMER0n leklendirilmesi OPTION_REG yazmacyla yaplmaktadr. TIMER0 zamanlaycsn ve TMR0 kesmesini kullanarak kolaylkla dijital gstergeli bir saat yapabiliriz. ekil 3 teki devre emasn kullanarak yapacamz devrede eer mikroilemcimize aadaki SAAT.BAS balkl PICBASIC kodunu yklersek saatimiz almaya hazr olacaktr. Bu kod TIMER0 sayacn her 16.384 milisaniyede bir sre amna urayacak ekilde yaplandrr ve sre amnda da kesme rutinini altrr. Kesme rutini ise her 61 almasnda saniyeyi bir artrr (61x16384 yaklak 1 saniyeye eittir). Artan saniyeler 60 olduunda dakika deikeni, artan dakikalar 60 olduunda da saat deikeni bir artar. Daha sonra bu deikenler uygun formatta LCD display ekranna yazlr.

;***************SAAT.BAS**************** PAUSE 250 SAAT VAR BYTE DSAAT VAR BYTE DAKIKA VAR BYTE SANIYE VAR BYTE TICKS VAR BYTE UPDATE VAR BYTE SAAT=0: DAKIKA=0: SANIYE=0: TICKS=0: UPDATE=1 OPTION_REG = %00000101 INTCON = $A0 ON INTERRUPT GOTO KESME ;TIMER0 LEKLEME = 1/64 ;TIMER0 KESMES ETK N ;KESME ADRES

ANADONGU: IF UPDATE = 1 THEN LCDOUT $FE,1 ;EKRANI TEM ZLE DSAAT = SAAT ;SAAT 12L K S STEME EV R IF (SAAT // 12) = 0 THEN DSAAT = DSAAT + 12 ENDIF IF SAAT < 12 THEN ;DEERLER LCD EKRAINA YAZ LCDOUT DEC2 DSAAT, ":", DEC2 DAKIKA, ":", DEC2 SANIYE, " AM" ELSE LCDOUT DEC2 (DSAAT - 12), ":", DEC2 DAKIKA, ":", DEC2 SANIYE, " PM" ENDIF UPDATE = 0 ENDIF GOTO ANADONGU: DISABLE KESME: TICKS = TICKS + 1 IF TICKS < 61 THEN DEVAM ;TICK LER 61 OLURSA SAN YEY ARTIR TICKS = 0 SANIYE = SANIYE + 1 ;SAN YELER 60 OLURSA DAK KAYI ARTIR IF SANIYE >= 60 THEN SANIYE = 0 DAKIKA = DAKIKA + 1 IF DAKIKA >= 60 THEN ;DAK KALAR 60 OLURSA SAAT ARTIR DAKIKA = 0 SAAT = SAAT + 1 IF SAAT >=24 THEN SAAT = 0 ENDIF ENDIF UPDATE = 1 DEVAM: INTCON.2 = 0 RESUME END ;GNCELLEME TAMAMLANDI ;KESME BAYRAINI TEM ZLE

ekil 3: LCD gstergeli dijital saat devre emas.

Analog-dijital evirici evre biriminin Kullanlmas:


Analog-dijital evirici alt birimi birok mikroilemcide bulunan alt birimlerden biridir. Bu birimi kullanarak mikroilemcimizin d dnyadaki analog sinyalleri anlamasn salayabiliriz. ou mikroilemci 10 bitlik znrlkle analogdan dijitale evirim yapabilmektedir. Bu da eer 5Vluk bir gerilim kayna kullanrsanz, 4.88 mVluk bir hassasiyete eittir. Bu uygulamada kullanacamz PIC16F877 mikroilemcisinde 8 ayr analog kanal vardr. Baka bir deyile 8 farkl analog sinyali birden takip edebilirsiniz. rnein kanallardan birine scaklk sensr, dierine basn sensr, bir dierineyse nem sensr balayarak kk bir meteoroloji istasyonu kurabilirsiniz. Yapabileceiniz uygulamalar sizin hayal gcnze bal. Fakat biz sadece tek bir kanal kullanarak basit bir kalem pil test cihaz uygulamas yapacaz. Bu uygulamada ekil 4teki devre emasn kurmamz ve gerekli PBP kodunu mikroilemcimize yklememiz gerekiyor

ekil 4: Pil test cihaz devre emas.

'***************ANALOG.BAS ***************** DEFINE ADC_BITS 10 ;ADC ZNRL 10 BIT DEFINE ADC_CLOCK 0 ;ADC CLOCK = OSCILLATOR / 2 DEFINE LCD_DREG PORTC DEFINE LCD_DBIT 0 DEFINE LCD_RSREG PORTC DEFINE LCD_RSBIT 4 DEFINE LCD_EREG PORTC DEFINE LCD_EBIT 5 ADC_DEGERI VAR WORD GERILIM VAR WORD TRISA = %1111111 ADCON1 = %10000010 ANADONGU: ADCIN 0, ADC_DEGERI GERILIM = ADC_DEGERI*48/10 LCDOUT $FE,1, #GERILIM, "mV " IF GERILIM < 1500 THEN LCDOUT $FE,$C0, "BOS" ELSE LCDOUT $FE,$C0, "DOLU" ENDIF PAUSE 250 GOTO ANADONGU ;LCD TANIMLANMASI

;GEREKL DE KENLER ; PORTANIN TAMAMI G R ;ADC AIK ;PORTA.0 DAN GER L M DEER N OKU ; M L VOLTA EV R ;LCD EKRANINA YAZ ;ALT SATIRA GE ;DEER 1500 mV TAN KKSE BO ;BYKSE DOLU YAZ ; LMLER ARASINDAK BEKLEME

Seri Haberleme evre Biriminin Kullanlmas:


ki mikroilemci arasnda yada bir mikroilemci ile bir bilgisayar arasnda data transferi yapmann en kolay yolu RS-232 arayzn kullanmaktr. RS-232 arayz sadece iki adet iletken kablo kullanarak 10 metre mesafe ierisinde seri asenkron veri transferini mmkn klar. Eer kullanacamz mikroilemci seri haberleme evre birimini(UART) ierisinde bulunduruyorsa RS-232 arayzn kolaylkla kullanabiliriz.

ekil 5: RS-232 seri haberleme uygulamas deve emas.

Yapacamz uygulamada kullanacamz mikroilemci olan PIC16F877 UART birimine sahiptir. Bu arabirim ayn TIMER0da olduu gibi geri planda seri veri alverii yaparken, PIC ana program zerinde almaya devam eder. Bizim btn yapmamz gereken, hazrlayacamz program senaryosunda belli aralklarla uygun PBP komutlarn (HSERIN ve HSEROUT) altrmaktr. ekil 5teki devre emasnda bir bilgisayar ile PIC16F877 mikroilemcisi arasnda kurulmu bir seri haberleme uygulamas gsterilmitir. Mikroilemcinin seri haberleme giri-klar RS-232 seviyesinde olamad iin bunlar direkt olarak bilgisayarn seri portuna balayamayz. Mikroilemci klarn bilgisayara balamadan nce uygun RS-232 gerilim seviyelerine dntrmemiz gerekir. Bu sebepten dolay bu uygulamada MAX232 adl RS-232 seviye evirici entegresi kullanlmtr. Bu entegre mikroilemcinin k seviyesi olan TTLden RS-232ye ve RS-232den de TTLye gerilim dntrmelerini yapabilmektedir. Seri haberleme uygulamamzda mikroilemcimize yklenecek olan program UART.BAS adl PBP kodudur. Bu programda seri porttan bilgi almak iin HSERIN, seri porta bilgi gndermek iin ise HSEROUT komutlar kullanlmtr. Programmzn yapt ie gelince; programmz seri porttan gelen bilgiyi srekli dinlemekte, eer gelen bilgi X ise bunun ardndan gelen bilgiyi BILGI adyla kaydedip bilgisayara seri port zerinden tekrar gndermektedir. PC tarafnda ise veri gndermek ve almak iin Hyperterminal programn kullanabiliriz. Bu uygulama iin hyperterminal oturumunu COM1 zerinden, 2400 bps(bits per second) hznda, 8 veri biti ve 1 dur biti eklinde amalsnz. Alan terminal ekrannda gndermek istediiniz veriyi klavyeden tulayarak girebilirsiniz.
'****************UART.BAS ************** BILGI VAR BYTE TRISC = %10111111 ;PORTC G R IKILARI AYARLANIYOR SPBRG = 25 ;BAUD RATE 2400 Bps RCSTA = %10010000 ;SERI PORT B LG ALIMI AKT F TXSTA = %00100000 ;SERI PORT B LG GNDER M AKT F ANADONGU: HSERIN [WAIT("X"), BILGI] HSEROUT [DEC BILGI] PAUSE 200 GOTO ANADONGU ;X DEER N BEKLE, ;X TEN SONRA GELEN B LG Y SAKLA ;BU B LG Y ASCII FORMATINDA TEKRAR GNDER ;DENEMELER ARASINDAK BEKLEME

PWM evre Biriminin Kullanlmas:


Mikroilemcilerde bulunan bir dier evresel birim PWM (Pulse Width Modulation) yada darbe genilik modlasyonu birimidir. Bu birim sayesinde dijital sinyaller analog sinyallere dntrlebilmektedir. PWM birimine sahip bir mikroilemci PWM sinyalini retebilmek iin belirli bir pini kullanr. rnek olarak, bu pin PIC 16F628te PORTB.3 tr. PWM birimi altrldnda mikroilemcinin ilgili pininden, nceden belirlenen bir frekansta bir kare dalga sinyali gnderilir. Bu sinyalin +5 V (i yapma aral) ta ve 0 V (bekleme aral) ta kalma sreleri deitirilerek ilgili pindeki gerilim de deitirilmi olur. Eer i yapma aral ve bekleme aral birbirine eitse k ana gerilimin %50 si olacaktr. Baka deile de %50lik bir Duty Cycle retilmi olur. PBPda PWM birimini kullanarak sinyal retmek iin kullanlan komut HPWM komutudur. Kullanl ise HPWM kanal,Dutycycle,Frekans eklindedir. Burada kanal PICin zerinde ki birinci yada ikinci PWM kanal olabilir. Dutycycle k sinyalinin gerilimidir. 8 bitliktir ve deeri 0 ile 255 arsnda deitike k gerilimi de 0 V ile +5 V arasnda orantl olarak deiir. PWM birimini kullanarak ve uygun elektronik devrelerle PWM kn glendirerek rahatlkla bir lambanm parlakln deitirebilir yada bir elektrik motorunun dn hzn ayarlayabilirsiniz.

Aadaki kod mikroilemcinin birinci PWM kanalndan, 2000 Hz frekansnda ve 127/255 = %50 lik dutycycle ile bir sinyal retir. k gerilimi 5/2 = 2.5 Volt olur. HPWM 1,127,2000 Yardm ve destek iin http://robot.metu.edu.tr/forum adresi altndaki foruma ileti yazabilirsiniz. Dzeltme: Aralk ayndaki yazmzda devre emasnda bulunan R14 adl 4 Kohmluk direncin deerinin yanl yazld ve 1 Kohm olmas gerektii anlalmtr.

Kaynaklar: Odt Robot Topluluu sitesi Microchip, 16F84A Sata Sheet Microchip, 16F628A Sata Sheet Microchip, 16F87X Sata Sheet Hyperterminal Program : : : : : http://www.robot.metu.edu.tr http://www.microchip.com http://www.microchip.com http://www.microchip.com http://www.hilgraeve.com

Adm Adm PICmicro PROGRAMLAMA, Yaar BODUR INFOGATE Yaynlar, 2002 PICBasic Pro ile PICmicro Programlama, Yaar BODUR INFOGATE Yaynlar, 2002

Hazrlayan: mer AYIRPUNAR ODT Robot Topluluu ODT Bilgisayar ve retim Teknolojileri Eitimi 4.Snf e-posta : omercayir@yahoo.com

You might also like