16f877a 0-100 sn sayıcı problemi

Başlatan AsHeS, 23 Ocak 2012, 07:50:04

AsHeS

Arkadaşlar kolay gelsin aşağıda ki bir devre yaptım 0-100 sn arası sayan teorik olarak hesapladığımda 25 saatte 1 sn yapması gerekiyor fakat isiste çalıştırıp kronometre ile baktığımda 1. sn den itibaren arada ki fark açılmaya başlıyor açıkçası ben pek anlayamadım neden böyle olduğunu yardımlarınız için şimdiden teşekkür ederim .
[IMG]http://img16.imageshack.us/img16/5571/sayg.jpg[/img]

LIST P=16F877A
	INCLUDE"P16F877A.INC"
	__CONFIG h'3F31'
SAYAC1 EQU h'20'
SAYAC2 EQU h'21'
BIRLER_BAS EQU h'22'
ONLAR_BAS EQU h'23'
ara1 equ h'24'
ara2 equ h'25'
hex_yuksek equ h'26'
hex_dusuk equ h'27'
w_GEC equ h'24'	
status_GEC equ h'25'
	ORG h'00'
RESET
	goto BASLA
	ORG h'04'
	goto ASIL
BASLA
	banksel TRISB
	movlw h'00'
	movwf TRISB
	movlw b'10000101'
	BANKSEL OPTION_REG
	movwf OPTION_REG
	BCF STATUS,5
	BCF STATUS,6
	clrf BIRLER_BAS
	clrf ONLAR_BAS
	clrf ara1
	clrf ara2
	movlw b'10100000'
	movwf INTCON
	movlw h'3e'
	movwf hex_yuksek
	movlw h'09'
	movwf hex_dusuk
	goto GOSTER
GOSTER
	movlw b'00100000'
	iorwf BIRLER_BAS,w
	movwf PORTB
	call GECIKME
	movlw b'00010000'
	iorwf ONLAR_BAS,w
	movwf PORTB
	call GECIKME
	goto GOSTER
ASIL

	movwf w_GEC
	swapf STATUS,w
	movwf status_GEC
	swapf status_GEC,f
	tstf hex_yuksek
	skpnz
	goto CIK
	decfsz hex_yuksek,f
	goto CIK
	movlw h'3d'
	movwf hex_yuksek
	movlw h'09'
	addwf hex_dusuk,f
	skpnc
	incf hex_yuksek,f
	btfss INTCON,T0IF
	goto CIK
	bcf STATUS,2	

	incf BIRLER_BAS,f
	movf BIRLER_BAS,w
	sublw d'10'
	btfss STATUS,2
	goto CIK
	clrf BIRLER_BAS
	bcf STATUS,2
	
	incf ONLAR_BAS,f
	movf ONLAR_BAS,w
	sublw d'10'
	btfss STATUS,2
	goto CIK
	clrf ONLAR_BAS
	
CIK
	bcf INTCON,T0IF
	swapf status_GEC,w
	movwf ara1
	swapf ara1,w
	movwf STATUS
	swapf w_GEC,w
	movwf ara1
	swapf ara1,w
	
	RETFIE
		
	
GECIKME
	MOVLW h'0A'
	MOVWF SAYAC1
DONGU1
	MOVLW h'ff'
	MOVWF SAYAC2
DONGU2
	DECFSZ SAYAC2,F
	GOTO DONGU2
	DECFSZ SAYAC1,F
	GOTO DONGU1
	RETURN
	END

Mucit23

isis de böyle problemler olabiliyor. Gerçekte devreyi kurup dene. Eğer yine problem varsa en doğru sonucu bulana kadar kalibrasyon yaparsın.

Kabil ATICI

isis gerçek zamanda simülasyon yapamıyor. Asıl önemlisi bu programın işlemci üzerinde nasıl davranacağı.
ambar7

camby

16f877A'nın simülasyonunda sorun çıkmıyordu. Diğerlerinde olanlar var. Gerçi bu durum versiyonlara göre değişiklik de gösterebilir.

1 saniyeni nasıl kurguladın , hangi timer 'ı nasıl kullandın ?

fahri-

kronometre ile kontrol değil de isis in kendi zaman sayacı var. ondan neden kontrol etmiyorsunuz? xtal frekansınız tam ise isisdeki zaman sayacı ile gerçek zaman aynı olur.

AsHeS

Alıntı yapılan: fahri- - 23 Ocak 2012, 17:36:06
kronometre ile kontrol değil de isis in kendi zaman sayacı var. ondan neden kontrol etmiyorsunuz? xtal frekansınız tam ise isisdeki zaman sayacı ile gerçek zaman aynı olur.
İsis de nerede bu sayaç bilmiyorum ?


AsHeS

#6
Alıntı yapılan: ambar7 - 23 Ocak 2012, 10:36:27
isis gerçek zamanda simülasyon yapamıyor. Asıl önemlisi bu programın işlemci üzerinde nasıl davranacağı.
Alıntı yapılan: Mucit23 - 23 Ocak 2012, 09:32:36
isis de böyle problemler olabiliyor. Gerçekte devreyi kurup dene. Eğer yine problem varsa en doğru sonucu bulana kadar kalibrasyon yaparsın.
Sağolasınız üstadlar fakat gerçek ortama geçiş yaparken birkaç küçük sıkıntı yaşıyorum şu anda (programlayıcıda arıza oluştu :) ).

AsHeS

#7
Alıntı yapılan: camby - 23 Ocak 2012, 17:27:37
16f877A'nın simülasyonunda sorun çıkmıyordu. Diğerlerinde olanlar var. Gerçi bu durum versiyonlara göre değişiklik de gösterebilir.

1 saniyeni nasıl kurguladın , hangi timer 'ı nasıl kullandın ?
Timer0 la kurguladım  3D sayısının farklı ortalamalarını alarak yaptım 29 saniyede bir 09'lar üst üste toplandığında elde bitini oluşturuyor bu oluşan elde bitini 3D sayısına ekliyorum böylece ortalama zamanı tutturuyorum.Zaman kayması yaşanıyor yine de fakat teoriye göre 25 saatte 1 sn kayıyor bana normal geldi bunu saate uyarlayacağım o yüzden soruyorum bu hata normal midir ?

Kabil ATICI

timer içindeki bütün dörgü gecikmelerini hesapladın mı? Kesme içindeki gecikmeler gerçekten baya karışık geldi.
Zamanlamanın kesinleşmesini istiyorsan  kesmeyi mümkün olduğu kadar kısa tut. Bir bayrak ata. Bu bayrağı kullan.
Hatta sen timer içine giriyorsun dolanıp duruyor ve çıkarkende tekrar çalıştırıyorsun. Buradaki hesap seni şaşırtabilir.
ambar7

AsHeS

Alıntı yapılan: ambar7 - 23 Ocak 2012, 18:51:25
timer içindeki bütün dörgü gecikmelerini hesapladın mı? Kesme içindeki gecikmeler gerçekten baya karışık geldi.
Zamanlamanın kesinleşmesini istiyorsan  kesmeyi mümkün olduğu kadar kısa tut. Bir bayrak ata. Bu bayrağı kullan.
Hatta sen timer içine giriyorsun dolanıp duruyor ve çıkarkende tekrar çalıştırıyorsun. Buradaki hesap seni şaşırtabilir.
Hocam timer0 ın her bir artışı 64 us bir oluyor benim orada kullandığım en fazla 100-200 komut bu arada kesme gelmesi çok zor fakat bilmediğim bir nokta var timer0 kesme bayrağı sıfırlamasamda saymaya devam ediyor mu eğer saymaya devam etmiyorsa büyük ihtimal hesabım yanlış eğer saymaya devam edip kesmeye izin vermiyorsa timer0 ın en fazla 5 saymasında komutların bitmiş olması gerekiyor hesabı ona göre yapmıştım zaman için nasıl bir döngü kullanabilirim hatası az olan aydınlatırsanız sevinirim :)

fahri-

isis de şemanın en altında sayaç var. cpu load var. görmüyormusun?

AsHeS

Alıntı yapılan: fahri- - 23 Ocak 2012, 21:08:51
isis de şemanın en altında sayaç var. cpu load var. görmüyormusun?
farketmemişim sağolun

AsHeS

Arkadaşlar yeni konu açmak istemedim şöyle bir sorunum var konunun başında yazdığım kodu ve devreyi yaptım picten aldığım çıkışları bc237 e vererek 7 segmentlerin besleme bacağına anahtarladım fakat devre hiçbir şekilde çıkış vermiyor.Bende problemi tespit amaçlı led yakıp söndüren bir program yazdım o da isisde çalışıyor fakat gerçekte tık yok.Config ayarlarını en baştan kurcalamıştım programda öyle duruyordu.Yazdığım iki programdada config bitleri aynı kısacası elimde 2 tane 16f877a var ve hiçbirine birşey yaptıramadım.Programlayıcıyı test etmek için ayrıca 12f675 ile led yakıp söndüren bir program daha denedim ve çalıştırdım(Programlayıcım PK2 klonu).Yardımlarınız için şimdiden teşekkür ederim.

fahri-


AsHeS