belli süre sonunda ana ekrana dönme

Başlatan bunymert, 26 Ekim 2015, 23:08:23

bunymert

arkadaşlar bir menü programı ile uğraşıyorum.
1. giriş tuşuna basıp menü dallandığında herhangi bir süre bir butona basılmazsa ana ekrana nasıl döndürebilirim acaba.
2. devrede ntc sıcaklık sensörü var sensör devreye bağlanmayınca veya arızalandığında ekrana sensör arızalı yazdırmak istiyorum, yazdırıyorum da while (1) ile programı durduruyorum. durdurmazsam program çalışmaya devam ediyor . fakat sensörü tekrar taktığımda pici yeniden başlatmam gerekiyor. pici yeniden başlatmadan bu döngüyü nasıl sağlayabilirim
yardımcı olursanız sevinirim. teşekkürler.

Gökhan BEKEN

while (1){
   if(sensorTakildiMi==1)break;
}

ya da
while (!sensorTakildiMi);
Özel mesaj okumuyorum, lütfen göndermeyin.

Burak B

#2
Aşağı yukarı şöyle birşey işini görecektir.

/* Header kütüphanende tanımla. Yani [b]main.h, menu.h, v.s.[/b] içinde */
#define MENU_IDLE_TIMEOUT  5000  /* ms cinsinden olursa 5sn sonra */
...
/* Global olarak tanımla. Eğer export edilmesi gerekiyorsa header kütüphanende
    [b]extern[/b] tanımla. Ama sakın direkt header içerisinde tanımlama */
volatile uint8_t g_menu_lvl=0;
...
/* Main app veya menu task */
uint32_t menu_idle_tick= GetTickTimer(); /* menu icin idle zaman başlangıcı olarak şimdiki zamanı al. */
...
/* Main loop veya menu task v.s. */
while(1)
{
... 
 /* Ana menüde miyiz ve idle zaman üzerinden 5sn geçmiş mi ? */
 if (g_menu_lvl && (GetTickTimer()-menu_idle_tick>MENU_IDLE_TIMEOUT))
 {
     g_menu_lvl=0;
     menu_idle_tick=GetTickTimer(); /* Güncellemeyi unutma */
     /* Ana menüye dön */
    ...
 }
...
}
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

bunymert

yazdığınız kodlardan pek birşey anlamadım. sanırım bana göre baya bir ileri seviye. benimde ccs yi ilerletebilmem için  nasıl bir yol, nasıl bir kaynaktan yararlanmam gerekir. internetteki örnekler aşağı yukarı hep aynı ben pic programlamayı biraz daha geliştirmek istiyorum.
teşekkürler ilgileriniz için

dursuncemal

Alıntı yapılan: bunymert - 26 Ekim 2015, 23:08:23
arkadaşlar bir menü programı ile uğraşıyorum.
1. giriş tuşuna basıp menü dallandığında herhangi bir süre bir butona basılmazsa ana ekrana nasıl döndürebilirim acaba.
2. devrede ntc sıcaklık sensörü var sensör devreye bağlanmayınca veya arızalandığında ekrana sensör arızalı yazdırmak istiyorum, yazdırıyorum da while (1) ile programı durduruyorum. durdurmazsam program çalışmaya devam ediyor . fakat sensörü tekrar taktığımda pici yeniden başlatmam gerekiyor. pici yeniden başlatmadan bu döngüyü nasıl sağlayabilirim
yardımcı olursanız sevinirim. teşekkürler.

eger sensor yokken while in icine girebiliyorisen  while nin icinde'de sensoru okumaya devam et ve while girerken yaptigin sorguyu ordada yap sensoru takınca cıkacaktır kanimca.

menuden cıkmak icin de herhangi bir timerin interuptunu kullan; mesela tmr0 i 4ms  de tasacak sekılde kur

ikitane degiskenın olsun atyıyorum birine salise oburune menuden_cıkma zamanı dıyelim.

ana donguden once salise = 255; menuden cıkma = 5; diyelim

sonsuz dongunun icinde surekli   menuden cıkma = 5; de


iterruptin icine{

                      if(salise){salise--;}else{salise = 255; if(menuden_cikma){menuden_cikma--;}}// ana dongude sureklı menuden_cikma ya 5 atadigin icin  hic bir zaman sifir olmayacak.

                     }

simdi menude icinde kaldigin while in sartina sunu yazabilirsin;

while(menuden_cikma){  } // simdi dıkkat burda tus islemi yaparken ,menuden_cikma = 5; i unutma yoksa 5 saniye sonra dısarı cıkarsın sen menuden_cikma ya deger atmadıgın surece saniyede bir azalarak 0 bulunca bu fonksıyonu
kırmıs olacaksın


}

umarim yardimci olabilmisimdir

:=