اطلاعیه

Collapse
No announcement yet.

%%%% یک مشکل کوچک در دستور Waitus %%%

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

    #16
    پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%



    $regfile = "M8DEF.DAT"
    $crystal = 16000000

    Config Portd = Output
    Ddrd.0 = 1 : Portd.0 = 0
    Config Timer1 = Timer , Prescale = 1024
    Enable Interrupts
    Enable Timer1
    Enable Ovf1
    On Timer1 Lable


    Dim Tim As Byte
    Dim X As Bit

    Timer1 = 57722

    Tim = 0
    Set Portd.0
    X = 1
    Start Timer1
    Do
    Loop

    End

    Lable:

    Timer1 = 57722
    Incr Tim
    If Tim > 19 Then
    Reset Portd.0
    Tim = 0
    X = 0
    End If
    If Tim = 2 Then
    If X = 0 Then
    Set Portd.0
    X = 1
    End If
    End If
    Start Timer1
    Return


    این برنامه 2 هرتز ئاسط set میکنه 20 هرتز off :mrgreen:
    علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

    دیدگاه


      #17
      پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

      ممنون

      ممکنه یکم توضیح بدین؟

      من فرکانس 50 هرتز میخوام که سیکل مثبتش با adc میکرو از 1 تا 2 میلی ثانیه کنترل بشه!

      اگه نامفهومه تصویر سیگنال رو بزارم؟
      هنوز وقت برای پیشرفت باقیست!

      دیدگاه


        #18
        پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

        نوشته اصلی توسط bozonghare


        یک فرکانس 50 هرتز که طول موج مثبتش از 1 تا 2 میلی ثانیه با یک ولوم که به ADC وصله تغییر کنه

        یعنی کل موجم 20 میلی ثانیس 1 تا 2 میلی 1 منطقی و 18 تا 19 صفر منطقی اینم عکس موج:

        http://www.dehcadeh.com/upload/images/olqzgvclhlznxj2egzqp.jpg


        یاداوری : با ADC میکرو و یک ولوم از 1 تا 2 میلی ثانیه تغییر میدهیم!

        اگر ممکنه هم با تایمر توضیح دهید و هم با PWM


        ممنون

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

        2 هرتز on و 20 هرتز off
        علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

        دیدگاه


          #19
          پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

          منظورتو متوجه نمیشم یعنی چی دو هرتز آن و دبیست هرتز آف ؟؟

          صفر و یک شدن که به هرتز نیست! به طول موجه مثلا 18 میلی ثانیه صفر و 2 میلی ثانیه یک !

          منم میخوام کلا 18 میلی ثانیه صفر باشه و 1 تا 2 میلی ثانیه یک باشه و بشه با ADC از 1 تا 2 میلی ثانیه حرکت داد

          که 1/20MS میشه 50 هرتز

          این تصویر موج و کنترلشه:

          http://www.dehcadeh.com/upload/images/olqzgvclhlznxj2egzqp.jpg
          هنوز وقت برای پیشرفت باقیست!

          دیدگاه


            #20
            پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

            خوب 1hz=1ثانیس دیگه :mrgreen:

            البته حق با تو هست من اشتباه کردم و برنامه رو باید بز حسب 1000 hz یا به قولی 1میلی ثانیه مینوشتم
            چشم درستش میکنم
            علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

            دیدگاه


              #21
              پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

              خوب یه توضیح کلی میدم و برنامه
              ببین یو تو 50 hz کارت رو میخوای(سیکلت)
              پس 1/50=.02 یعنی 2میلی ثانیه .ژس کل زمانت 20 میلی ثانیس که باید تکرار بشه
              خوب کار با تایمر بسیار سادس
              فقط تو یه خط میگی با چه تقسیمی نسبت به کریستال کار کنه.باقیشم برنامه رو می زارم که بسیار ساده و قابل فهمه
              $regfile = "m8def.dat"
              $crystal = 8000000

              $baud = 19200


              Config Timer1 = Timer , Prescale = 8


              Dim Omid As Byte
              Dim Down As Byte
              Dim X As Bit


              Enable Interrupts
              Enable Timer1
              Enable Ovf1
              Timer1 = 64536

              Start Timer1

              On Ovf1 Change
              Omid = 0
              Down = 0
              X = 0
              Set Portb.0
              Main:
              Do
              Print Omid
              Loop



              Change:
              Timer1 = 64536
              Incr Omid

              If Omid = 2 Then
              Reset Portb.0
              End If


              If Omid > 19 Then
              Omid = 0
              Set Portb.0
              End If

              Return
              علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

              دیدگاه


                #22
                پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

                سلام

                من دارم تایمر رو تازه یاد میگیرم اینجوری بدون توضیح که متوجه نمیشم پس از خط 10 که Timer1 = 64536 محاسبه این عدد رو ، و تا آخر برنامه خطهارو توضیح بده!

                ممنون ضمنا تو این برنامه طول موج مثبت چجوری از 1 تا 2 میلیثانیه تغییر میکنه؟ در حالیکه ADC براش تعریف نکردی؟؟؟؟؟ :sad:
                هنوز وقت برای پیشرفت باقیست!

                دیدگاه


                  #23
                  پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

                  ببین اولن که فرکانس میکرو 1000000 هرتز است و تو خط کانفیگ تایمر هم prescale رو روی یک گزاشتم
                  پس ا مگاهرتز تقسیم بر یک میشه و فرکانس تایمر هم یک مگاهرتز میشه

                  تایمر 1 یه تایمر 16بیتی است پس تا ffff می شماره و بعد پرچم سر ریز یک میشه و اون وقته که میکرو میره به lable به اسم change و اون کاری رو که خواستیم انجام میده و بر میگرده
                  این تایمر روی 1 میلی ثانیه تنظیم شده و هر یک میلی ثانیه به lable مربوطه بر میگرده
                  بازم بگم :mrgreen:
                  علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

                  دیدگاه


                    #24
                    پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

                    ممنون

                    خوب برنامت تو بیسکام حدود 6 تا ایراد گرفت که اولیش مربوطه به : Enable Ovd1

                    ممکنه شما خودتون یبار کامپایل کنید ببینین مشکلاتش چیه؟ فکر کنم تستش نکردین نه؟

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

                    دیدگاه


                      #25
                      پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

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

                      خوب برنامت تو بیسکام حدود 6 تا ایراد گرفت که اولیش مربوطه به : Enable Ovd1

                      ممکنه شما خودتون یبار کامپایل کنید ببینین مشکلاتش چیه؟ فکر کنم تستش نکردین نه؟

                      دوست عزیز پست ویرایش شد
                      چند تا غلط املایی توش بود که گرفتم.تست کنید
                      علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

                      دیدگاه


                        #26
                        پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

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

                        در ضمن اینکه براش ADC ورودی تعریف نکردی پس چجوری از 1 تا 2 میلی ثانیه حرکت کنیم؟؟؟؟؟؟؟
                        هنوز وقت برای پیشرفت باقیست!

                        دیدگاه


                          #27
                          پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

                          فعلا این قسمت رو جواب بگیر بعد ادامش

                          تا جایی که میدونم این الان داره 2 میلی ثانیه ست میشه و 18 میلی ثانیه ریست
                          شکل به دست اومده رو بزار ببینم چه گلی زدیم به سر :mrgreen:
                          علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

                          دیدگاه


                            #28
                            پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%



                            این شکل موجشه یک ولتاژ DC 5 ولت

                            بدون هیچ فرکانسی!

                            مگه شما پروتئوس نداری تست کنی؟
                            هنوز وقت برای پیشرفت باقیست!

                            دیدگاه


                              #29
                              پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

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

                              دیدگاه


                                #30
                                پاسخ : %%%% یک مشکل کوچک در دستور Waitus %%%

                                نوشته اصلی توسط omega_adiban
                                ببین تو باید دو تایمر راه بندازی(ترجیحا 0 و 2 چون هر دو 8 بیتی هستند)بعد یکی رو بذاری واسه ست کردن و یکی واسه دیست کردن


                                بعد تو یه لوپ هی باید adc رو بخونی و نسبت به عدد adc از یه تایمر کم و به همون اندازه به تایمر دیگت اضافه کنی
                                من تو یکیش موندم.......تازه دارم یاد میگیرم!

                                ممکنه یک نمونه ازاین کاریکه میگی رو بزاری؟

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

                                دیدگاه

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