اطلاعیه

Collapse
No announcement yet.

مشکل و سوال در مورد راه اندازی همزمانADC و تایمر

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

    مشکل و سوال در مورد راه اندازی همزمانADC و تایمر

    سلام خسته نباشید
    بنده یه برنامه دارم با سری Atmega32
    که از پایه adc میاد و 380 تا نمونه میگیره ( تو کمتر از 0.3 ثانیه زمان میبره). از Noise Reducer هم استفاده کردم .(بین هر نمونه گیری adc 1 میلی ثانیه delay هست)
    الان میخوام یه ساعت دیجیتال هم به برنامم اضافه کنم به طوری که مثلا فلان دکمه زده میشه ساعت فعلی رو تو lcd نمایش بده ...
    مشکلی بابت کد زدن و اینا ندارم چون درست زدن 1ثانیه با تایمر و اینا کار مقدماتیه ..
    مشکلم اینه که این ساعت دیجیتال باید زمانی هم که میکرو داره نمونه میگیره باید کار کنه .. و خود عمل نمونه گیری adc تا اونجایی که میدونم وقفه ایجاد میکنه تو سیستم کار میکرو . (اون 1 میلی ثانیه هم اجباریه برای adc) همین باعث میشه من زمانی که بخوام flag سر ریز تایمر رو بگیرم برای ثبت 1 ثانیه اشتباه بشه و تو زمان های طولانی فاجعه ...
    نمیدونم منظورمو درست تونستم بگم یا نه
    خلاصه اینکه خود adc تقریبا 0.3 ثانیه زمان میخواد و چون برنامه خط به خط اجرا بشه اصلا اون flag تایمر خطا میفته توش .

    سوالم اینه که آیا میشه این 2 تا رو همزمان داشت ؟ یا میکرویی که برا ساعت دیجیتاله به هیچ عنوان هیچی نمیشه بهش اضاف کرد ؟!
    پ.ن :پیشاپیش پیشنهاد RTC ندید که همون تایمره فقط کریستالش 32.768 کیلوعه ... ببخشید اگر طولانی شد متن سوال

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

    نوشته اصلی توسط l2qf نمایش پست ها
    سلام خسته نباشید
    بنده یه برنامه دارم با سری Atmega32
    که از پایه adc میاد و 380 تا نمونه میگیره ( تو کمتر از 0.3 ثانیه زمان میبره). از Noise Reducer هم استفاده کردم .(بین هر نمونه گیری adc 1 میلی ثانیه delay هست)
    الان میخوام یه ساعت دیجیتال هم به برنامم اضافه کنم به طوری که مثلا فلان دکمه زده میشه ساعت فعلی رو تو lcd نمایش بده ...
    مشکلی بابت کد زدن و اینا ندارم چون درست زدن 1ثانیه با تایمر و اینا کار مقدماتیه ..
    مشکلم اینه که این ساعت دیجیتال باید زمانی هم که میکرو داره نمونه میگیره باید کار کنه .. و خود عمل نمونه گیری adc تا اونجایی که میدونم وقفه ایجاد میکنه تو سیستم کار میکرو . (اون 1 میلی ثانیه هم اجباریه برای adc) همین باعث میشه من زمانی که بخوام flag سر ریز تایمر رو بگیرم برای ثبت 1 ثانیه اشتباه بشه و تو زمان های طولانی فاجعه ...
    نمیدونم منظورمو درست تونستم بگم یا نه
    خلاصه اینکه خود adc تقریبا 0.3 ثانیه زمان میخواد و چون برنامه خط به خط اجرا بشه اصلا اون flag تایمر خطا میفته توش .

    سوالم اینه که آیا میشه این 2 تا رو همزمان داشت ؟ یا میکرویی که برا ساعت دیجیتاله به هیچ عنوان هیچی نمیشه بهش اضاف کرد ؟!
    پ.ن :پیشاپیش پیشنهاد RTC ندید که همون تایمره فقط کریستالش 32.768 کیلوعه ... ببخشید اگر طولانی شد متن سوال
    نباید مشکلی باشه.
    چون من دارم استفاده میکنم با کلاک خود میکرو.

    ADC داره دما رو میخونه.
    کد ها فرمان میدن.
    پایه OCR1A و OCR1B هر دو که تامر 1 هست پالس PWM تولید میکنه.
    و تایمر 0 هم وظیفه زمان دستگاه رو داره.

    دقیق دقیق نیست. اما کار راه میوفته.(زمانی که دمای دستگاه بالا میره، تو 3-4 ساعت حدود 2 تا 3 دقیقه جابه جا میشه. اما حالت عادی خوبه)
    تنها مشکل من اینه که توی اجرای پروسم کلیدهام کند شدن.
    *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

    دیدگاه


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

      نوشته اصلی توسط l2qf نمایش پست ها
      سلام خسته نباشید
      بنده یه برنامه دارم با سری Atmega32
      که از پایه adc میاد و 380 تا نمونه میگیره ( تو کمتر از 0.3 ثانیه زمان میبره). از Noise Reducer هم استفاده کردم .(بین هر نمونه گیری adc 1 میلی ثانیه delay هست)
      الان میخوام یه ساعت دیجیتال هم به برنامم اضافه کنم به طوری که مثلا فلان دکمه زده میشه ساعت فعلی رو تو lcd نمایش بده ...
      مشکلی بابت کد زدن و اینا ندارم چون درست زدن 1ثانیه با تایمر و اینا کار مقدماتیه ..
      مشکلم اینه که این ساعت دیجیتال باید زمانی هم که میکرو داره نمونه میگیره باید کار کنه .. و خود عمل نمونه گیری adc تا اونجایی که میدونم وقفه ایجاد میکنه تو سیستم کار میکرو . (اون 1 میلی ثانیه هم اجباریه برای adc) همین باعث میشه من زمانی که بخوام flag سر ریز تایمر رو بگیرم برای ثبت 1 ثانیه اشتباه بشه و تو زمان های طولانی فاجعه ...
      نمیدونم منظورمو درست تونستم بگم یا نه
      خلاصه اینکه خود adc تقریبا 0.3 ثانیه زمان میخواد و چون برنامه خط به خط اجرا بشه اصلا اون flag تایمر خطا میفته توش .

      سوالم اینه که آیا میشه این 2 تا رو همزمان داشت ؟ یا میکرویی که برا ساعت دیجیتاله به هیچ عنوان هیچی نمیشه بهش اضاف کرد ؟!
      پ.ن :پیشاپیش پیشنهاد RTC ندید که همون تایمره فقط کریستالش 32.768 کیلوعه ... ببخشید اگر طولانی شد متن سوال
      سلام
      برای این کار 2 راه دارین:

      1. خواندن adc رو تو یه وقفه تایمر و شمارنده رو تو یه تایمر دیگه. پیشنهاد میدم وقفه هارو با 0.5 ثانیه تاخیر از هم فعال کنین تا احیانا به هم تداخل پیدا نکنن.

      2. چیپ های RTC هست مثل DS1307 , DS3231 ,و کلی چیپ مشابه دیگه که با ارتباطاتی مثل i2c , spi کار می کنن . راحت درایوراشونم هست برای کامپایلرا.
      مثلا این دو مدلی که گفتم با i2c کار می کنه. 0xD0 رو میفرستین. بعد 0 رو میفرستین . پروتکول رو ریست می کنین . بعد 0xD1 رو میفرستین بعد به ترتیب ثانیه و دقیقه و ساعت و روز و روز هفته و ماه و سالو میده تو یه رشته راحت و تر تمیز.
      با قطع برقم حافظش پاک نمیشه.
      برای تنظیم زمان 0xD0 رو میفرستین. بعد 0 رو میفرستین . پروتکول رو ریست می کنین . بعد 0xD0 رو میفرستین بعد به ترتیب دقیقه و ساعت و روز و روز هفته و ماه و سالو میدید بهش سیو می کنه
      دوستان اگر جاییشو اشتباه گفتم بفرمایید تا منم متوجه اشتباهم بشم
      ارزون هم هست در حد 12 تومانه ماژولش.

      دیدگاه


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

        از روشی که گذاشتم استفاده کن.

        جواب میده
        *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

        دیدگاه


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

          با درود
          اگه برای ساعت بجای خوندن FLAG از اینتراپت تایمر(OVERFLOW) استفاده کنین خیلی منطقی تره و کل مشکلتون حل میشه.
          در غیر اینصورت از دو متغیر برای اینکار استفاده کنید-یکی برای نگهداری مقدار رجیستر TCNT و دومی برای مقایسه متوجه شدن FLAG تایمر که با مقایسه این دو متغیر در هر لحظه که باشه میتونین رخ دادن FLAG رو بفهمین.

          دلیل: ادغام دو پست برای جلوگیری از اسپم

          نوشته اصلی توسط l2qf نمایش پست ها
          پ.ن :پیشاپیش پیشنهاد RTC ندید که همون تایمره فقط کریستالش 32.768 کیلوعه
          اگه نمیخواید از RTC استفاده کنید پس منظورتون از FLAG تایمر چیه؟؟
          نکته بعدی اینه که کریستال 32 کیلو و استفاده از تایمر خیلی بهتر از ماژول ساعته اینو چون تجربه کردم میگم چون من نه ایسی ساعت بدرد بخور پیدا کردم نه ماژول ساعت درست.هرچی خریدم همشون کلی زمان رو پس و پیش بهم نشون دادن.حالا شما از ماژول استفاده کنید اگه خوب بود که بهترین گزینه همین گزینست

          دیدگاه


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

            سلام با وقفه تامیر 1 انجامش دادم و موفقیت آمیز بود الان نزدیک 40 دقیقس گذاشتم کار میکنه با کرنومتر گوشی هم مقایسش کردم 1 ثانیه هم عقب جلو نرفته
            برا کسایی که بعدا اینو میخونن بدونن حالت noise cancel هم حتما فعال باشه .. بدون نویز کنسل فاجعه بود ..

            دیدگاه


              #7
              پاسخ : مشکل و سوال در مورد راه اندازی همزمانADC و تایمر

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

              دیدگاه

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