اطلاعیه

Collapse
No announcement yet.

طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

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

    طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

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

    #2
    پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

    نوشته اصلی توسط seda...
    سلام
    یه قسمت از پروژه ای که دارم یه تایمر است. می خوام از کریستال 32678 تایمر دو استفاده کنم
    کدام را پیشنهاد می دهید
    1 استفاده از کریستال تایمر دو
    2 استفاده از یک کریستال با فرکانس بیشتر
    سلام
    میخوای چیکار کنید ؟؟
    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
    معرفی نرم افزار Codewizard PWM
    با من بیشتر آشنا شوید

    دیدگاه


      #3
      پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

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

      دیدگاه


        #4
        پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

        نوشته اصلی توسط seda...
        سلام
        می خوام جهت چرخش دو تا موتور را بسته به شرایط محیط کنترل کنم. که این تایمر یه بخشی از اون شرایط هست.
        البته می خوام توی برنامه از ریموت هم استفاده کنم.
        درود
        خیلی سر بسته صحبت میکنی ...
        استفاده کردن از کریستال ساعت برای دقیقتر بودن زمان به دست آمده هست ...
        شما میخواین زمان 1ثانیه دقیق را به دست آورید ؟؟
        یا اینکه زمان دیگری ؟؟
        یا اینکه میخواهید با تایمر ها کار خاصی انجام دهید ؟؟
        [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
        معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
        معرفی نرم افزار Codewizard PWM
        با من بیشتر آشنا شوید

        دیدگاه


          #5
          پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

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

          دنيا آنقدر وسيع هست که براي همه مخلوقات جايي باشد پس به جاي آنکه جاي کسي را بگيريم تلاش کنيم جاي واقعي خود را بيابيم

          دیدگاه


            #6
            پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

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

            ربطی به پایین و بالا بودن فرکانس نداره ...
            شما اگر نیازتون همون یک ثانیه هست که بهتون میتونم کمک کنم ...
            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
            معرفی نرم افزار Codewizard PWM
            با من بیشتر آشنا شوید

            دیدگاه


              #7
              پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

              واقعا لطف م یکنید. من الان حدود دو روز درگیر این ا ثانیه هستم.
              این برنامه ای که برای تایمر نوشتم. شکل موج ها کاملا درسته ولی مقداری که روی lCD نشون میده خیلی کندتر عمل می کنه
              از تایمر دو استفاده کردم. از فرکانس 16000000 استفاده کردم که دیگه مشکل تنظیم فیوزبیت نداشته باشم. و توی برنامه اونا تقسیم بر 64 کردم که هر 250 تایی که بشماره بشه یک میلی ثانیه

              http://upload7.ir/download/54a27acc488c6/wave.png


              http://upload7.ir/download/54a27dc864f49/timer.zip
              دنيا آنقدر وسيع هست که براي همه مخلوقات جايي باشد پس به جاي آنکه جاي کسي را بگيريم تلاش کنيم جاي واقعي خود را بيابيم

              دیدگاه


                #8
                پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

                نوشته اصلی توسط seda...
                واقعا لطف م یکنید. من الان حدود دو روز درگیر این ا ثانیه هستم.
                این برنامه ای که برای تایمر نوشتم. شکل موج ها کاملا درسته ولی مقداری که روی lCD نشون میده خیلی کندتر عمل می کنه
                از تایمر دو استفاده کردم. از فرکانس 16000000 استفاده کردم که دیگه مشکل تنظیم فیوزبیت نداشته باشم. و توی برنامه اونا تقسیم بر 64 کردم که هر 250 تایی که بشماره بشه یک میلی ثانیه

                http://upload7.ir/download/54a27acc488c6/wave.png


                http://upload7.ir/download/54a27dc864f49/timer.zip
                با کدویژن
                http://www.eca.ir/forum2/index.php?topic=103359.0

                با بسکام
                http://www.eca.ir/forum2/index.php?topic=102533.0
                [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                معرفی نرم افزار Codewizard PWM
                با من بیشتر آشنا شوید

                دیدگاه


                  #9
                  پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

                  سلام.
                  اون لینک هم بررسی کردم . دو تا برنامه گذاشته بودید اونا راهم دیدم ولی مشکل من حل نشد. اگه شکل موج زمان ها را ببینم درسته ولی شمارش lcd درست نیست . برنامه های شما را هم با پروتئوس دیدم همین مشکل داشتن.
                  نمی دونم باید جواب lcd را قبول کنم یا شکل موج ها را :angry: :angry: :angry: :angry:
                  دنيا آنقدر وسيع هست که براي همه مخلوقات جايي باشد پس به جاي آنکه جاي کسي را بگيريم تلاش کنيم جاي واقعي خود را بيابيم

                  دیدگاه


                    #10
                    پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

                    نوشته اصلی توسط seda...
                    سلام.
                    اون لینک هم بررسی کردم . دو تا برنامه گذاشته بودید اونا راهم دیدم ولی مشکل من حل نشد. اگه شکل موج زمان ها را ببینم درسته ولی شمارش lcd درست نیست . برنامه های شما را هم با پروتئوس دیدم همین مشکل داشتن.
                    نمی دونم باید جواب lcd را قبول کنم یا شکل موج ها را :angry: :angry: :angry: :angry:
                    شما بفرمایید که با چه زبانی کار میکنید و چه زمانی مد نظرتون هست ...
                    روی ال سی دی چی میخواین بنویسید ؟؟
                    کامل بگید :redface:
                    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                    معرفی نرم افزار Codewizard PWM
                    با من بیشتر آشنا شوید

                    دیدگاه


                      #11
                      پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

                      نوشته اصلی توسط سامان اسدی
                      شما بفرمایید که با چه زبانی کار میکنید و چه زمانی مد نظرتون هست ...
                      روی ال سی دی چی میخواین بنویسید ؟؟
                      کامل بگید :redface:
                      با زبان C . نمایش زمان روی lcd برام مهم نیست. و فقط برای چک کردن الان ازش استفاه می کنم. ولی این برام سوال شده چرا فرکانس درست نشون می ده ولی lcd نه ؟
                      بر نامه را به همراه شکل موج ها توی دو تاپیک قبل گذاشتم .
                      دنيا آنقدر وسيع هست که براي همه مخلوقات جايي باشد پس به جاي آنکه جاي کسي را بگيريم تلاش کنيم جاي واقعي خود را بيابيم

                      دیدگاه


                        #12
                        پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا &

                        نوشته اصلی توسط seda...
                        با زبان C . نمایش زمان روی lcd برام مهم نیست. و فقط برای چک کردن الان ازش استفاه می کنم. ولی این برام سوال شده چرا فرکانس درست نشون می ده ولی lcd نه ؟
                        بر نامه را به همراه شکل موج ها توی دو تاپیک قبل گذاشتم .
                        کد:
                        interrupt [EXT_INT1] void ext_int1_isr(void)
                        {
                        if(PIND.5==0)
                          x=1;
                          PORTD.4=1;
                         if(PIND.6==0)
                          x=2; PORTD.4=1;
                          
                         if(PINB.0==0)
                          x=3; PORTD.4=1;
                         
                         if(PINB.1==0)
                          x=4; PORTD.4=1;
                         
                         if(PINB.2==0)
                          x=5; PORTD.4=1;
                         
                         if(PINB.3==0)
                          x=6; PORTD.4=1;
                          
                         if(PINB.4==0)
                          x=7; PORTD.4=1;
                         
                         if(PINB.5==0)
                          x=8;PORTD.4=1;   
                         
                         if(PINB.6==0)
                          x=9; PORTD.4=1;
                         
                         if(PINB.7==0)
                          x=10; PORTD.4=1;
                        توی این قسمتش
                        دستورات شرطی رو درست گذاشتید ؟؟
                        پس کو بلاک بلاکش ؟؟
                        یا اینکه فقط خواستید دستور بعد از شرط اجرا بشه ؟؟
                        [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                        معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                        معرفی نرم افزار Codewizard PWM
                        با من بیشتر آشنا شوید

                        دیدگاه


                          #13
                          پاسخ : پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا &



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


                          کد:
                          #define xtal 16000000
                          #include <mega16.h>
                          #include <delay.h>
                          #include <stdio.h>
                          #include <lcd.h> 
                          unsigned char second=0, minute=0,hour=0;
                          long int mili_second=0;
                          char buffer[15];
                          #asm
                            .equ __lcd_port = 0x1b;
                          #endasm
                          interrupt [TIM2_OVF] void over_flow_timer(void)
                          {
                            PORTD.7=~PORTD.7;// TIME OF 1 mili_second
                            mili_second++;
                            if (mili_second==999) 
                            {
                              second++;
                              mili_second=0;
                              PORTD.6=~PORTD.6; // TIME OF 1 second
                            }
                            if (second==59) 
                            {
                              second=0;PORTD.5=~PORTD.5;
                              minute++;
                            }
                            if (minute==59)
                            {
                              minute=0;
                              hour++;
                            }   
                            TCNT2=0x06;
                            
                          }
                          void main()
                          {
                            
                            DDRC=0x00;
                            DDRD=0XFF;
                            PORTD.7=0;
                            PORTD.6=0;
                            DDRA=0xFF;
                            lcd_init(16); 
                            ASSR=0x00;
                            TCCR2=0B00010100;
                            TIMSK=0b01000000; 
                            TCNT2=0x06;
                            #asm("sei");
                            while(1)
                            {
                             
                            lcd_gotoxy(0,0);
                            sprintf(buffer,"Time = %d:%d:%d",hour, minute,second);    
                            lcd_puts (buffer);
                            }
                          }
                          دنيا آنقدر وسيع هست که براي همه مخلوقات جايي باشد پس به جاي آنکه جاي کسي را بگيريم تلاش کنيم جاي واقعي خود را بيابيم

                          دیدگاه


                            #14
                            پاسخ : پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا &

                            نوشته اصلی توسط seda...

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


                            کد:
                            #define xtal 16000000
                            #include <mega16.h>
                            #include <delay.h>
                            #include <stdio.h>
                            #include <lcd.h> 
                            unsigned char second=0, minute=0,hour=0;
                            long int mili_second=0;
                            char buffer[15];
                            #asm
                              .equ __lcd_port = 0x1b;
                            #endasm
                            interrupt [TIM2_OVF] void over_flow_timer(void)
                            {
                              PORTD.7=~PORTD.7;// TIME OF 1 mili_second
                              mili_second++;
                              if (mili_second==999) 
                              {
                                second++;
                                mili_second=0;
                                PORTD.6=~PORTD.6; // TIME OF 1 second
                              }
                              if (second==59) 
                              {
                                second=0;PORTD.5=~PORTD.5;
                                minute++;
                              }
                              if (minute==59)
                              {
                                minute=0;
                                hour++;
                              }   
                              TCNT2=0x06;
                              
                            }
                            void main()
                            {
                              
                              DDRC=0x00;
                              DDRD=0XFF;
                              PORTD.7=0;
                              PORTD.6=0;
                              DDRA=0xFF;
                              lcd_init(16); 
                              ASSR=0x00;
                              TCCR2=0B00010100;
                              TIMSK=0b01000000; 
                              TCNT2=0x06;
                              #asm("sei");
                              while(1)
                              {
                               
                              lcd_gotoxy(0,0);
                              sprintf(buffer,"Time = %d:%d:%d",hour, minute,second);    
                              lcd_puts (buffer);
                              }
                            }
                            برنامه ساعت رو اینطوری بنویس
                            کد:
                            interrupt [TIM2_OVF] void timer2_ovf_isr(void)
                            {  
                              if(++S == 60)
                              {
                                S=0;
                                if(++M == 60)
                                {
                                  M=0;
                                  if(++H == 24)H=0;
                                }    
                              }
                              sprintf(str,"%2d:%2d:%2d",H,M,S);  
                              lcd_clear();
                              lcd_puts(str);
                            }
                            این برنامه هم برای تاخیر زمانهای طولانی است ...
                            http://www.eca.ir/forum2/index.php?topic=103359.msg663898#msg663898
                            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                            معرفی نرم افزار Codewizard PWM
                            با من بیشتر آشنا شوید

                            دیدگاه


                              #15
                              پاسخ : طراحی تایمر با استفاده از کریستال 32678 یا فرکانس بالاتر

                              آقای اسدی ممنون واقعا لطف کردید
                              تغییراتی هم که شما گفتید اعمال کردم ولی باز نتیجه همون بود و فقط به این نتیجه رسیدم که مشکل از پروتئوس باشه و یا codevision
                              فعلا میرم پروتئوس 8 نصب کنم


                              ------------------------------------------------------------
                              پروتئوس 8 نصب کردم سرعت شمارش پایین تر از قبلی بود. فکر کنم مشکل از همین پروتئوس باشه
                              دنيا آنقدر وسيع هست که براي همه مخلوقات جايي باشد پس به جاي آنکه جاي کسي را بگيريم تلاش کنيم جاي واقعي خود را بيابيم

                              دیدگاه

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