NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 5157 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 17 از 17

موضوع: مشکل با تایمرها در atmega8

  1. #1
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    Icon16 مشکل با تایمرها در atmega8

    با سلام به همگی

    من یه برنامه با atmega8 نوشتم که یک فرکانس در محدوده ی 0 تا 200 هرتز از ورودی می گیره و اونو در 1.38 ضرب می کنه و فرکانس معادل اونو در خروجی میسازه. مثلا در ورودی فرکانس 100 هرتز می گیره و در خروجی فرکانس 138 هرتز میده. همه چیزم به خوبی کار میکنه. فقط یه مشکلی هست و اونم اینه که وقتی من فرکانس ورودی رو بسرعت افزایش میدم برای یه لحظه فرکانس خروجی من صفر میشه و بعد به حالت نرمال میرسه. اما عکس این قضیه صادق نیست! یعنی اگه من فرکانس ورودی رو به سرعت کم کنم فرکانس خروجی هم بدون اینکه صفر بشه به بسرعت کم میشه.

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

    کد:
      $regfile = "m8def.dat" 
    $crystal = 4000000 
    
    $hwstack = 32 
    $swstack = 10 
    $framesize = 40 
    
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Configurations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    
    Config Timer0 = Counter , Edge = Rising , Prescale = 256    'count input frequency 
    Config Timer1 = Timer , Compare A = Toggle , Clear Timer = 1 , Prescale = 64       'generat suitable output frequency 
    Config Timer2 = Timer , Prescale = 256                      'generate 1 second duration 
    
    Enable Timer0 
    Enable Timer1 
    Enable Timer2 
    
    Enable Ovf2 
    Enable Oc1a 
    
    Enable Interrupts 
    
    Stop Timer1 
    Stop Timer2 
    
    Timer2 = 0 
    Timer1 = 0 
    Counter0 = 0 
    
    On Ovf2 One_secend 
    
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Variable ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    
    Dim Fin As Single 
    Dim Tin As Single 
    Dim Tout As Single 
    Dim Tout1 As Integer 
    
    Dim Scale As Single : Scale = 1.38 
    
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ initionaliz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    
    Start Timer2 
    
    Start Timer1 
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Main program ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    
    Do 
    
    Loop 
    
    End 
    
    
    One_secend: 
    
     If K = 62 Then 
    
       Stop Timer2 
    
       K = 1 
    
       Fin = Counter0 
       Fin = Fin * Scale 
    
       Tin = 1 / Fin 
       Tin = Tin / 2                                            'Diuration of '1's 
    
       Tout = 62500 * Tin 
    
       Tout1 = Tout                                             'convert single value to integer value 
    
       Compare1a = Tout1 
    
       Timer2 = 0 
       Counter0 = 0 
    
       Start Timer2 
    
      Else 
    
        Incr K 
    
     End If 
    
    
    Return

    و اما توضیح مختصر این برنامه ، من از تایمر 2 برای تولید زمان یک ثانیه استفاده کردم و از اونجائیکه این تایمر 8 بیتی هست با توجه به فرکانس تراشه و مقدار Prescale در مدت یک ثانیه تقریبا 62 بار سر ریز میشه.
    توسط کانتر 0 تعداد لبه های بالا رونده در این یک ثانیه (که توسط تایمر 2 ایجاد شد) رو شمردم که میشه همون فرکانس موج ورودی و اونو در 1.38 ضرب کردم و دوره ی تناوبشو بدست آوردم ، بعد بوسیله ی تایمر 1 فرکانس مناسب رو در خروجی ایجاد کردم (یعنی با معکوس کردن وضعیت خروجی تایمر 1).
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #2
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    دوستان کسی نمی خواد به من یاری برسونه؟

    آخه این پروژه برام خیلی مهمه پای آبروم در میونه! توروخدا یه کمکی بکنید. حجم برنامه خیلی کمه بررسیش زیادم سخت نیستا؟
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  4. #3
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    کسی چیزی به ذهنش نمی رسه؟ خدا نکنه کسی توی موقعیتی که من الان گرفتارشم گیر بیفته! خیلی سخته.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  5. #4
    مدیر باز نشسته masoodhashemy آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    بوشهر - نام: علیرضا.غ
    نوشته ها
    328
    تشکر
    212
    تشکر شده 593 بار در 145 پست

    پیش فرض

    من ساختم
    فقط بحث کالیبراسیون دارد چون طبق فرمول اصلی مثلا نتیجه این جوری میشه:
    فرکانس ورودی
    100 هرتز است موج خروجی به جای 138 هرتز 134 هرتزه.
    200 هرتز است موج خروجی به جای 276 هرتز 261 هرتزه.
    یک خط با نام calibration نوشتم که برای کالیبراسیونه میتونی در واقعیت هم ازش استفاده کنی.


    شرمنده از اینکه دیر جواب دادم چون اینترنتم 1 هفته قطع بود و تازه دیدم.
    ویرایش توسط masoodhashemy : 27-02-2010 در ساعت 18:18
    خنده بر لب میزنم تا کس نداند راز من.........ورنه این دنیا که ما دیدیم خندیدن نداشت
    وبلاگ شخصی

  6. کاربران : 2 تشکر کرده اند از شما masoodhashemy برای ارسال این پست سودمند:


  7. #5
    مدیر باز نشسته masoodhashemy آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    بوشهر - نام: علیرضا.غ
    نوشته ها
    328
    تشکر
    212
    تشکر شده 593 بار در 145 پست

    پیش فرض

    اگر دوست داشتی به صندوق حمایت مالی از برنامه نویس مربوطه کمک کن اگر هم دوست نداشتی یک دعایی کن (نمیدونم چرا همیشه گزینه دوم انتخاب میشه! )
    همان طور که مشاهده میفرمایید فرکانس ورودی 100 هرتزه:

    خوب فرکانس خروجی هم ببینید:


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

  8. تشکرها از این نوشته :


  9. #6
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام

    اولا بخاطر لطف بی کرانت خیلی ممنونم!

    چون من این تاپیک رو در 3 انجمن ایرانی و یک انجمن خارجی مطرح کردم ولی هیچ کس به دادم نرسید!

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

    حالا من پروژه شمارو تست می کنم و اگه جواب داد کلا از این پروژه استفاده می کنم و کمک نقدی هم در کار خواهد بود!
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  10. #7
    مدیر باز نشسته masoodhashemy آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    بوشهر - نام: علیرضا.غ
    نوشته ها
    328
    تشکر
    212
    تشکر شده 593 بار در 145 پست

    پیش فرض

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

  11. #8
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سیگنال ورودی من پالس مربعیه ، با دامنه ی 5 ولت.

    برنامه ی شمارو با پروتیوس تست کردم ظاهرا جواب میده ، الان می خوام توی عمل هم تست کنم ، ولی نمی دونم چرا تراشم قفل شد. من فیوزبیت رو روی External Low Frequency Crystal تنظیم کردم ولی قفل شده. قبلا با کریستال ساعت کار کردم ولی نمی دونم امشب چه مشکلی پیدا شده. تنظیمات خاصی نیازه؟ البته میشه از فیوزبیت CKOPT هم برای فعال سازی خازنهای داخلی استفاده کرد ، نمی دونم چرا قفل شده.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  12. #9
    مدیر باز نشسته masoodhashemy آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    بوشهر - نام: علیرضا.غ
    نوشته ها
    328
    تشکر
    212
    تشکر شده 593 بار در 145 پست

    پیش فرض

    چرا روی external low frequency تنظیم کردی؟
    اول اینکه اگر میخوای از کریستال ساعت استفاده کنی نیازی یه تنظیم external low frequency نداره چون شما باید مثلا در برنامه من : فیوزبیتهای کلاک را روی اسیلاتور داخلی با فرکانس 1 مگ تنظیم کنی و کریستال ساعت هم به پایه های tosc1 و tosc2 بزنی.
    همین
    اما در مورد قفل شدن میکروها که در اثر تنظیم اشتباه فیوزبیت کلاک بوجود می آید اطلاعی ندارم.
    این چیزی که من نوشتم با atmega16 هست با atmega8 هم مینویسم.
    ویرایش توسط masoodhashemy : 28-02-2010 در ساعت 00:09
    خنده بر لب میزنم تا کس نداند راز من.........ورنه این دنیا که ما دیدیم خندیدن نداشت
    وبلاگ شخصی

  13. #10
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    آخه من با مگا8 تستش کردم ، توی پروتیوس جواب داد ، در مگا هشت پایه های TOSC و Xtal مشترک هستن.

    همین یه ماه پیش مگا هشت رو واسه همین پروژه با کریستال ساعت را انداختم ولی الان قفل شده لعنتی.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  14. #11
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    حواسم نبود ، سوتی دادم!

    نباید فیوزبیتهارو روی External Low Frequency Crystal تنظیم می کردم ، چون منبع کلاک برای اجرای برنامه اسیلاتور RC داخلی میکروکنترلر هست نه فرکانس 32.768 کیلو هرتز! بنابراین من باید فیوزبیتها رو برای حالت اسیلاتور داخلی تنظیم می کردم و کریستال ساعت رو بین پایه های TOSC1 و TOSC2 قرار می دادم. در اینصورت در مد آسنکرون تایمر 2 خودش از کریستال ساعت بعنوان مولد پالس استفاده می کنه.

    خلاصه اینکه بد جوری سوتی دادم.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  15. #12
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام

    مسعود جان برنامت توی پروتیوس خوب کار می کنه ، تفاوت برنامه ی شما با برنامه ی من اینه که :

    1. شما از کریستال ساعت استفاده کردی که برای اندازه گیری فرکانسهای بالا و دقیق لازمه ، ولی من چون به این حد از دقت نیاز نداشتم از این نوع کریستال استفاده نکردم.

    2. در برنامه ی شما در پایان هر یک ثانیه در سر ریزی که توسط تایمر2 اتفاق می افته مقدار اولیه تایمر 1 محاسبه میشه و تایمر استارت می خوره و شروع به شمارش می کنه تا سر ریز بشه اونوقته که وضعیت یکی از پایه ها رو معکوس می کنه. در حالیکه من در همون سر ریزی که از طریق تایمر 2 اتفاق می افته تایمر 1 رو در مد Compare (مقایسه ای) مقدار دهی و استارت می کنم که در اینصورت در همین سر ریز وضعیت پایه ی خروجی تایمر 1 (oc1a) معکوس میشه، که به نظر می رسه همین عامل باعث میشه که در تغییرات فرکانس ، خروجی من یه لحظه صفر بشه.

    بنابراین منم مثل شما فعلا این روش رو اتخاذ کردم که تایمر 1 در سرریز تایمر 2 فقط مقدار دهی بشه و در سرریز خودش وضعیت یه پایه رو معکوس کنه.

    بهرحال وقتیکه من برنامه ی شما رو در عمل تست می کنم همه چیز تا 3 - 4 دقیقه خوبه ، ولی بعد از این مدت میکرو فرکانسی در محدوده ی کیلوهرتز تولید میکنه! که کار رو خراب میکنه.

    اگه ممکنه شما هم این برنامه رو در عمل برای مگا 8 تست کن تا بتونیم به نتیجه برسیم.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  16. #13
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    راستی ورژن بسکامت چنده مهندس؟

    مال من 1.11.9.8 هست ، همه چیز خوبه ولی برنامه فقط تا 3 - 4 دقیقه خوبه ، بعدش فاتحه...
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  17. #14
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    نقل قول نوشته اصلی توسط morteza_rk نمایش پست ها
    آخه من با مگا8 تستش کردم ، توی پروتیوس جواب داد ، در مگا هشت پایه های tosc و xtal مشترک هستن.

    همین یه ماه پیش مگا هشت رو واسه همین پروژه با کریستال ساعت را انداختم ولی الان قفل شده لعنتی.
    سلام دوست عزيز

    شما به يه پروگرامر حرفه اي پارالل مثل stk500 احتياج داري تا قفلش رو باز كني .
    به نظر من اين پروگرامر رو بايد هر كسي كه با avr ها كار ميكه داشته باشه .
    من خودم كه با مصيبت تمام تونستم يكيشو گير بيارم .
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

  18. #15
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام

    ممنون از توجهت ، این پروگرمر رو از کجا میشه گیر آورد؟ طرز کارش چطوریه؟ شما می دونید؟

    راستی شماتیکش منبع باز (open source) هست یا نه؟
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  19. #16
    مدیر باز نشسته masoodhashemy آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    بوشهر - نام: علیرضا.غ
    نوشته ها
    328
    تشکر
    212
    تشکر شده 593 بار در 145 پست

    پیش فرض

    اگر دوست داشته باشید یک نمونه stk500 هم بزاریم در سایت البته مدارش رو فکر کنم قبلا در سایت دیدم و خودم چند تا نقشه کامل و مختلف از اونها دارم.
    به هر حال اگر دوستان بگویند که دوست دارن چه قابلیتهایی داشته باشد ممنون میشوم چون stk-500 های مختلفی هست.
    مثلا با چه شکل ظاهری؟
    (پروژه jtag رو cancel کردم و اگر میخواهید stk500 یا غیره بسازیم؟)
    خنده بر لب میزنم تا کس نداند راز من.........ورنه این دنیا که ما دیدیم خندیدن نداشت
    وبلاگ شخصی

  20. #17
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام آقای هاشمی

    اگه شماتیکی که شما دارید بتونه آی.سی های به اصطلاح قفل شده رو باز کنه خیلی ارزش داره که روش کار بشه ، چون خیلیها با فیوزبیتهای AVR به مشکل می خورن.

    راستی این بحث رو مثل بحث قبلی نصفه نیمه رها نکنیا! (حق صندوقت محفوظه ، بذار سهم من برسه ، اونوقت سهم تو هم میاد! )
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

موضوعات مشابه

  1. مشکل عجیب در adc میکروکنترلر atmega8
    توسط azadmard در انجمن AVR
    پاسخ: 13
    آخرين نوشته: 31-01-2014, 15:08
  2. پاسخ: 3
    آخرين نوشته: 05-07-2013, 15:14
  3. مشخصات میکرو atmega8
    توسط kendab در انجمن AVR
    پاسخ: 2
    آخرين نوشته: 13-02-2013, 19:30
  4. atmega8 pin
    توسط mehrdad22 در انجمن ATXMEGA
    پاسخ: 4
    آخرين نوشته: 09-11-2011, 19:56

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •