Etiket arşivi: RTC Task

RTC Task: Periodic Update

Kullanıcı programı RTC verisini sürekli ekranda gösterecekse yapması gereken minimum işler:



  /// RTC baslatilmasi:
  case 2:
   RTC.status = RTC_TASK_INIT_RTC;
   devicestatus++;
  break;

  /// RTC basladi mi, surekli guncelleme thread'ini sal
  case 3:
   if (RTC.busy == 0)
   {
      RTC.lock = 0;
      tick = 0;
      tickcounter = 0;
      devicestatus++;
   }
  break;

  /// surekli saat guncellemesi:
  case 4:
   if (RTC.itemstatus > 1)
   {
       if (LCD.busy == 0)
       {
         LCD.command = LCD_TASK_PRINTRTC;
         RTC.itemstatus = 0;
        }
       }
  break;

RTC.itemstatus, RTC Thread’i çipten her güncelleme yaptığında 1 artar. Bunu her okumam sonrası sıfırlayarak thread’in okuması ile senkron bir güncelleme yaptırabilirim.
RTC.lock = 1 yaparak istediğim bir anda güncelleme sayacını duraklatabilirim. (Zamana kritik bir iş yapacaksam)
RTC.busy flag’ini sorgulayarak RTC erişimi olmayan bir anda thread’i başka bir işleme atlatabilirim (ayar yapma, kalibrasyon, yeniden başlatma, anında değer okuma)