اطلاعیه

Collapse
No announcement yet.

سوال در مورد وقفه های خارجی

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

    سوال در مورد وقفه های خارجی

    سلام
    من با میکروکنترلر ATMega32 یک شمارنده ساده نوشتم که وقتی سنسور سنس کرد یک واحد به شمارنده اضافه بشه و زمانی که به ست پوینت رسید خروجی یک رله فرمان بده و شمارشگر صفر بشه و متوقف بشه .
    متن برنامه اینه :
    کد:
    #include <mega32.h>
    #include <stdio.h>
    #asm
      .equ __lcd_port=0x18
    #endasm
    #include <lcd.h>
    int x=0,s=10;
    interrupt[EXT_INT0] void num0 (void){
      s++;
    }
    interrupt[EXT_INT1] void num1 (void){
      x++;
        if(x==s){
        x=0;
        PORTC.0=1;
        }
        else{
      PORTC.0=0;
      }
     }
    void main(void){
      char str[20];
      char str2[20];
      DDRA=0x00;//0000 0000
      PORTA=0x03;//0000 0011
      DDRC=0x01;//0000 0001 
      PORTC=0x00;
      GICR=0xC0;//1100 0000
      MCUCR=0x0F;//0000 1010
      #asm("sei")
      lcd_init(16);
      while(1){
        sprintf(str,"Number=%4d",x);
        lcd_gotoxy(0,0);
        lcd_puts(str);
        sprintf(str2,"SetPoint=%4d",s);
        lcd_gotoxy(0,1);
        lcd_puts(str2);
      }
    }
    حالا مشکلی که هست اینه که من وقفه خارجی را هر صورتی که تنظیم میکنم تا برق میکرو وصل میشه با سرعت بالا شروع به شمارش میکنه و زمانی که به 0 وصل میشه می ایسته .
    باید چیکارش کنم که هم حساس به لبه باشه(که در صورت سنس یک واحد به متغیر اضافه بشه) و هم زمانی که صفر شد وقفه رخ بده (ینی سنسور به زمین وصل باشه و هرگاه سنس کرد و 0 شد اضافه بشه . برعکس این الان داره اجرا میشه)
    ممنون میشم راهنمایی کنید.
    با تشکر

    #2
    پاسخ : سوال در مورد وقفه های خارجی

    منظورتون رو درست متوجه نشدم. اگه شماتیکشو میذاشتید و میگفتید چه سنسوری بهتر بود.
    حساس به چه لبه ای؟ پایین رونده یا بالا رونده؟
    www.gam-co.blogsky.com

    دیدگاه


      #3
      پاسخ : سوال در مورد وقفه های خارجی

      با تشکر از پاسخ
      سنسور که یک سنسور مغناطیسی الکترونیکیه.
      مثل یک کلید عمل میکنه
      که اگر کلید وصل شد و زمین شد یک واحد اضافه کنه
      برنامه در پروتئوس کار میکنه
      مشکل منم الان سنسور نیست
      مشکل اینجاست که وقتی پایه بازه و به جایی وصل نیست تند تند میشماره و وقتی که به زمین یا VCC وصل میشه متوقف میشه.
      حالا باز اینم میتونم با استفاده از سر normally close سنسور مشکلش را حل کنم
      مشکل اصلی اینه
      که تا سنسور وصل میشه
      به جای این که یک واحد به شمارنده اضافه بشه تا وقتی که وصله تند تند میشماره
      حساست مهم نیس به چه لبه ای باشه
      فقط میخوام با هر بار وصل شدن یک واحد اضافه بشه
      با تشکر
      اگه لازمه تا شبیه ساز پروتئوس را بزارم

      دیدگاه


        #4
        پاسخ : سوال در مورد وقفه های خارجی

        اینطور به نظر میاد که ورودی اینتراپت فلوته و تثبیت نشده
        یک مقاومت پول پ در ورودی int1 بذارید و سر دیگه سنسور رو به زمین وصل کنید
        ظاهرا باید حل بشه
        موفق باشید

        دیدگاه


          #5
          پاسخ : سوال در مورد وقفه های خارجی

          با تشکر از پاسخ شما ...
          هم وقفه 0 و هم 1 این مشکل را داره ...
          و اگه منظورتون اینه که مقاومت به صورت سخت افزاری قرار بگیره اینطوری هم تست کردم فایده ای نداشت ...

          دیدگاه


            #6
            پاسخ : سوال در مورد وقفه های خارجی

            همونطور که دوستمون گفتن با یه 10کیلو پایه int رو پول پ کنید. وقفه خارجیتون رو هم روی حالت لبه پایین رونده بذارید. اگه مشکل حل نشد احتمالا مشکل سخت افزاری دارید. بجای سنسورتون یه کلید بذارید ببینید مشکل حل میشه یا خیر. اگه بازم مشکلی بود برنامه و شماتیکتونو بذارید ببینیم ایراد از چیه.
            www.gam-co.blogsky.com

            دیدگاه


              #7
              پاسخ : سوال در مورد وقفه های خارجی

              سلام دوست من،
              اونطور که من مشکلتو متوجه شدم ،راه حلم اینه:
              تو بخش تنظیمات وقفه حالت حساسیت وقفه رو روی حالت any change بزار(تو کد ویزارد کدویژن کاملا واضحه)البته اگه میخوای هم موقع یک و هم صفر شدن یا حالت های بین اینا مقدار شمارندت تغییر کنه
              نکته:هیچ وقت یه پینو که ازش دیتا میگیری رو خالی نذار(تری استیت نکن)یا پول پ کن یا پول دان(بسته به خروجی سنسورت) که از وضعیتش با خبر باشی
              :rolleyes: :rolleyes:

              دیدگاه

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