اطلاعیه

Collapse
No announcement yet.

مشکل در راه اندازی تاچ

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در راه اندازی تاچ

    سلام
    من برای تاچ برنامه زیرو نوشتم

    کد:
    #include <mega16a.h>
    #include <stdlib.h>
    #include <delay.h>
    #include <alcd.h>
    unsigned int x,y;
    unsigned char x1[32],y1[32],j;
    unsigned int adc_data;
    #define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))
    interrupt [ADC_INT] void adc_isr(void)
    {
    adc_data=ADCW;
    }
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | ADC_VREF_TYPE;
    delay_us(10);
    #asm
      in  r30,mcucr
      cbr r30,__sm_mask
      sbr r30,__se_bit | __sm_adc_noise_red
      out mcucr,r30
      sleep
      cbr r30,__se_bit
      out mcucr,r30
    #endasm
    return adc_data;
    }
    unsigned int xpos (void)
    {
    unsigned int i=0,l=0;
    DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (1<<DDA3) | (0<<DDA2) | (1<<DDA1) | (0<<DDA0);
    PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (1<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
    for(j=1;j<11;j++)
      {
      l=read_adc(2);
      delay_ms(5);
      i=(i+l)/j;
      }   
    return i;
    }
    unsigned int ypos (void)
    {
    unsigned int q=0,w=0;
    DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (1<<DDA2) | (0<<DDA1) | (1<<DDA0);
    PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (1<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
    for(j=1;j<11;j++)
      {
      q=read_adc(3);
      delay_ms(5);
      w=(w+q)/j;
      } 
    return w;
    }
    void main(void)
    {
    
    ACSR=(1<<ACD);
    // ADC initialization
    // ADC Clock frequency: 62.500 kHz
    // ADC Voltage Reference: AVCC pin
    // ADC Auto Trigger Source: ADC Stopped
    ADMUX=ADC_VREF_TYPE;
    ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
    SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
    lcd_init(16);
    #asm("sei")
    while (1)
       {  
       lcd_clear();
       x=xpos();
       y=ypos();
       itoa(x,x1);
       itoa(y,y1);
       lcd_gotoxy(0,0);
       lcd_puts(x1);
       lcd_gotoxy(0,1);
       lcd_puts(y1);
       delay_ms(250);
       }
    }
    [/quote]
    و شماتیک هم بصورت زیر می باشد :


    الان وقتی که هیچ نقطه ای رو تاچ نکردیم هم یه مقداری رو نشون می ده
    لطفا کمکم کنید
    با تشکر

    راستی من با اهم متر مقاومت بین X- و X+ رو گرفتم حدود 400 اهم بود
    و بین Y_ و Y+ حدود 500 اهم بود
    در حالت عادی که هیچ نقطه ای رو تاچ نکردیم اینها نباید بی نهایت باشن؟؟

    #2
    پاسخ : مشکل در راه اندازی تاچ

    مشکلتون حل شد؟
    www.gam-co.blogsky.com

    دیدگاه


      #3
      پاسخ : مشکل در راه اندازی تاچ

      اره حل شدش. ممنون
      الان توی کالیبره کردنش موندم

      دیدگاه


        #4
        پاسخ : مشکل در راه اندازی تاچ

        پس لطفا بگید چیکار کردید؟ اگه ممکنه برنامتون رو هم قرار بدید.
        یکی از دوستان گفته بود از روش 9نقطه کالیبرش کرده. حالا روش 9 نقطه چیه نمیدونم!
        www.gam-co.blogsky.com

        دیدگاه


          #5
          پاسخ : مشکل در راه اندازی تاچ

          برنامه و شماتیک تو پست اول هستش
          برا من طبق اون داره کار می کنه

          دیدگاه


            #6
            پاسخ : مشکل در راه اندازی تاچ

            پس مشکلتون تو کجا بود؟
            www.gam-co.blogsky.com

            دیدگاه

            لطفا صبر کنید...
            X