اطلاعیه

Collapse
No announcement yet.

مشکلی در زیر روال وقفه....

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

    #16
    پاسخ : مشکلی در زیر روال وقفه....

    نه دوست عزیز اشتباه می کنید
    بلا فاصله بعد از فعال شدن اینترابت کلی وقتی به dly میرسید وارد روتین اینتراپت میشید
    حالا داخل روتین اینتراپت میشید و ایکس برایر صفر میشه دوباره بعد چنتا کد دوباره ایکس میشه یک!
    توی روتین اینتراپت هیچ گاه x برابر صفر از اینتراپت بیرون نمیاد ،برنامه رو تریس کنید متوجه میشید


    اضافه شده در تاریخ :
    وقتی داخل روال وقفه میشه متغیره x رو از دوباره برابر 0 قرار مبده نمونه برداریشو که انجام داد

    x=1 وقتی این کار رو انجام داد
    فکر کنم درک درستی از پوینتر میکرو ندارید
    ببینید واقتی پوینتر وارد روتین اینتراپت شد تا زمانی که اینتراپت تموم نشده از روتین خارج نمیشه.یعنی شما وقتی ایکس رو برابر صفر میکنی هیچ تاثیری توی حلقه وایل نداره چون اصلا وارد حلقه وایل نمیشه بعد از این که کدهای داخل روتین اینتراپت انجام شد و ایکس همون یک شد دوباره بر میگرده از داخل حلقه وایل کد رو ادامه میده

    اضافه شده در تاریخ :
    دوست عزیز با تاخیر دادن توی فرستنده برنامه کار میکنه
    به اندازه 1 ثانیه تاخیر بدید،نباید کار کنه.فایل شبیه سازیتونو به همراه سورسش پلود کنید بررسی کنم خدمتتون عرض میکنم.
    اسمم بابا برقیه می دونین کارم چیه دلم می خواد همه جا که با کمک شما
    مصرف برق کم بشه تا برقمون قطع نشه
    مصرف بی رویه کار خیلی بدیه موقع پخش کارتون برق تلویزیون
    اگه یه دفعه بره حوصله مون سر می ره
    هرگز نشه فراموش لامپ اضافی خاموش

    دیدگاه


      #17
      پاسخ : مشکلی در زیر روال وقفه....

      نوشته اصلی توسط بابا برقی
      نه دوست عزیز اشتباه می کنید
      بلا فاصله بعد از فعال شدن اینترابت کلی وقتی به dly میرسید وارد روتین اینتراپت میشید
      حالا داخل روتین اینتراپت میشید و ایکس برایر صفر میشه دوباره بعد چنتا کد دوباره ایکس میشه یک!
      توی روتین اینتراپت هیچ گاه x برابر صفر از اینتراپت بیرون نمیاد ،برنامه رو تریس کنید متوجه میشید



      اضافه شده در تاریخ :

      فکر کنم درک درستی از پوینتر میکرو ندارید
      ببینید واقتی پوینتر وارد روتین اینتراپت شد تا زمانی که اینتراپت تموم نشده از روتین خارج نمیشه.یعنی شما وقتی ایکس رو برابر صفر میکنی هیچ تاثیری توی حلقه وایل نداره چون اصلا وارد حلقه وایل نمیشه بعد از این که کدهای داخل روتین اینتراپت انجام شد و ایکس همون یک شد دوباره بر میگرده از داخل حلقه وایل کد رو ادامه میده


      اضافه شده در تاریخ :

      به اندازه 1 ثانیه تاخیر بدید،نباید کار کنه.فایل شبیه سازیتونو به همراه سورسش پلود کنید بررسی کنم خدمتتون عرض میکنم.
      //////////////////////////////////////////////////////////////////////////////////////
      نوشته اصلی توسط بابا برقی
      نه دوست عزیز اشتباه می کنید
      بلا فاصله بعد از فعال شدن اینترابت کلی وقتی به dly میرسید وارد روتین اینتراپت میشید
      :eek: :eek: :eek: :eek:
      نوشته اصلی توسط بابا برقی
      نه دوست عزیز اشتباه می کنید
      بلا فاصله بعد از فعال شدن اینترابت کلی وقتی به dly میرسید وارد روتین اینتراپت میشید
      حالا داخل روتین اینتراپت میشید و ایکس برایر صفر میشه دوباره بعد چنتا کد دوباره ایکس میشه یک!
      توی روتین اینتراپت هیچ گاه x برابر صفر از اینتراپت بیرون نمیاد ،برنامه رو تریس کنید متوجه میشید
      اگر عبارت x=0 از روتین وقفه بردارید هم بازم برنامه کار میکنه میتونید امتحان کنید

      من اینو تو پست قبل هم گفتم مقدار متغیر x از همان اول برنامه برابر 0 در نظر گرفته شده (شما یبار برنامه رو از اول تا اخر نگاه کن...)

      به این خاطر هم پس از اجرا شدن برنامه اگه سیگنالی دریافت نکنه عبارت no date ! نشون میده

      و قرار نیست که x با مقدار 0 از وقفه خارج بشه .....

      اینکه معلومه

      یعنی اگه بیاد برنامه دیگه درست کار نمیکنه بازم عبارت no date ! قرار میده ....
      نوشته اصلی توسط بابا برقی
      فکر کنم درک درستی از پوینتر میکرو ندارید
      به اندازه ای که بدونم وقتی تو روتین وقفه هستیم دیگه کاری با باقی اقسمت های برنامه نداریم تا وقفه مربوطه تموم بشه و برنامه از ادامه اخرین ادرس(قبل از ورود به روتین وقفه) ادامه پیدا کنه ..


      حالا من از شما یسوال دارم بنظرت با توجه به حرف های خودتون این برنامه با گرفتن سیگنال چطور کار مبکنه

      همش عبارن no date! نشون میده ...؟

      چی میشه....؟

      من میدونم برنامم چطور ران میشه میخوام ببینم شما چی برداشت کردی ؟

      البته اگه مایلید....

      دیدگاه


        #18
        پاسخ : مشکلی در زیر روال وقفه....

        :NO: :NO: :NO: :NO:

        شما یا صفر وارد پین میکنید یا یک!خواه سیگنال هدفتون باشه خواه نباشه درسته؟
        خوب حالا در هر حالت وقتی میکروتون روشن میشه وارد وقفه که بشه ایکس رو الکی صفر و دوباره یک میکنه و دیگه هیچ وقت صفر نمیتونه بشه.یعنی میشها ولی دوباره اخر اینتراپت صفر میشه.شما هرکاری کنی عبارت no data رو تو صفحه نخواهی داشت oo:
        واقعا سادست پیچیده به مساله نگاه نکنید.
        اسمم بابا برقیه می دونین کارم چیه دلم می خواد همه جا که با کمک شما
        مصرف برق کم بشه تا برقمون قطع نشه
        مصرف بی رویه کار خیلی بدیه موقع پخش کارتون برق تلویزیون
        اگه یه دفعه بره حوصله مون سر می ره
        هرگز نشه فراموش لامپ اضافی خاموش

        دیدگاه


          #19
          پاسخ : مشکلی در زیر روال وقفه....

          اگر عبارت x=0 از روتین وقفه بردارید هم بازم برنامه کار میکنه میتونید امتحان کنید
          دوست عزیز کدی که زدید ایراد زیاد داره و صحیح کار نمیتونه کنه.
          پروتئوس هم بهش هیج جای اعتماد نیست ،البته ابزار خوبی بره تست شاید باشه .
          شما سخت افزارش رو بساز یه عکس ارسال کن و شماتیک بزار من نرم افزارش رو کمکتون میکنم.
          اسمم بابا برقیه می دونین کارم چیه دلم می خواد همه جا که با کمک شما
          مصرف برق کم بشه تا برقمون قطع نشه
          مصرف بی رویه کار خیلی بدیه موقع پخش کارتون برق تلویزیون
          اگه یه دفعه بره حوصله مون سر می ره
          هرگز نشه فراموش لامپ اضافی خاموش

          دیدگاه


            #20
            پاسخ : مشکلی در زیر روال وقفه....

            نوشته اصلی توسط بابا برقی
            :NO: :NO: :NO: :NO:

            شما یا صفر وارد پین میکنید یا یک!خواه سیگنال هدفتون باشه خواه نباشه درسته؟
            خوب حالا در هر حالت وقتی میکروتون روشن میشه وارد وقفه که بشه ایکس رو الکی صفر و دوباره یک میکنه و دیگه هیچ وقت صفر نمیتونه بشه.یعنی میشها ولی دوباره اخر اینتراپت صفر میشه.شما هرکاری کنی عبارت no data رو تو صفحه نخواهی داشت oo:
            واقعا سادست پیچیده به مساله نگاه نکنید.
            اشتباه متوجه شدید...
            پاسخ تصویری.... :mrgreen:

            لطفا دوستانی که میخوتن متوجه بشن برن به این لینک
            http://www.aparat.com/v/YNOKC

            دیدگاه


              #21
              پاسخ : مشکلی در زیر روال وقفه....

              فیلم رو دیدم.
              شما یه زحمت بکش فایل شبیه سازی رو هم پدیت کن .
              اونم متن رو هم no data دیت معنی روز میده.
              البته ببخشید
              این خطوط از برنامه چرا اجرا نمیشه؟!
              [code=c]
              #asm("sei&quot
              lcd_clear();
              lcd_gotoxy(0,0);
              lcd_putsf("RC5-PROJECT"
              delay_ms(150);
              for(g=0;g<14;g++)
              {
              D[g]=0;
              }

              [/code]
              اسمم بابا برقیه می دونین کارم چیه دلم می خواد همه جا که با کمک شما
              مصرف برق کم بشه تا برقمون قطع نشه
              مصرف بی رویه کار خیلی بدیه موقع پخش کارتون برق تلویزیون
              اگه یه دفعه بره حوصله مون سر می ره
              هرگز نشه فراموش لامپ اضافی خاموش

              دیدگاه


                #22
                پاسخ : مشکلی در زیر روال وقفه....

                نوشته اصلی توسط بابا برقی
                فیلم رو دیدم.
                شما یه زحمت بکش فایل شبیه سازی رو هم پدیت کن .
                اونم متن رو هم no data دیت معنی روز میده.
                البته ببخشید :biggrin:
                ممنون میدونم :biggrin: :biggrin:

                دیگه میخواستم یچی نشون بده

                شما ببخش :biggrin: :biggrin:

                دیدگاه


                  #23
                  پاسخ : مشکلی در زیر روال وقفه....

                  نوشته اصلی توسط h.torabi
                  ممنون میدونم :biggrin: :biggrin:

                  دیگه میخواستم یچی نشون بده

                  شما ببخش :biggrin: :biggrin:
                  نه خواهش میکنم کلی گفتم در جریان باشی

                  البته یه نکته ای هم هست.من یه عذر خواهی بدهکارم
                  من تا الان فکر میکردم این روتین اینتراپت تایمره که نوشتید الان دیدم اینتراپتی که تعریف کردید مربوط به ext هست :biggrin:
                  من برنامه گیرنده ریموتای ask دزگیر ماشین رو می نوشتم کلا از تایمر استفاده میکردم این ذهنیتمم به خاطر اون بوده که فکر میکردم دارید از روتین تایمر استفاده می کنید. :biggrin: :biggrin: :biggrin:
                  اسمم بابا برقیه می دونین کارم چیه دلم می خواد همه جا که با کمک شما
                  مصرف برق کم بشه تا برقمون قطع نشه
                  مصرف بی رویه کار خیلی بدیه موقع پخش کارتون برق تلویزیون
                  اگه یه دفعه بره حوصله مون سر می ره
                  هرگز نشه فراموش لامپ اضافی خاموش

                  دیدگاه


                    #24
                    پاسخ : مشکلی در زیر روال وقفه....

                    [code=c]
                    {
                    if(x==1)
                    {
                    for(j=0;j<14;j++)
                    {
                    sprintf(str1,"DATE=%u N=%u",D[j],j);
                    lcd_clear();
                    lcd_gotoxy(0,0);
                    lcd_puts(str1);
                    delay_ms(150);
                    lcd_clear();
                    }
                    lcd_gotoxy(0,1);
                    lcd_putsf("finish"
                    delay_ms(150);
                    lcd_clear();
                    for(g=0;g<14;g++)
                    {
                    D[g]=0;
                    }
                    x=0;
                    MCUCR=0x02;
                    GICR=0x40;
                    GIFR=0x40;
                    }
                    else if(x==0)
                    {
                    lcd_clear();
                    lcd_gotoxy(0,0);
                    lcd_putsf("NO DATE !"
                    delay_ms(250);
                    }
                    [/code]

                    دوست عزیز این بخش از کدتون رو نگاه کنید
                    تو این بخش از کدتون شما گفتید دیتایی رو که دریافت کنه رو روی ال سی دی نمایش بده
                    بعدش گفتید کلمه finish رو نشون بده
                    بعدش مقدار d رو خالی کردید
                    و در ادامه گفتید مقدار ایکس رو صفر کنه
                    مشکل کدتون اینحاست
                    شما وثتی ایکس رو صفر میکنید میکرو ادامه میده و به
                    else if(x==0)
                    میرسه از اونجایی که این شرط else هم صحیح شد این وارد کدهای else میشه
                    ببینیدی شما داخله حلقه if شرطی رو طوری تغییر دادید که else اون هم درست میشه در نتیجه وارد حلقه
                    [code=c]
                    else if(x==0)
                    {
                    lcd_clear();
                    lcd_gotoxy(0,0);
                    lcd_putsf("NO DATE !"
                    delay_ms(250);
                    }
                    [/code]
                    میشه و عبارت no data مجدد به نمایش در میاد
                    اسمم بابا برقیه می دونین کارم چیه دلم می خواد همه جا که با کمک شما
                    مصرف برق کم بشه تا برقمون قطع نشه
                    مصرف بی رویه کار خیلی بدیه موقع پخش کارتون برق تلویزیون
                    اگه یه دفعه بره حوصله مون سر می ره
                    هرگز نشه فراموش لامپ اضافی خاموش

                    دیدگاه


                      #25
                      پاسخ : مشکلی در زیر روال وقفه....

                      نوشته اصلی توسط بابا برقی
                      [code=c]
                      {
                      if(x==1)
                      {
                      for(j=0;j<14;j++)
                      {
                      sprintf(str1,"DATE=%u N=%u",D[j],j);
                      lcd_clear();
                      lcd_gotoxy(0,0);
                      lcd_puts(str1);
                      delay_ms(150);
                      lcd_clear();
                      }
                      lcd_gotoxy(0,1);
                      lcd_putsf("finish"
                      delay_ms(150);
                      lcd_clear();
                      for(g=0;g<14;g++)
                      {
                      D[g]=0;
                      }
                      x=0;
                      MCUCR=0x02;
                      GICR=0x40;
                      GIFR=0x40;
                      }
                      else if(x==0)
                      {
                      lcd_clear();
                      lcd_gotoxy(0,0);
                      lcd_putsf("NO DATE !"
                      delay_ms(250);
                      }
                      [/code]

                      دوست عزیز این بخش از کدتون رو نگاه کنید
                      تو این بخش از کدتون شما گفتید دیتایی رو که دریافت کنه رو روی ال سی دی نمایش بده
                      بعدش گفتید کلمه finish رو نشون بده
                      بعدش مقدار d رو خالی کردید
                      و در ادامه گفتید مقدار ایکس رو صفر کنه
                      مشکل کدتون اینحاست
                      شما وثتی ایکس رو صفر میکنید میکرو ادامه میده و به
                      else if(x==0)
                      میرسه از اونجایی که این شرط else هم صحیح شد این وارد کدهای else میشه
                      ببینیدی شما داخله حلقه if شرطی رو طوری تغییر دادید که else اون هم درست میشه در نتیجه وارد حلقه
                      [code=c]
                      else if(x==0)
                      {
                      lcd_clear();
                      lcd_gotoxy(0,0);
                      lcd_putsf("NO DATE !"
                      delay_ms(250);
                      }
                      [/code]
                      میشه و عبارت no data مجدد به نمایش در میاد
                      خب این برای اینه که دیگه دیتایی نیست و باید چوری بشه که این عبارت نشون بده ....

                      و داره درست عمل میکنه...

                      این عبارت"NO DATA" تا زمانی نشون داده میشه که یک وقفه اتفاق بیهته و وقتی از وقفه خارج بشه

                      دیگه عبارت no data نشون نمیده

                      و میاد دیتا رو نشون مید وقتی کارش تموم شد چون دیگه دیتایی نیست در اخر x=0 قرار میده و این باعث میشه در ادامه برنامه
                      عبارت no date نشون داده بشه
                      و بازم تکرار...


                      ی خواهش.....

                      میشه برنامه گیرنده FSK بزارید ممنون میشم....

                      دیدگاه


                        #26
                        پاسخ : مشکلی در زیر روال وقفه....

                        اگر توی فیلم خوب نگاه کنید متوجه میشید زمانیکه دکمه روی فرستنده رو میرنم تمام دیتای دریافتی رو صفر نشون میده...

                        مشکل اینجاس :cry2: :sad:

                        دیدگاه


                          #27
                          پاسخ : پاسخ : مشکلی در زیر روال وقفه....

                          نوشته اصلی توسط h.torabi
                          خب این برای اینه که دیگه دیتایی نیست و باید چوری بشه که این عبارت نشون بده ....

                          و داره درست عمل میکنه...

                          این عبارت"NO DATA" تا زمانی نشون داده میشه که یک وقفه اتفاق بیهته و وقتی از وقفه خارج بشه

                          دیگه عبارت no data نشون نمیده

                          و میاد دیتا رو نشون مید وقتی کارش تموم شد چون دیگه دیتایی نیست در اخر x=0 قرار میده و این باعث میشه در ادامه برنامه
                          عبارت no date نشون داده بشه
                          و بازم تکرار...


                          ی خواهش.....

                          میشه برنامه گیرنده FSK بزارید ممنون میشم....
                          گیرنده ASK عرض شد که جناب اسدی تو سایت اونو قرار دادن .
                          اما خوب مساله شما مگه این نبود که میگفتید دیتا دریافتی اشتباها صفر دریافت میشه؟
                          الان مجدد دگمه ریموت رو میزنید کد رو دریافت میکنه؟ یعنی برای بار دوم به بعد...

                          اسمم بابا برقیه می دونین کارم چیه دلم می خواد همه جا که با کمک شما
                          مصرف برق کم بشه تا برقمون قطع نشه
                          مصرف بی رویه کار خیلی بدیه موقع پخش کارتون برق تلویزیون
                          اگه یه دفعه بره حوصله مون سر می ره
                          هرگز نشه فراموش لامپ اضافی خاموش

                          دیدگاه


                            #28
                            پاسخ : پاسخ : مشکلی در زیر روال وقفه....

                            نوشته اصلی توسط بابا برقی
                            گیرنده ASK عرض شد که جناب اسدی تو سایت اونو قرار دادن .
                            اما خوب مساله شما مگه این نبود که میگفتید دیتا دریافتی اشتباها صفر دریافت میشه؟
                            الان مجدد دگمه ریموت رو میزنید کد رو دریافت میکنه؟ یعنی برای بار دوم به بعد...
                            نه کلا اصلا همش دیتا رو 0 نشون میده

                            دیدگاه


                              #29
                              پاسخ : مشکلی در زیر روال وقفه....

                              نوشته اصلی توسط h.torabi
                              نه کلا اصلا همش دیتا رو 0 نشون میده
                              دوست عزیز یه مقدار گنگ گفتی ولی
                              این کدها رو هم اصلاح کن
                              [code=c]
                              x=0;
                              MCUCR=0x02;
                              GICR|=0b01000000;
                              GIFR=0x40;
                              [/code]

                              [code=c]
                              interrupt [EXT_INT0] void ext_int0_isr(void)
                              {
                              MCUCR=0x00;
                              GIFR=0x00;
                              GICR&=0b10111111;
                              [/code]
                              این کدها رو هم اصلاح کن انشا الله حل بشه
                              اسمم بابا برقیه می دونین کارم چیه دلم می خواد همه جا که با کمک شما
                              مصرف برق کم بشه تا برقمون قطع نشه
                              مصرف بی رویه کار خیلی بدیه موقع پخش کارتون برق تلویزیون
                              اگه یه دفعه بره حوصله مون سر می ره
                              هرگز نشه فراموش لامپ اضافی خاموش

                              دیدگاه


                                #30
                                پاسخ : مشکلی در زیر روال وقفه....

                                با عرض سلام
                                منم در روال وقفه مشکل دارم پس از نوشتن برنامه و اجرا از ابتدای کار وقفه اجرا میشود و با اعمال وقفه خارجی از وقفه خارج و به حلقه whileپرش میکند
                                یعنی دقیقا عکس عمل میکند

                                دیدگاه

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