اطلاعیه

Collapse
No announcement yet.

مشکل با تایمر 0

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

    مشکل با تایمر 0

    سلام
    دارم رو یه پروژه ای کار میکنم که توش نیازه یه پالس تولید بشه (که بخاطر متغیر نبودن فرکانس pwm ، نمیتوان از آن استفاده کرد)اونم فقط با تایمری که به وقفه بره و یه پینی رو تاگل کنه وتو وقفه تعداد پالسها هم شمارش بشه .
    حالا مشکلی که بوجود میاد اینه که وقتی مثلا تایمر 0 رو کانفیگ میکنم ، با پری اسکیل 1 ، میکرو دیگه وقت نمیکنه به کارایی که تو حلقه DO-LOOP تعریف شدن برسه....
    چیکار کنم که این مشکل حل شه؟؟
    پیشاپیش ممنون از همکاریتون .
    تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
    علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

    #2
    پاسخ : مشکل با تایمر 0

    از تایمر 1 استفاده کن. یکی از مد هاش هست که top , bottom موج رو خودت مقدار دهی میکنی.
    اینطور هم فرکانس و هم d.c. تحت کنترله
    گفت که دیوانه نهی لایق این خانه نهی

    دیدگاه


      #3
      پاسخ : مشکل با تایمر 0

      من این پروژه رو با بیسیک کد زدم ..
      میشه یه نمونه برنامه بذارین؟؟
      یا لطفا اینو جواب بدین یا بگین چطوری تعداد پالسهای تولید شده توسط pwm رو دقیق بشمارم ...
      هر دوتاش میتونن کارمو راه بندازن.........
      ممنون از همکاریتون.....
      تشکر ...
      تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
      علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

      دیدگاه


        #4
        پاسخ : مشکل با تایمر 0

        نوشته اصلی توسط pars_paya
        من این پروژه رو با بیسیک کد زدم ..
        میشه یه نمونه برنامه بذارین؟؟
        یا لطفا اینو جواب بدین یا بگین چطوری تعداد پالسهای تولید شده توسط pwm رو دقیق بشمارم ...
        هر دوتاش میتونن کارمو راه بندازن.........
        ممنون از همکاریتون.....
        تشکر ...
        من c کار کردم
        دنبال مد fast pwm top=ICR1 برای تایمر1 بگرد.
        دومی هم کاری نداره وقفه مربوط به compare یا overflow را فعال کن و داخل اون یه متغییر رو اضافه کن.
        اگه هدفتو دقیق بگی شاید بهتر بشه کمک کرد
        گفت که دیوانه نهی لایق این خانه نهی

        دیدگاه


          #5
          پاسخ : مشکل با تایمر 0

          فکر کنم از ATMEGA8 استفاده می کنید. تایمر 0 رو باید بی خیال شی من هم نتونستم راه اندازیش کنم رفتم سر وقت تایمر 1
          STM32 واقعا یه چیز دیگه است...

          دیدگاه


            #6
            پاسخ : مشکل با تایمر 0

            نه میکروی من atmega2560 هست .........
            راه اندازیش واقعا ساده ست ..
            مشکل سر راه اندازیش نی ..
            سر هدر رفتن وقت میکرو ست ....
            کمک.....
            تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
            علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

            دیدگاه


              #7
              پاسخ : مشکل با تایمر 0

              اون کارایی رو که گفتم انجام دادین؟
              گفت که دیوانه نهی لایق این خانه نهی

              دیدگاه


                #8
                پاسخ : مشکل با تایمر 0

                دارم کلا با C مینویسم....
                یه نمونه واسم میذاری؟؟
                هدفم اینه که در نهایت یه پالس داشته باشم که فرکانسش و تعداد پالسها تحت کنترلم باشه .....
                مرسی
                تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                دیدگاه


                  #9
                  پاسخ : مشکل با تایمر 0

                  فرکانس پالس حداکثر چقدره؟
                  گفت که دیوانه نهی لایق این خانه نهی

                  دیدگاه


                    #10
                    پاسخ : مشکل با تایمر 0

                    500k
                    ولی دستم از این جهت کاملا بازه که دو یا چند میکرو بذارم ....
                    تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                    علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                    دیدگاه


                      #11
                      پاسخ : مشکل با تایمر 0

                      در این فرکانس رزولوشن d.c. چقدره؟
                      یا به عبارتی محدوده d.c. چقدر میتونه باشه در این فرکانس؟
                      گفت که دیوانه نهی لایق این خانه نهی

                      دیدگاه


                        #12
                        پاسخ : مشکل با تایمر 0

                        حدود 50% حالا یکم بالا پایینشم زیاد مهم نیست ...
                        ممنون از همکاریتون
                        تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                        علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                        دیدگاه


                          #13
                          پاسخ : مشکل با تایمر 0

                          کد:
                          #include <mega8.h>
                          
                          int count=0;
                          
                          // Timer1 overflow interrupt service routine
                          interrupt [TIM1_OVF] void timer1_ovf_isr(void)
                          {
                          count ++;
                          
                          }
                          
                          // Declare your global variables here
                          
                          void main(void)
                          {
                          // Declare your local variables here
                          
                          // Input/Output Ports initialization
                          // Port B initialization
                          // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=In 
                          // State7=T State6=T State5=T State4=T State3=T State2=T State1=0 State0=T 
                          PORTB=0x00;
                          DDRB=0x02;
                          
                          // Port C initialization
                          // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                          // State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                          PORTC=0x00;
                          DDRC=0x00;
                          
                          // Port D initialization
                          // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                          // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                          PORTD=0x00;
                          DDRD=0x00;
                          
                          // Timer/Counter 0 initialization
                          // Clock source: System Clock
                          // Clock value: Timer 0 Stopped
                          TCCR0=0x00;
                          TCNT0=0x00;
                          
                          // Timer/Counter 1 initialization
                          // Clock source: System Clock
                          // Clock value: 8000/000 kHz
                          // Mode: Fast PWM top=ICR1
                          // OC1A output: Non-Inv.
                          // OC1B output: Discon.
                          // Noise Canceler: Off
                          // Input Capture on Falling Edge
                          // Timer1 Overflow Interrupt: On
                          // Input Capture Interrupt: Off
                          // Compare A Match Interrupt: Off
                          // Compare B Match Interrupt: Off
                          TCCR1A=0x82;
                          TCCR1B=0x19;
                          TCNT1H=0x00;
                          TCNT1L=0x00;
                          ICR1H=0x00;
                          ICR1L=0x00;
                          OCR1AH=0x00;
                          OCR1AL=0x00;
                          OCR1BH=0x00;
                          OCR1BL=0x00;
                          
                          // Timer/Counter 2 initialization
                          // Clock source: System Clock
                          // Clock value: Timer2 Stopped
                          // Mode: Normal top=0xFF
                          // OC2 output: Disconnected
                          ASSR=0x00;
                          TCCR2=0x00;
                          TCNT2=0x00;
                          OCR2=0x00;
                          
                          // External Interrupt(s) initialization
                          // INT0: Off
                          // INT1: Off
                          MCUCR=0x00;
                          
                          // Timer(s)/Counter(s) Interrupt(s) initialization
                          TIMSK=0x04;
                          
                          // USART initialization
                          // USART disabled
                          UCSRB=0x00;
                          
                          // Analog Comparator initialization
                          // Analog Comparator: Off
                          // Analog Comparator Input Capture by Timer/Counter 1: Off
                          ACSR=0x80;
                          SFIOR=0x00;
                          
                          // ADC initialization
                          // ADC disabled
                          ADCSRA=0x00;
                          
                          // SPI initialization
                          // SPI disabled
                          SPCR=0x00;
                          
                          // TWI initialization
                          // TWI disabled
                          TWCR=0x00;
                          
                          ICR1 = 16;
                          OCR1A= 8;
                          
                          // Global enable interrupts
                          #asm("sei")
                          
                          while (1)
                             {
                             // Place your code here
                          
                             }
                          }
                          فرکانس میکرو 8 مگ هستش.
                          با رجیستر های ICR1, OCR1A فرکانس و d.c. تغییر میکنه. در زیرروال وقفه هم توسط متغییر count تعداد پالش ها شمرده میشه.
                          گفت که دیوانه نهی لایق این خانه نهی

                          دیدگاه


                            #14
                            پاسخ : مشکل با تایمر 0

                            نشد که نشد....
                            تو حلقه اصلی یه LCD گرافیکی دارم که وقتی وقفه راه میوفته به پرش میوفته ....
                            کمک.....
                            تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                            علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                            دیدگاه


                              #15
                              پاسخ : مشکل با تایمر 0

                              نوشته اصلی توسط pars_paya
                              نشد که نشد....
                              تو حلقه اصلی یه LCD گرافیکی دارم که وقتی وقفه راه میوفته به پرش میوفته ....
                              کمک.....
                              میتونی
                              1.فرکانس میکرو رو افزایش بدی
                              2.فرکانس موج خروجی رو کم کنی
                              3.سرعت رفرش lcd رو کم کنی
                              گفت که دیوانه نهی لایق این خانه نهی

                              دیدگاه

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