Professional Documents
Culture Documents
Cevre Birimleri
Cevre Birimleri
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 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
;***************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
'***************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
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
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