اطلاعیه

Collapse
No announcement yet.

***تایمر ساده ***

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

    ***تایمر ساده ***

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

    سخت افزار پیشنهادی:
    میکرو ATMEGA 8
    LCD 2*16
    رله و ترانزیستور
    6 عدد شاسی برای استارت ، استپ ، ریست ، ستینگ برای حرکت در ثانیه و دقیقه و ساعت ، + ، - برای کم و زیاد کردن تایم
    زمان داده شده شمارش معکوس میشود و در پایان رله قطع
    برنامه بیسکام
    پروتئوس 7.4

    خوب برای برنامه کدوم استاد کمک میفرمایند؟ :agree:
    هنوز وقت برای پیشرفت باقیست!

    #2
    پاسخ : ***تایمر ساده ***

    سلام
    دوست عزیز شما می خوای با تایمر یک برنامه ساعت بنویسی؟؟؟
    به نظر من از rtc استفاده کن چون با تایمر ساعت شما دقیق نمی شود چون هر دستوری که شما در برنامه استفاده کنید دارای دیوتی سایکل(ماشین سیکل) است یعنی مدت زمانی طول می کشد که اجرا شود به همین دلیل ساعت شما مقداری خطا خواهد داشت مثلا در هر روز 5 دقیقه.
    میشه بگید چرا می خواهید با تایمر این کار را انجام دهید؟؟

    دیدگاه


      #3
      پاسخ : ***تایمر ساده ***

      این یک تایمر سادس
      گفتم که تایم رو بهش میدی و اون تایم میگیره معکوس ثانیه رو میشماره تا تموم میشه
      مثل تایمر دستگاه مایکروویو آشپزخانه
      همین
      خیلی پیچیدس؟
      هنوز وقت برای پیشرفت باقیست!

      دیدگاه


        #4
        پاسخ : ***تایمر ساده ***

        نه این پیچیده نیست شما منظور من رو متوجه نشدید من منظورم اینه که با تایمر دقیق نمی شه و خطا داره.

        دیدگاه


          #5
          پاسخ : ***تایمر ساده ***


          با احترام به نظر آقای حیاتی عرض کنم که حق با جناب bozonghare است و عموما برای تایمرهای ساده داخل برنامه از rtc استفاده نمی کنند مگر اینکه دقت خیلی بالایی بخواهند والا برای درست کردن تایمری که مثلا از زمان شروع تا چند دقیقه حتی کاری بکند و پس از آن به مدت چندثانیه کار دیگری ؛ من ندیدم از rtc استفاده کنند اگر تایمر رو خوب اینشیلایز بکنید دقتش هم بد نیست

          دیدگاه


            #6
            پاسخ : ***تایمر ساده ***

            نوشتن برنامه هم با تایمر در حالت سنکرون و هم به صورت آسنکرون ( کریستال ساعت RTC ) و هم با استفاده از آی سی های ساعت خیلی پیچیده نیست .
            چون دقت خیلی مهم نیست ( در حد ثانیه ) خیلی راحت میشه از تایمر خود میکرو استفاده کرد و نوشت.
            خب می تونیم خیلی زود شروع کنیم و زود هم تمومش کنیم . فقط اینکه تعداد کلیدها زیاد نیست ؟ همه کلیدها Push-Button هستند ؟

            دیدگاه


              #7
              پاسخ : ***تایمر ساده ***

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

              دیدگاه


                #8
                پاسخ : ***تایمر ساده ***

                خب اول یه برنامه بنویسیم ( یعنی بویس ) که هر یک ثانیه ، یکی به مقدار متغیری اضافه کنه و اونو رو LCD نمایش بده .
                هرجاشو مشکل داشتی بگو .

                دیدگاه


                  #9
                  پاسخ : ***تایمر ساده ***

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

                  دیدگاه


                    #10
                    پاسخ : ***تایمر ساده ***

                    آقا اینم برنامه تولید یک ثانیه :

                    $regfile = "m32def.dat"
                    $crystal = 8000000

                    Enable Interrupts
                    Enable Timer1
                    On Timer1 Timer_routin
                    Timer1 = 64536

                    Config Timer1 = Timer , Prescale = 8
                    Config Lcd = 16 * 2
                    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6

                    Dim Second As Byte
                    Dim Msec As Word



                    Cls

                    Do
                    Locate 1 , 7
                    Lcd Second
                    Loop


                    End

                    Timer_routin:
                    Incr Msec
                    If Msec = 1000 Then
                    Msec = 0
                    Incr Second
                    End If
                    Timer1 = 64536
                    Return

                    دیدگاه


                      #11
                      پاسخ : ***تایمر ساده ***

                      خوب ممکنه یکم دربارش توضیح بدین میخوام پروتئوسشو ببندم؟ :nerd:
                      محاسبات 8 مگا هرتز برای بدست آوردن 1 ثانیه چطوریه؟

                      و اینها یعنی چه:

                      Timer_routin:
                      Incr Msec
                      If Msec = 1000 Then
                      Msec = 0
                      Incr Second

                      با تشکر
                      هنوز وقت برای پیشرفت باقیست!

                      دیدگاه


                        #12
                        پاسخ : ***تایمر ساده ***

                        خب من بارها تو انجمن اینو توضیح دادم .
                        فرکانس کاری میکرو 8 مگاهرتزه
                        Prescale هم که تعیین می کنه فرکانس کاری تایمر چه کسری از فرکانس میکرو باشه . در واقع فرکانس کاری تایمر میشه 8MHz/8=1MHz
                        که این معادل یک میکرو ثانیه است .پس بعد از هر یم میکرو ثانیه یکی به مقدار تایمر اضافه میشه . از اونجایی که تایمر یک در AVR شانزده بیتیه 65536 تا می تونه بشمره . و چون مقدار اولیه اونو 64536 قرار دادم پس 1000 تا یک میکرو ثانیه که رد بشه سرریز اتفاق می افته و میره به زیر برنامه وقفه تایمر.
                        زیر برنامه وقفه هم همونیه که مورد سوالت بود .
                        با استفاده از تایمر تونستیم 1000 تا یک میکرو ثانیه یا همون یک میلی ثانیه تولید کنیم . اما برای یک ثانیه چه کاری باید انجام داد ؟
                        برای این کار از متغیر msec استفاده کردم . هر بار که به زیربرنامه وقفه پرش میشه بیکی به این مقدار اضافه میشه . در صورتی که msec=1000 باشه در واقع یک ثانیه رد شده . پس میشه یکی به متغیر second اضافه کرد و ...

                        دیدگاه


                          #13
                          پاسخ : ***تایمر ساده ***

                          سلام
                          شما باید ببنید از چه تایمری استفاده می کنید تایمر یک 16 بیتی است و محدوده ی آن از 0 تا 65536 است ولی اگر از تایمر 2 استفاده کنید این تایمر 8 بیتی است و محدوده ی آن از 0 تا 255 است پس حتما این را در نظر داشته باشید.

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

                          دیدگاه


                            #14
                            پاسخ : ***تایمر ساده ***

                            خیلی ممنون از همه اساتید

                            دارم پروتئوسشو میسازم
                            اگر توضیح دیگه ای به نظرتون میرسه عنوان کنید

                            با تشکر :nerd:
                            هنوز وقت برای پیشرفت باقیست!

                            دیدگاه


                              #15
                              پاسخ : ***تایمر ساده ***

                              با درود . . .
                              یه سری به این آدرس بزن تایمر رو آموزش داده
                              http://www.4shared.com/file/76560713/623fac3b/learning_timers.html
                              درد من تنهایی نیست؛ بلكه مرگ ملتی است كه گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حكمت خداوند می‏ نامند! "گاندی"

                              به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
                              بدرود . . .

                              دیدگاه

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