Tmr1 ve 4mhz ile yürüyen ışık yapılırmı

Başlatan carirt, 04 Ekim 2011, 17:34:54

carirt

arkadaşlar pic16f628a ile bu mümkünmü acaba

2 saattir uğraşıyorum komutları yerli yerine oturtamadım dahili saat osilatörü kullanarak (4mhz)

-Hasan-

Timer1 ile kesme üreterek, ana programdan bağımsız olarak ledlerin periyodik olarak yürütmesini mi istiyorsunuz? yoksa kesme kullanmadan gecikme oluşturmak için mi kullanacaksınız?

carirt

kesme kullanıcam tmr1 kesmesiyle başlayan alt programdada olur veya ana programdada olur örneğin 5 er saniye aralıklarla nasıl yakıp söndürürüz 5 sn lik zama gecikmesi nasıl yaparım bir örnek olsa gerisini getiririm

tmr1 pır pıe saklayıcılarını kullanıyorum

benim sorunum örneğin 5 sn lik zaman gecikmesi nasıl olur

amacım bunu 4mhz lik dahili osilatörle başarmak

carirt

bana 4mhz de tmr1 ile 5sn zaman gecikmesi olmaz gibi geliyo ama

-Hasan-

#4
Kesme Aralığı = Timer Prescaler * Tosc * Timer ' in Sayacağı Sayı

En Yüksek Timer1 Presacaler = 1/8
Timer1 ' in Sayacağı En Yüksek Sayı = 65536
Tosc = 1 uS

Kesme Aralığı = 8 * 1 * 65536
Kesme Aralığı = 524288 uS = 524,288 mS

Timer1 ile yapabileceğiniz en yüksek gecikme 524,288 mS ' dir. Siz 5000 mS istediğiniz için, Timer1 kesmelerinde, bir sayaç saydırmanız gerekir (kesme geldiğinde 1 arttırılacak).  Siz 5000 mS için yaklaşık 10 tane sayması gerekir. Saydırdığınız sayaca SAYAC dersek:

Kesme Programına Gelip SAYAC ' ı 1 Arttırdığınızda:

SAYAC = 10 ise SAYAC ' ı sıfırlayıp istediğiniz işlemi yapıp kesmeden çıkarsınız.
SAYAC = 10 değil ise direkt kesmeden çıkarsınız.

Ekleme:
Aynen dediğin gibi. :)

carirt

dediğin şekilde deniycem demek istediğini anladım

carirt

#6
UĞRAŞMAYA DEVAM EDİYORUM

carirt

Alıntı yapılan: carirt - 04 Ekim 2011, 18:44:22
      LIST P=16F628A
      INCLUDE   P16F628A.INC
    __CONFIG  _INTOSC_OSC_NOCLKOUT      & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _CP_OFF & DATA_CP_OFF
   
;----------------------------------------------------------
           
SAYAC      EQU            H'20'
           ORG            H'0000'
           GOTO           BASLA
           
           ORG            H'0004'
           GOTO           KESME

BASLA     
           CLRF           PORTB
           BANKSEL        TRISB
           CLRF           TRISB
           BSF            PIE1,0                ;TMR1 TAŞMA KESMESİ AKTİF
           BANKSEL        PORTB
           BSF            INTCON,7
           BSF            INTCON,6
           BCF            T1CON,1
           BSF            T1CON,0
           BSF            T1CON,5         ;FREKANS BÖLME DEĞERİ 1/8
           BSF            T1CON,4         ; FREKANS BÖLME DEĞERİ 1/8       
     
           MOVLW          D'0'
           MOVWF          TMR1H
           MOVLW          D'0'
           MOVWF          TMR1L
           
           




KESME
           INCF           SAYAC,F
           MOVLW          D'255'
           SUBWF          SAYAC,W
           BTFSS          STATUS,2
           GOTO           CIK
           CLRF           SAYAC
           BSF            PORTB,0
CIK         
           BCF            PIR1,0         ;TMR1 BAYRAĞINI SIFIRLADIM
           RETFIE
           END
           

ŞÖYLE Bİ PROGRAM YAZDIM LED SANİYEDE 5-6 SEFER YANIP SÖNÜYOR  NİYE ÖYLE OLDUĞUNU ANLAMADIM

bigbey

#8
;*****************************************

		LIST		P=16F628
		INCLUDE		"P16F628.INC"
		__CONFIG	_INTRC_OSC_NOCLKOUT & _CP_ALL & _WDT_OFF & _LVP_OFF & _MCLRE_OFF
		ERRORLEVEL	-302
		ERRORLEVEL	-306
;********************************************************************************************************
		CBLOCK		0x20
		SAYAC,W_SAVE,S_SAVE,P_SAVE,SAYAC1
		ENDC
;********************************************************************************************************
SAYIM	EQU		.8		;BU SAYI ARTTIKCA ZAMAN ARTACAKTIR

;*****************************************
		ORG		0x00
		GOTO		SETUP
		ORG		0x04
		GOTO		INTER
		RETFIE

TABLO
		ADDWF		PCL,F
		RETLW		B'00000000'	
		RETLW		B'00000001'	
		RETLW		B'00000010'	
		RETLW		B'00000100'	

;*****************************************
INTER
		BTFSC		INTCON,T0IF
		GOTO		SAY
		RETFIE
SETUP

		MOVLW		0x07
		MOVWF		CMCON
		BSF			STATUS,5
		MOVLW		B'10000111'
		MOVWF		OPTION_REG
		CLRF		TRISB
		BCF			STATUS,5
		CLRF		PORTB
		MOVLW		B'10100000'
		MOVWF		INTCON
		MOVLW		.4
		MOVWF		SAYAC
		MOVLW		SAYIM
		MOVWF		SAYAC1
;*****************************************	
MAIN
		;BURADA İSTEDİĞİN BAŞKA İŞLEMLERİ YAPABİLİRSİN
		NOP

		GOTO		MAIN




SAY
		BCF			INTCON,T0IF
		DECF		SAYAC1
		MOVFW		SAYAC1
		BTFSS		STATUS,Z
		RETFIE 



		DECF		SAYAC,F
		MOVFW		SAYAC
		MOVLW		.4
		BTFSC		STATUS,Z
		MOVWF		SAYAC
		MOVFW		SAYAC
		CALL		TABLO
		MOVWF		PORTB
		MOVLW		SAYIM
		MOVWF		SAYAC1
		RETFIE 

		END


tmr0 ile yapıldı.

çıkış bilgileri tablodan alınıyor. Tablo kullanımının örnek olması için yapılmıştır.
TA6R

carirt


BU ŞEKİLDE ÇALIŞMASI LAZIM LED SANİYEDE 5-6 SEFER YANIP SÖNÜYOR YANİ GECİKME OLMUYOR


     LIST P=16F628A
      INCLUDE   P16F628A.INC
    __CONFIG  _INTOSC_OSC_NOCLKOUT      & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _CP_OFF & DATA_CP_OFF
   
;----------------------------------------------------------
           
SAYAC      EQU            H'20'
           ORG            H'0000'
           GOTO           BASLA
           
           ORG            H'0004'
           GOTO           KESME

BASLA     
           CLRF           PORTB
           BANKSEL        TRISB
           CLRF           TRISB
           BSF            PIE1,0     ;TMR1 TAŞMA KESMESİ AKTİF
           BANKSEL        PORTB
           BSF            INTCON,7   ;BÜTÜN KESMELERE İZİN VER
           BSF            INTCON,6   ;ÇEVRESEL KESMELERE İZİN VER
           BCF            T1CON,1    ;DAHİLİ OSİLATÖRDEN SAYACAK
           BSF            T1CON,0    ;TMR1 İ ÇALIŞTIR
           BSF            T1CON,5    ;1/8 frekans bölme
           BSF            T1CON,4    ;1/8 frekans bölme
       
           MOVLW          D'0'
           MOVWF          TMR1H
           MOVLW          D'0'
           MOVWF          TMR1L
           
           




KESME
           INCF           SAYAC,F
           MOVLW          D'255'
           SUBWF          SAYAC,W
           BTFSS          STATUS,2
           GOTO           CIK
           CLRF           SAYAC
           BSF            PORTB,0
CIK         
           BCF            PIR1,0  ;TMR1IF KESME BAYRAĞINI SIFIRLADIM
           RETFIE
           END

BU ŞEKİLDE ÇALIŞMASI LAZIM LED SANİYEDE 5-6 SEFER YANIP SÖNÜYOR YANİ GECİKME OLMUYOR
           

carirt

benim çıkardığım sonuç  4 mhz dahili osilatör ile 1 saniyede yaklaşık olarak 2 kesme yapıyor ondan dolayı zaman gecikmeleri düzgün çalışmıyor

kesmeden çıkarken kesmeye girmeye çalışıyor pic sapıtıyor

dahili osilatörle zaman gecikmesi yapan varsa burda paylaşırsa sevinirim

carirt


bigbey

TA6R