sleep komutu

Başlatan behcet.3, 13 Kasım 2013, 10:36:00

behcet.3

Merhaba;
yaptığım devre normalde çalışıyor sleep 10 komutunu koyduğum zaman saatlerce de beklesem devre çalışmıyor.nedeni ne olabilir.

est32

bir ara sleep komutu kullanmak istemiştim sonra vazgeçtim. Yanlış hatırlamıyorsam işlemcinin sleepten çıkabilmesi için WDT ya da dış kesme açık olması gerekiyor. pbp de denemedim ama proton eğer WDT kapalı iken sleep komutu girilirse ikaz veriyor "WDT kapalı işlemci uykudan asla uyanamayacak" diye. Hatırladığım kadarı ile işlemci ya wdt ile ya da harici kesme ile uyanacak. WDT kullanmak da ayrı bi maharet, yazılımda sürekli belli zaman aralıklarıyla wdt'yi clear tmek gerekiyor. Uyku durumunda bu nasıl oluyor bilemiyorum hiç kullanmadım belli sürelerde uyanıp tekrar mı sleep yapıyor acaba, bir bilen bundan bahsederse ben de öğrenmiş olurum.

ete

Bu konuda daha öncede mesaj yazdığımı sanıyorum.
Basic de iki türlü Sleep kullanılabiliyor. Birincisi Basic'in kendi Sleep komutu ki yanına eklediğin parametre saniye cinsinden bekleme süresini belirler. Komut ile birlikte işlemci düşük akım moduna girer ve parametrede belirlenen süre sonunda otomatik olarak çıkar. Komut açıklamasında bu sistemin WDT kullandığı belirtilmiş ancak WDT ın açık olması gerektiği açıklanmamış. Fakat benzer şekilde kullanılan NAP komutu da WDT kullanır denilmiş ve şayet WDT enable değilse işlemci uykuya dala bir daha uyanmaz denilmiş. Muhtemelen  "Sleep SN" komutunda da WDT açık olması zorunlu. Birde o şekilde deneyin.

Ben genelde Assmbly komutu olan SLeep kullanırım. Bu komut işlemciyi uykuya sokar ve ancak bir kesme oluşursa uykudan uyanır. Kullanım şekli "@ Sleep" şeklindedir.

Yeri gelmiş iken NAP komutundan da bahsedeyim. Standart sürelerde işlemciyi uykuya sokar. WDT üzerinden çalışır ve kendi dahili RC osilatörünü kullanır. Süreler takribidir. Komut kullanım şekli NAP Peryot  şeklindedir. Peryot değişkeni 0- 7 arasında değer alır. Değer göre uykuya dalma süreleri şöyledir.
0 = 18 ms
1 = 36 ms.
2 = 72 ms
3 = 144 ms
4 = 288 ms
5 = 576 ms
6 = 1152 ms
7 = 2304 ms

Ete

behcet.3

wdt açık olarak denediğimde de reset atıyor.NAP komutunu deniyecem.Hocam birde Assmbly komutuyla yazılmış bir örnek verebilirmisiniz.


wdt on

main:
high led
nap 3
low led
nap 3
goto main

ete

Assembly komutu ile örnek nasıl vereyimki? nerede uykuya sokman gerekiyor ise ,orada sadece ;
@ Sleep
yazman yeterli oluyor. Ancak uykudan uyandırma işlemi kesme ile oluyor bu komutta bunu da açıklamış idim. Kesme olmadığı müddetçe işlemci uykuda kalır.

Ete

greatgonzo

Bir ara bende bunları denemiştim. WDT için bir şey eklemek isterim. Herzaman reset atmıyor onunda ayarları var ve sadece kesme uretiyor. Böylece değişkenler sıfırlnmıyor. Ayrıca wdt için uzun bir zaman belirler ve tımer1 sayacını çalıştırırsanız oda pıcı uyandırıyor. Herhalde bunlardan wdt kesmesi enerji acısından daha ekonomık ve ana osilatorden bağımsız. Yeni mcu larda wdt taşma zamanıda bır haylı uzun. Bence buna odaklan derim.

Ayrıca tımer1 ıcın harıcı osılator baglanabılıyor.O durumda @ sleep komutundan kesme ıle uyndırabiliyorsun.

Iyı çalışmalar...

behcet.3

greatgonzo basit örnek programın  varmı acaba??

Powered by EzPortal