İşlemci komut mu kaçırıyor?

Başlatan pisisik44, 27 Eylül 2010, 14:02:43

pisisik44

void RTCISR(void)__irq
{
	if(ILR & 0x01)
	{
		IOPIN0 = SEC << 16;

		if(changedMinute != MIN)
		{
			IOPIN0 = 0x00800000;
			changedMinute = MIN;
		}
		else
			IOPIN0 |= 0x00400000;
	}

	ILR = 0x01;
	VICVectAddr = 0x00000000;
}


Keil'ın MCB2130 kitini kullanıyorum. Üzerinde ise LPC2138 işlemci var. Derleyici olarak uVision3 kullanıyorum. Sorunum ise RTC kullanarak her saniyede led yaktırıyorum. Saniye kaç ise ona denk gelen 16lık düzende led yanıyor. Fakat bir süre sonra işlemci sayarken ledi yakmıyor. Mesela 1, 2, 3 yakıyor 4 iken yakmıyor ama 5 iken yakarak devam ediyor. Bazen hiç sıkıntı olmadan devam ediyor. Bazen de birkaç led birden atlıyor. Bunun nedeni nedir acaba?

Yardımlarınız için teşekkür ederim.  :)
"Hikmet mü'minin yitik malıdır. Nerede bulursa alsın."  Sevgili Peygamberimiz Hz. Muhammed (S.A.V)

MC_Skywalker

ben arm konusda tecrübeli değilim ama mcu xtal seçimi PLL konfigürasyonu ile ilgili bir sıkıntı ola blirimi?

PROTECH_

interrupt ları kontrol ettinmi ?
Multi-Core ,RTX,ThreadX, FreeRTOS, MODBUS  RTOS - Electronic-Hardware -- BERLIN

pisisik44

Interruptları kontrol ettim. Onlarda bir sıkıntı yoktu. Fakat geçen gün şunu farkettim. PLLFEED dizisini 0xAA-0x55 olarak değil de 0x55-0xAA olarak yapmışım. Sanırım sorun ondan kaynaklanıyordu, şimdilik deneme imkanı bulamadım. Ama bugün içinde denersem sonucu yazarım buraya.

Yardımlarınız için teşekkür ederim. :)
"Hikmet mü'minin yitik malıdır. Nerede bulursa alsın."  Sevgili Peygamberimiz Hz. Muhammed (S.A.V)

pisisik44

Programı attım içine ve yaklaşık yarım saattir takılı halde duruyor. Düzgün bir şekilde çalışıyor artık. Sadece PLLFEED dizisini yanlış yazmıştım, onu değiştirdim ve sorun çözüldü. :)
"Hikmet mü'minin yitik malıdır. Nerede bulursa alsın."  Sevgili Peygamberimiz Hz. Muhammed (S.A.V)

X-Fi

hocam dışardan kristal mi kullanmadınız yoksa prescaler hesaplaması ile mi saat clock elde ediyorsunuz kitinizde?
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

pisisik44

void InitRTC(void)
{
	PREINT = 0x0727;			// (PCLK / 32768) - 1 = PREINT
	PREFRAC = 0x0701;			// PCLK	- [(PREINT + 1) * 32768] = PREFRAC   THIS TWO REGISTERS SET 32768 HZ FREQ.
	CIIR = 0x03;				// INTERRUPT GENERATES AT EVERY SECOND AND MINUTE
	SEC = 0x00;					// SECOND IS ZERO
	MIN = 0x00;					// MINUTE IS ZERO
	AMR = 0xFC;					// UNMASKED REGISTERS FOR SECOND AND MINUTE INTERRUPT
	CCR = 0x01;					// RTC USE INTERNAL CLOCK AND IS ENABLE

	VICVectCntl3 = 0x0000002D;	// SELECT RTC INTERRUPT
	VICVectAddr3 = (unsigned)RTCISR;
	VICIntEnable |= 0x00002000;	// ENABLE RTC INTERRUPT
}


RTC için ayrı kristal vardı ama prescale kullanarak RTC yi çalıştırdım.
"Hikmet mü'minin yitik malıdır. Nerede bulursa alsın."  Sevgili Peygamberimiz Hz. Muhammed (S.A.V)

X-Fi

hocam benim şüpelerim var bu hesaplama dönüşümleri sırasında lojik kapı geçikmeleri olabileceği üzerine. Acaba daha hassas bir test yapmanız mümkünmüdür saniye kesmesiyle çalışan bir kronomotre yazıp birkaç gün sonunda kristale göre kayma olacakmı merak ediyorum. Eğer öyleyse prescale sadece basit uygulamalar için kullanılabilir diyeceğim.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

pisisik44

Haklı olabilirsiniz. Çünkü şu anda karta tekrar baktığım zaman yaktığı ledler sapıtmaya başladı. Gene birer ikişer atlıyorlar.   ???

Sanırım kristal kullanarak denemeliyim, hemen şimdi deniyorum. Ama daha fazlası için şimdilik fazla zamanım yok.
"Hikmet mü'minin yitik malıdır. Nerede bulursa alsın."  Sevgili Peygamberimiz Hz. Muhammed (S.A.V)

X-Fi

tamam sonuçlarınızı bekliyorum ;)
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

pisisik44

Programı değiştirdim ve şu anda kitin üstündeki 32768 Hz lik kristali kullanıyor. Bakalım şimdilik düzgün çalışıyor ama yarım saat sonra ne olacak göreceğiz.
"Hikmet mü'minin yitik malıdır. Nerede bulursa alsın."  Sevgili Peygamberimiz Hz. Muhammed (S.A.V)

pisisik44

#11
Kendi kristalinde 1 saat civarıdır mükemmel şekilde çalışıyor, herhangi bir problem çıkmadı çok şükür. :)

Çalışmaya devam ediyor. Anlaşılan kendi kristali ile en iyi şekilde çalışıyor.
"Hikmet mü'minin yitik malıdır. Nerede bulursa alsın."  Sevgili Peygamberimiz Hz. Muhammed (S.A.V)

MC_Skywalker


X-Fi

hocam çalışmayı sapıtması doğru değil ben sadece zaman kayması varmı onu merak ediyorum kristal kadar düzgün çalışacakmı diye ancak bahsettiğiniz led atlamaları başka bi sorundan kaynaklanıyor olmasın aralarında uçurum fark olmamalı prescale ile 38.768 kristalin sapıtma dediğiniz tam olarak nedir.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

pisisik44

#14
Prescale kullandığım zaman belli bir süre (yaklaşık 10-30 dakika arası) sonunda (konu içerisinde attığım kodları görebilirsiniz) saniyeye bağlı kesme oluşuyor, bu kesmede kimi zaman ledi yakıyor, kimi zaman yakmıyor ama RTC düzgün çalışıyordu. Fakat kendi kristali olan 32768 Hz lik kristali kullandığımda 2-3 saat civarı böyle bir olaya denk gelmedim. İş yerinden çıkarkende çalışır halde bıraktım ki, o da aynı hatayı yapıyor mu göreyim dedim.

Yani durum bundan ibaret. :)



Bugün sabah iş yerime gelip baktığımda hala tıkır tıkır çalışıyordu. Bilgilerinize  ;D
"Hikmet mü'minin yitik malıdır. Nerede bulursa alsın."  Sevgili Peygamberimiz Hz. Muhammed (S.A.V)