اطلاعیه

Collapse
No announcement yet.

کمک به مشکل ساده در مورد تایمر و بسکام

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

    کمک به مشکل ساده در مورد تایمر و بسکام

    سلام
    من تازه دارم در مورد تایمر ها مطالعه میکنم . یه برنامه نوشتم خیلی ساده که تایمر تووش دخیله.
    برنامه من اینه که هر ثانیه که تایمر اندازه گرفت یه واحد به متغییر اضافه کنه .همین.
    اما هرچی توو پروتئوس تست میکنم همش تا 1 میشماره دیگه 2.3.4.5 ..... رو نمیشماره.
    اینم برنامه :
    [FONT=Yekan]$regfile = "m8def.dat"[/FONT]
    $crystal = 1000000
    Enable Interrupts
    Config Timer1 = Timer , Prescale = 64
    Enable Timer1
    Stop Timer1
    Dim A As Byte
    A = 0
    Timer1 = 49911
    Enable Ovf1
    On Ovf1 Ezafe
    Start Timer1


    Ezafe:
    Incr A
    Cls
    Lcd A
    Return
    End 'end program


    بازم خدا رو شکر ...

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

    نوشته اصلی توسط mosi_reali نمایش پست ها
    سلام
    من تازه دارم در مورد تایمر ها مطالعه میکنم . یه برنامه نوشتم خیلی ساده که تایمر تووش دخیله.
    برنامه من اینه که هر ثانیه که تایمر اندازه گرفت یه واحد به متغییر اضافه کنه .همین.
    اما هرچی توو پروتئوس تست میکنم همش تا 1 میشماره دیگه 2.3.4.5 ..... رو نمیشماره.
    اینم برنامه :
    [FONT=Yekan]$regfile = "m8def.dat"[/FONT]
    $crystal = 1000000
    Enable Interrupts
    Config Timer1 = Timer , Prescale = 64
    Enable Timer1
    Stop Timer1
    Dim A As Byte
    A = 0
    Timer1 = 49911
    Enable Ovf1
    On Ovf1 Ezafe
    Start Timer1


    Ezafe:
    Incr A
    Cls
    Lcd A
    Return
    End 'end program


    سلام
    بعد از start timer1 یه حلقه do loop بزاری مشکلت حل میشه.
    تو این حالت برنامه میرسه به end و دیگه کاری انجام نمیده

    دیدگاه


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

      نوشته اصلی توسط M3R-E نمایش پست ها
      سلام
      بعد از start timer1 یه حلقه do loop بزاری مشکلت حل میشه.
      تو این حالت برنامه میرسه به end و دیگه کاری انجام نمیده
      خیلی ممنون از کمکتون
      برنامه رو به شکلی که گفتید تغییر دادم اما همون طور هست .
      [FONT=Yekan]$regfile = "m8def.dat"[/FONT]
      $crystal = 1000000
      Enable Interrupts
      Config Timer1 = Timer , Prescale = 64
      Enable Timer1
      Stop Timer1
      Dim A As Byte
      A = 0
      Timer1 = 49911
      Enable Ovf1
      On Ovf1 Ezafe
      Start Timer1
      Do
      Ezafe:
      Incr A
      Cls
      Lcd A
      Return
      Loop
      [FONT=Yekan]End 'end program[/FONT]

      تو این حالت برنامه میرسه به end و دیگه کاری انجام نمیده
      راستی برنامه end نمیشه وقتی به return میرسه کلا همه چی پاک میشه از صفر میشه .
      یعنی توو پروتئوس میشه دید که عدد موقعی که باید تغییر کنه یه چشمک میزنه و دوباره روی lcd عدد 1 ظاهر میشه .
      بازم خدا رو شکر ...

      دیدگاه


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

        نوشته اصلی توسط mosi_reali نمایش پست ها
        خیلی ممنون از کمکتون
        برنامه رو به شکلی که گفتید تغییر دادم اما همون طور هست .
        [FONT=Yekan]$regfile = "m8def.dat"[/FONT]
        $crystal = 1000000
        Enable Interrupts
        Config Timer1 = Timer , Prescale = 64
        Enable Timer1
        Stop Timer1
        Dim A As Byte
        A = 0
        Timer1 = 49911
        Enable Ovf1
        On Ovf1 Ezafe
        Start Timer1
        Do
        Ezafe:
        Incr A
        Cls
        Lcd A
        Return
        Loop
        [FONT=Yekan]End 'end program[/FONT]


        راستی برنامه end نمیشه وقتی به return میرسه کلا همه چی پاک میشه از صفر میشه .
        یعنی توو پروتئوس میشه دید که عدد موقعی که باید تغییر کنه یه چشمک میزنه و دوباره روی lcd عدد 1 ظاهر میشه .
        شما برنامه اشتباه نوشتی
        DO loop
        باید در قسمت برنامه اصلی main باشه
        اگر فایلتو با پرتیوس و بسکام بزاری برات درستش میکنم
        ولی بهرحال :

        $crystal = 1000000
        Enable Interrupts
        Config Timer1 = Timer , Prescale = 64
        Enable Timer1
        Stop Timer1


        Dim A As Byte
        A = 0
        Timer1 = 49911
        Enable Ovf1
        On Ovf1 Ezafe
        Start Timer1




        Do




        Loop




        Ezafe:


        Incr A
        Cls
        Lcd A
        Return


        End

        دیدگاه


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

          نوشته اصلی توسط 00098 نمایش پست ها
          شما برنامه اشتباه نوشتی
          DO loop
          باید در قسمت برنامه اصلی main باشه
          اگر فایلتو با پرتیوس و بسکام بزاری برات درستش میکنم
          ولی بهرحال :

          $crystal = 1000000
          Enable Interrupts
          Config Timer1 = Timer , Prescale = 64
          Enable Timer1
          Stop Timer1
          Dim A As Byte
          A = 0
          Timer1 = 49911
          Enable Ovf1
          On Ovf1 Ezafe
          Start Timer1
          Do
          Loop
          Ezafe:
          Incr A
          Cls
          Lcd A
          Return
          End
          مرسی مهندس
          تست کردم درست کار میکنه .
          فقط یه مشکل کوچیک دارم نمیدونم چرا دقیق 1 ثانیه نیست .
          اینم فایل ها
          شرمنده از اینکه مزاحم شدم
          بازم خدا رو شکر ...

          دیدگاه


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

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

            دیدگاه


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

              نوشته اصلی توسط 00098 نمایش پست ها
              خواهش میکنم.
              فایل بسکام شما رو تست کردم کار نمیکرد
              متشکر از کمکتون
              والا من تست میکنم کار میکنه فقط مشکلش همون دقیق نبودن بود.
              ورژن بسکام من 2.0.7.5 هست.
              ورژن پروتئوس من هم 7.10 هست.
              به نظر شما مشکلش چیه ؟
              بازم خدا رو شکر ...

              دیدگاه


                #8
                پاسخ : کمک به مشکل ساده در مورد تایمر و بسکام

                منبع کلاک داخلی میکرو خطای زیادی داره و شما با کم کردن فرکانس تایمر این خطا را بیشتر کردی ،، برای دقت بهتر از کریستال خارجی ۸ مگاهرتز استفاده کنید یا از کریستال ۳۶ کیلوهرتز بهمراه تتایمر ۲ در مد اسنکرون که دقت خیلی خوبی میده

                دیدگاه


                  #9
                  پاسخ : کمک به مشکل ساده در مورد تایمر و بسکام

                  با تنظیم کردن و ست کردن کریستال میشه تا حدودی زمان را دقیق کرد(خطای کمتر)
                  ولی راه حل اساسی استفاده از بخش سخت افزاری داخل میکرو ، RTC میباشد.
                  از RTC برای ساخت زمان دقیق استفاده می شود. در این روش یک عدد کریستال ساعت با فرکانس 32.768 کیلوهرتز به پایه های ورودی تایمر داده می شود

                  دیدگاه


                    #10
                    پاسخ : کمک به مشکل ساده در مورد تایمر و بسکام

                    نوشته اصلی توسط yousef55 نمایش پست ها
                    منبع کلاک داخلی میکرو خطای زیادی داره و شما با کم کردن فرکانس تایمر این خطا را بیشتر کردی ،، برای دقت بهتر از کریستال خارجی ۸ مگاهرتز استفاده کنید یا از کریستال ۳۶ کیلوهرتز بهمراه تتایمر ۲ در مد اسنکرون که دقت خیلی خوبی میده
                    نوشته اصلی توسط 00098 نمایش پست ها
                    با تنظیم کردن و ست کردن کریستال میشه تا حدودی زمان را دقیق کرد(خطای کمتر)
                    نوشته اصلی توسط 00098 نمایش پست ها
                    ولی راه حل اساسی استفاده از بخش سخت افزاری داخل میکرو ، RTC میباشد.
                    از RTC برای ساخت زمان دقیق استفاده می شود. در این روش یک عدد کریستال ساعت با فرکانس 32.768 کیلوهرتز به پایه های ورودی تایمر داده می شود

                    مرسی
                    یعنی حتی برای تست نرم افزاری هم باید انقدر دقیق بود .
                    چون من تازه دارم تایمر ها رو یاد میگیرم هنوز وارد عمل نشدم ولی این جور که شما گفتید برای عملی بیشتر به نظر میرسه تا تئوری ؟
                    الان یعنی داخل پروتئوس از کریستال خارجی استفاده کنم ؟
                    راستی جناب 00098 مشکل فایل بسکام من چی بود ؟
                    جدیدترین ویرایش توسط mosi_reali; ۱۷:۲۵ ۱۳۹۷/۰۸/۱۴.
                    بازم خدا رو شکر ...

                    دیدگاه


                      #11
                      پاسخ : کمک به مشکل ساده در مورد تایمر و بسکام

                      نوشته اصلی توسط mosi_reali نمایش پست ها

                      مرسی
                      یعنی حتی برای تست نرم افزاری هم باید انقدر دقیق بود .
                      چون من تازه دارم تایمر ها رو یاد میگیرم هنوز وارد عمل نشدم ولی این جور که شما گفتید برای عملی بیشتر به نظر میرسه تا تئوری ؟
                      الان یعنی داخل پروتئوس از کریستال خارجی استفاده کنم ؟
                      راستی جناب 00098 مشکل فایل بسکام من چی بود ؟
                      فایل بسکام شما رو کامپایل کردم ، فایل هگزی که خروجی داد را ریختم رو میکرو (داخل پرتیوس) کار نمیکرد.
                      جدیدترین ویرایش توسط 00098; ۱۳:۴۹ ۱۳۹۷/۰۸/۱۵.

                      دیدگاه


                        #12
                        پاسخ : کمک به مشکل ساده در مورد تایمر و بسکام

                        نوشته اصلی توسط 00098 نمایش پست ها
                        فایل بسکام شما رو کامپایل کردم ، فایل هگزی که خروجی داد را ریختم رو میکرو (داخل پرتیوس) کار نمیکرد.
                        همین که وقت گذاشتید کلی ارزش داشت
                        متشکر از کمکاتون
                        باید باز مطالعه کنم ببینم به کجا میرسم ؟؟!!
                        بازم خدا رو شکر ...

                        دیدگاه


                          #13
                          پاسخ : کمک به مشکل ساده در مورد تایمر و بسکام

                          سلام
                          وقفه ها رو بای فعال کنید

                          Enable Interrupts
                          اگه مردم می دونستن زمان چقدر با ارزشه دیگه هیچ وقت کفش بند دار نمی خریدن البرت انیشتن

                          دیدگاه


                            #14
                            پاسخ : کمک به مشکل ساده در مورد تایمر و بسکام

                            نوشته اصلی توسط S_B_T نمایش پست ها
                            سلام
                            وقفه ها رو بای فعال کنید

                            Enable Interrupts
                            سلام
                            این کار رو انجام دادم
                            بازم خدا رو شکر ...

                            دیدگاه


                              #15
                              پاسخ : کمک به مشکل ساده در مورد تایمر و بسکام

                              سلام
                              متوجه شدم چرا اینجوریه .
                              برنامه از اونجایی که گفتم شروع به شمارش نمیکنه یعنی از 49911 شروع نمیکنه بلکه هر عددی بدی بازم از 0 شروع میکنه به شمارش چرا ؟
                              بازم خدا رو شکر ...

                              دیدگاه

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