Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Timers ve Interrupts

Başlatan NEINSTEIN, 06 Haziran 2013, 13:46:33

NEINSTEIN

Merhaba arkadaşlar birisi bana çok rica etsem küçük ve anlaşılır bir timer ve interrupt örneği verebilirmi ?
Çok sayıda tutorial okudum fakat anlaşılır bir örnek bulamadım.
18F4620 ile adc ile potansiyometerden okuduğum değeri lcd ye ve bluetooth üzerinden android e yolluyorum fakat bu değer sürekli gidiyor bunu örnek vermek gerekirse 100 ms de bir yapmak istiyorum.(adc set kısmını koymadım ,Aşağıdaki code kusursuz bir şekilde çalışıyor.)
benim sadece bilmek istediğim bu "value = Read_ADC();" yi interrupts ve timer kullanarak programın akışını bozmadan nasıl 100 ms de bir okuyacağım.Küçük bir port örneği ilede verseniz olur.Çok Teşekkürler şimdiden.

char* returnedValue;
   char* retValue;
unsigned int16 value;
 while(true)
  {
   value = Read_ADC();
  if(kbhit())
  {
  returnedValue = (char*)getc();
  }
  if(returnedValue!='')
  {
  retValue = (char*)value;
  printf(lcd_putc,"\fLDR:%4ld",value);
  printf("%4ld",value);
  delay_ms(100);
  }
  else
  {
  putc('z');
  delay_ms(100);
  }}

justice_for_all

#1
int az=0;

#int_TIMER1
void timer1_interrupt(void)
{ 
   set_timer1(60532);
 
   read_adc(adc_start_only);
}
#int_AD
void  AD_isr(void) 
{

   az=read_adc(6);

}

void main()
{

   
   setup_adc_ports(AN0_TO_AN3|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_16);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);

   enable_interrupts(INT_TIMER1);
   enable_interrupts(int_AD);
   enable_interrupts(GLOBAL);
   set_tris_b(0x00);
   set_tris_h(0x00);

   set_timer1(60342);

   set_adc_channel(0);

   

     while(1)
   {
      
   
   }
}



en yalını bu şeklde olur.
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

NEINSTEIN

Yanıt için teşekkür ederim fakat gerçekten interruptlar üzerinde zorlanıyorum yani verilen örnek çok komplike geldi diyebilirim.Multi threading olmadığı için timer interruptlarda sıkışıp kaldım daha yalın bir örnek mevcutmudur acaba ?Teşekkürler.

justice_for_all

en yalını yukarıda duzelttiğim şekilde olur.
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

NEINSTEIN

Hocam eline , emeğine sağlık çok teşekkürler.