Pic 16f84'te 3 saatlik zaman gecikmesi yaratmak için...

Başlatan ocomru, 25 Kasım 2013, 00:58:36

ocomru

Merhabalar.
Pic'te 3 saatlik zaman gecikmesi yapmak ardından port kontrolu yapmak  istiyorum. Bunun için;

int8 i;
int16 t;

#int_timer1
void timer_kesme()
         set_timer(63016);
         i++;
if(i==50)
        t++;
if(t==10800)
output_high(pin_b0);

yazsam olurmu ustalarım?
Bu kesme ile 3 saatlik zaman gecikmesi oluşurmu? Oluşursa şayet, sürekli 3 saat gecikmeli bir kod yazmam gerekiyor. Her 3 saatte bir step motor 45 derece sağa, 3 saat sonra 45 derece sola dönmesi gerekiyor.
Bu 3 saatlik gecikme her defasında tam 3 saatte olurmu? Yani, 1dk-2dk ileri ya da geri gitmeler olurmu her defasında? Bu konuda pic'e ya da kristale güvenilebilirmi?
Okuyan, kafa yoran yardımcı olan siz üstadlara çok teşekkür ederim.

pwm.c

http://elektronikprojeler.com/index.php/topic,4001.msg17486.html#msg17486
burada daha önce birisi için benzer bir uygulama hazırlamıştım.
12 saatte bir, 7,5 derecelik unipolar step motor 12 adım sağa dönüyor.
yazılımda ufak değişiklikler yaparak istediğin süreyi kolayca ayarlayabilirsin.
örneğin zaman=12; yazan yeri zaman=3; yaparsan bekleme 3 saat olur.
timer kesmesi ile hassas zamanlama yapılabilinir ve sapma payı çok düşüktür. senin sistem dahada hassas olacaksa mevburen RTC ilave etmelisin.
step motor adımları ise 0..3 arası sayıyor. sen bunu 4...7 arası saydırırsan ters yöne döner.
motorun dönme süresi ise ana zamanlamaya dahil değildir. eğer dahil etmek istersen kesmenin kapatıldığı fonksiyonu kaldırman yeterli.
umarım bu saydığım ilaveleri ekleyebilirsin.
işte uygulamanın dosyaları:
https://github.com/pwmccs/elektronik/raw/master/yemleme.zip
alternatif:
https://yadi.sk/d/e5L1qmEQ35bVnk

not: devreyi gerçekte denemedim.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

ocomru

Çok teşekkür ederim pwm.c
RTC demişsin ama sende kullanmamışsın. Timer kesmesi ile sanırım problem çıkmamış olacak.
45 derecelik tam dönüşü bir seferde yapan step motor varmıdır acaba?
Birde çok şey istemiyorsam, RTC ile basit yalnızca 1sn kontroluna örnek RTC'den saniye verisi almaya örnek, benim gibi RTC'yi bilmeyenler için küçük bir örnek ve satır sonlarına açıklamalı verebilirmisiniz?

Teşekkür ederim.

pwm.c

CCS içinde DS1302 kütübhanesi mevcut. bununla ilgili örnekleri inceleyebilirsin.
yapman gereken iş zor değil. zaman verilerini okuyup, beklemek istediğin süre ile toplamıyla karşılaştıracaksın.
burada karışık olan iş RTC nin zaman ayarları. aslında karışık değil fakat arttırıp azaltma sırasında sınırlar koymalısın.
örnek kod daha önce forumda vermiştim. istersen heryerde bulabilirsin yığınla uygulama var.
https://www.picproje.org/index.php/topic,46694.msg347076.html#msg347076

buarada, RTC yi çok uzun süreli zamanlamalarda yada saat yapımında kullanmalısın. kısa süreli uygulamalarda kesme yöntemi iş görür. ayrıca, bazı devrelerde PIC e 32.768 lik saat kristali bağlayıp hassas zamanlama yapanlarda var. buda ayrı bir yöntem.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-