اطلاعیه

Collapse
No announcement yet.

ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

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

    ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

    خوب من بیشتر مطالب انجمن درباره ساعت ، تایمر خوندم ولی باز هم نتونستم یه ساعت دقیق بسازم

    میکرو : Mega8L
    کریستال 32768 هرتزه
    محیط : کدویژن

    Chip type : ATmega8L
    Program type : Application
    AVR Core Clock frequency: 1.000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 256

    کد برنامه :

    کد:
    #include <mega8.h>
    #include <stdio.h>
    #include <alcd.h>
    
    unsigned char h,m,s;
    
    void show(void)
    {
    char str1[32];
    sprintf(str1,"time= %d:%d:%d",h,m,s);
    lcd_clear();
    lcd_puts(str1);
    
    PORTB.0=~PORTB.0;
    }
    
    
    interrupt [TIM2_OVF] void timer2_ovf_isr(void)
    {
    if(s==59)
      {
        s=0;
        if(m==59)
          {
           m=0;
           h++;
           if(h==24)h=0; 
          }
        else
          m++;
      }
    else
      s++;
      
    show();
    }
    
    void main(void)
    {
    ASSR=0x08;
    TCCR2=0x05;
    TCNT2=0x00;
    OCR2=0x00;
    TIMSK=0x40;
    
    lcd_init(16);
    DDRB.0=1;
    DDRB.1=0;
    
    #asm("sei")
    
    while (1);
    }

    نحویه کارم به این صورت هستش که
    کریستال ساعت رو به پایه های 9 و 10 میکرو وصل کردم ( بدون خازن )
    فرکانس به صورت پیش فرض رو 1،000،000 هستش و هیچ تغیییری ندادم
    فیوز بیتی رو تغییر ندادم

    نتیتجه :
    تایمری که ساختم خیلی سریع کار می کنه
    اینها رو هم تست کردم
    TCCR2=0x06
    باز سریعتر هستش

    TCCR2=0x07
    سرعتش کمه یعنی 15 ثانیه توی هر یک دقیقه کم هستش


    اگه نیاز به تنظیم و یا کار خواصی هست لطفا بگید .
    ندن ساقی صفا اهلی ، غم دنیادن آیریلماز ** گتیر دولدور گینه جامی ، بالیخ دریادن آیریلماز
    غنیمتدیر بو دم ساقی ، گتیر دولدور گنه جامی ** جهاندا رسمدور عاشق ، می و مینادن آیریلماز

    #2
    پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

    از خازن ها استفاده کن.
    ?Why not

    دیدگاه


      #3
      پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

      اخطار - زمانی که شما در حال تایپ بودید موضوع جدید ارسال شده است. شما می توانید مجددا ارسال خود را ببینید.
      مشکل حل شد

      اصلا مشکلی نبود که از اول هم

      تنها سوتی که داشتم این بود که کریستال رو با فاصله از آی سی قرار داده بودم الان چسبوندم به پایه میکرو

      خیلی عالیه داره کار می کنه

      ندن ساقی صفا اهلی ، غم دنیادن آیریلماز ** گتیر دولدور گینه جامی ، بالیخ دریادن آیریلماز
      غنیمتدیر بو دم ساقی ، گتیر دولدور گنه جامی ** جهاندا رسمدور عاشق ، می و مینادن آیریلماز

      دیدگاه


        #4
        مراحل وصل کردن کریستال ساعت به میکرو و تنظی&#

        خوب گفتم یه پست کامل در این زمینه بزارم تا دوستان دیگه استفاده کنن

        میکرو : Mega8L
        محیط : کدویژن
        کریستال ساعت 32768 هرتزه

        سخت افزاری :
        1- خوب حالا کریستال ساعت را به پایه های شماره 9 و 10 میکرو Mega8L وصل می کنید .

        نرم افزاری :
        کد زیر را در برنامه خود قرار می دهید :

        ASSR=0x08;
        TCCR2=0x05;
        TCNT2=0x00;
        OCR2=0x00;

        TIMSK=0x40;

        هیچ فیوز بیتی رو تنظیم نمی کنید ( به صورت پیش فرض روی 1،000،000 هستش )

        این کد کامل برای یک ساعت دقیق :
        #include <mega8.h>
        #include <stdio.h>
        #include <alcd.h>

        unsigned char h,m,s;

        void show(void)
        {
        char str1[32];
        sprintf(str1,"time= %d:%d:%d",h,m,s);
        lcd_clear();
        lcd_puts(str1);

        }


        interrupt [TIM2_OVF] void timer2_ovf_isr(void)
        {
        if(s==59)
        {
        s=0;
        if(m==59)
        {
        m=0;
        h++;
        if(h==24)h=0;
        }
        else
        m++;
        }
        else
        s++;

        show();
        }

        void main(void)
        {
        ASSR=0x08;
        TCCR2=0x05;
        TCNT2=0x00;
        OCR2=0x00;

        TIMSK=0x40;

        lcd_init(16);

        #asm("sei&quot

        while (1);
        }

        در حال حاضر درست 25 دقیقه هستش که میکرو داره به صورت درست زمان رو نشون می ده.
        موفق باشید
        ندن ساقی صفا اهلی ، غم دنیادن آیریلماز ** گتیر دولدور گینه جامی ، بالیخ دریادن آیریلماز
        غنیمتدیر بو دم ساقی ، گتیر دولدور گنه جامی ** جهاندا رسمدور عاشق ، می و مینادن آیریلماز

        دیدگاه


          #5
          پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

          ممنون اما یه شماتیکم از مدارت بذار
          اگر فایل شبیه سازی در Proteus داری یا هر چیز دیگه بذار بقیه هم بتونن استفاده کنن
          برنامه بدون شماتیک آخه؟!
          درایور شبکه و nRF24L01
          کاتالوگ محصولات
          کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
          شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
          فروش اسیلوسکوپ GWinstek GOS-630FC

          دیدگاه


            #6
            پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

            با سلام
            دوستان در مورد RTC باید بگم وقتی شما تایمر 2 رو تو مد اسنکرون با کریستال 32768 هرتز قرار می دین دیگه کار این تایمر مجزا از اسیلاتور اصلی میشه. پس اگه فیوزبیت رو روی هر فرکانس دیگه ای هم بزارید باز مشکلی نیست و تایمر با توجه به تنظیمات(تقسیم بر 128)، به صورت اتوماتیک هر یک ثانیه اینتراپت میده.
            موقع اتصال این کریستال نیازی به استفاده از خازن نیست.
            بازم سوالی بود در حد توان در خدمتم.
            موفق باشید
            چرا ناراحتی پاتریک!
            + امروز ی بچه دیدم سرچهارراه گل میفروخت
            - از دیدنش ناراحت شدی؟
            + نه
            پس چی ناراحتت کرده
            + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
            ------------------------------------------------------------------------------------------------------
            تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
            ------------------------------------------------------------------------------------------------------
            محصولات

            دیدگاه


              #7
              پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

              نوشته اصلی توسط سوران آراسته
              با سلام
              دوستان در مورد RTC باید بگم وقتی شما تایمر 2 رو تو مد اسنکرون با کریستال 32768 هرتز قرار می دین دیگه کار این تایمر مجزا از اسیلاتور اصلی میشه. پس اگه فیوزبیت رو روی هر فرکانس دیگه ای هم بزارید باز مشکلی نیست و تایمر با توجه به تنظیمات(تقسیم بر 128)، به صورت اتوماتیک هر یک ثانیه اینتراپت میده.
              موقع اتصال این کریستال نیازی به استفاده از خازن نیست.
              بازم سوالی بود در حد توان در خدمتم.
              موفق باشید
              ممنون فقط این که وقتی کریستال 32768 هرتز قرار بدیم برای ATmega8 دیگه کریستال خارجی نمیشه گذاشت چون پایه های XTAL1/TOSC1 PB6
              و XTAL2/TOSC2 PB7 میکرو مشترک هستند درست میگم؟!

              یه سوال دیگه هم دارم این که اگه بخوام با ATmega8 توی 2تا مد کار کنم ساعت و تایمر که تا هزارم ثانیه رو بتونه بشماره ، بنظر شما باید چیکار کنم؟! ( در مورد تقسیم کریستال که فرمودید اگر بر 128 باشه میشه 1ثانیه الان میخوام هر 1هزارم ثانیه اینتراپت بده چکار کنم؟!)
              و میخوام وقتی میکرو روشن میشه روی 7سگمنت ساعت باشه که تا اینجاشو درست کردم مشکلی نداره بعد میخوام با زدن یه دکمه بره توی مد تایمر و همه 7سگمنتا 0 بشن و با 2تا دکمه استارت/استاپ و ریست بشه کنترلشون کرد ( که ایناش مشکلی نداره ) الان میخوام بدونم برای رفتن از حالت ساعت به تایمر برنامه تایمرو کجا قرار بدم و چطور بینشون سویچ کنم؟!
              یعنی باید برنامه تایمر توی سرویس روتین انتراپت خارجی روی پایه ای باشه که دکمه تغییر مد قرار داره یا کار دیگه ای باید بکنم؟! ( نمیدونم مثلا برنامه تایمر رو در ادامه برنامه ساعت بنویسم یا نه و میخوام در حالت تایمر ساعت به کار خودش ادامه بده و وقتی از تایمر به مد ساعت برمیگردیم ساعت به کار خودش ادامه بده و عقب نمونه چکار باید بکنم؟!)
              درایور شبکه و nRF24L01
              کاتالوگ محصولات
              کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
              شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
              فروش اسیلوسکوپ GWinstek GOS-630FC

              دیدگاه


                #8
                پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

                نوشته اصلی توسط Bastam (بسطام)
                ممنون فقط این که وقتی کریستال 32768 هرتز قرار بدیم برای ATmega8 دیگه کریستال خارجی نمیشه گذاشت چون پایه های XTAL1/TOSC1 PB6
                و XTAL2/TOSC2 PB7 میکرو مشترک هستند درست میگم؟!

                یه سوال دیگه هم دارم این که اگه بخوام با ATmega8 توی 2تا مد کار کنم ساعت و تایمر که تا هزارم ثانیه رو بتونه بشماره ، بنظر شما باید چیکار کنم؟! ( در مورد تقسیم کریستال که فرمودید اگر بر 128 باشه میشه 1ثانیه الان میخوام هر 1هزارم ثانیه اینتراپت بده چکار کنم؟!)
                و میخوام وقتی میکرو روشن میشه روی 7سگمنت ساعت باشه که تا اینجاشو درست کردم مشکلی نداره بعد میخوام با زدن یه دکمه بره توی مد تایمر و همه 7سگمنتا 0 بشن و با 2تا دکمه استارت/استاپ و ریست بشه کنترلشون کرد ( که ایناش مشکلی نداره ) الان میخوام بدونم برای رفتن از حالت ساعت به تایمر برنامه تایمرو کجا قرار بدم و چطور بینشون سویچ کنم؟!
                یعنی باید برنامه تایمر توی سرویس روتین انتراپت خارجی روی پایه ای باشه که دکمه تغییر مد قرار داره یا کار دیگه ای باید بکنم؟! ( نمیدونم مثلا برنامه تایمر رو در ادامه برنامه ساعت بنویسم یا نه و میخوام در حالت تایمر ساعت به کار خودش ادامه بده و وقتی از تایمر به مد ساعت برمیگردیم ساعت به کار خودش ادامه بده و عقب نمونه چکار باید بکنم؟!)
                به نظر من بهتره که از آی سی DS1307 برای ساعت استفاده کنی و تایمر رو با خود میکرو طراحیش کنی
                ندن ساقی صفا اهلی ، غم دنیادن آیریلماز ** گتیر دولدور گینه جامی ، بالیخ دریادن آیریلماز
                غنیمتدیر بو دم ساقی ، گتیر دولدور گنه جامی ** جهاندا رسمدور عاشق ، می و مینادن آیریلماز

                دیدگاه


                  #9
                  پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

                  نوشته اصلی توسط ele_sav
                  به نظر من بهتره که از آی سی DS1307 برای ساعت استفاده کنی و تایمر رو با خود میکرو طراحیش کنی
                  یعنی یه کریستال ساعتی بذارم برا DS1307 اون خودش کاره ساعتو بکنه هروقت زمانو خواستم با پورت سریال ساعتو ازش بخونم و کار تایمرو با یه کریستال فرکانس بالا و دقت زیاد درست کنم؟!
                  درایور شبکه و nRF24L01
                  کاتالوگ محصولات
                  کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                  شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                  فروش اسیلوسکوپ GWinstek GOS-630FC

                  دیدگاه


                    #10
                    پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

                    نوشته اصلی توسط Bastam (بسطام)
                    یعنی یه کریستال ساعتی بذارم برا DS1307 اون خودش کاره ساعتو بکنه هروقت زمانو خواستم با پورت سریال ساعتو ازش بخونم و کار تایمرو با یه کریستال فرکانس بالا و دقت زیاد درست کنم؟!
                    آره


                    نوشته اصلی توسط Bastam (بسطام)
                    ممنون اما یه شماتیکم از مدارت بذار
                    اگر فایل شبیه سازی در Proteus داری یا هر چیز دیگه بذار بقیه هم بتونن استفاده کنن
                    برنامه بدون شماتیک آخه؟!
                    عکس از شماتیک


                    فایل شبیه سازی + سورس کد
                    http://uplod.ir/eyklvoo1k7cl/timer.rar.htm
                    ندن ساقی صفا اهلی ، غم دنیادن آیریلماز ** گتیر دولدور گینه جامی ، بالیخ دریادن آیریلماز
                    غنیمتدیر بو دم ساقی ، گتیر دولدور گنه جامی ** جهاندا رسمدور عاشق ، می و مینادن آیریلماز

                    دیدگاه


                      #11
                      پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

                      ممنون ولی میخوام اگه بشه با برنامه نویسی تایمرم بگنجونم توش و دنبال ارتباط سریالو این دردسرا نرم
                      این سایت هم مشکل داره نمیشه دانلود کرد ولی به سختی دانلود کردم
                      چرا کسی از Mediafire استفاده نمیکنه؟!
                      بهترین سایت برای Upload و Download فایله بخدا
                      درایور شبکه و nRF24L01
                      کاتالوگ محصولات
                      کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                      شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                      فروش اسیلوسکوپ GWinstek GOS-630FC

                      دیدگاه


                        #12
                        پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

                        نوشته اصلی توسط Bastam (بسطام)
                        ممنون ولی میخوام اگه بشه با برنامه نویسی تایمرم بگنجونم توش و دنبال ارتباط سریالو این دردسرا نرم
                        دردسر زیادی نداره ها
                        ویزارد کدویژن که همه کار رو انجام می ده فقط می مونه خوندن مقدار از آی سی DS1307 که اون هم چیزه زیاد سختی نیست
                        با کد زیر زمان رو می تونی بخونی
                        کد:
                         rtc_get_time(&h,&m,&s);
                        این آی سی ساعت و تاریخ رو واست نیگه می داره و با به باطری بکاپ می تونی همیشه ساعت رو داشته باشی ( حتی زمانی که میکرو ریسیت می شه )

                        یه سری تایپیک های خوبی در انجمن در این باره هست که اونها رو اگه مطالعه کنی

                        من هم تازه واردم هستم توی این زمینه ولی توی بعضی از پروژه هام می خوام کلا از این آی سی DS1307 استفاده کنم اگه سوالی در این باره داشتید بگید
                        ندن ساقی صفا اهلی ، غم دنیادن آیریلماز ** گتیر دولدور گینه جامی ، بالیخ دریادن آیریلماز
                        غنیمتدیر بو دم ساقی ، گتیر دولدور گنه جامی ** جهاندا رسمدور عاشق ، می و مینادن آیریلماز

                        دیدگاه


                          #13
                          پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

                          نوشته اصلی توسط ele_sav
                          دردسر زیادی نداره ها
                          ویزارد کدویژن که همه کار رو انجام می ده فقط می مونه خوندن مقدار از آی سی DS1307 که اون هم چیزه زیاد سختی نیست
                          با کد زیر زمان رو می تونی بخونی
                          کد:
                           rtc_get_time(&h,&m,&s);
                          این آی سی ساعت و تاریخ رو واست نیگه می داره و با به باطری بکاپ می تونی همیشه ساعت رو داشته باشی ( حتی زمانی که میکرو ریسیت می شه )

                          یه سری تایپیک های خوبی در انجمن در این باره هست که اونها رو اگه مطالعه کنی

                          من هم تازه واردم هستم توی این زمینه ولی توی بعضی از پروژه هام می خوام کلا از این آی سی DS1307 استفاده کنم اگه سوالی در این باره داشتید بگید
                          مرسی یه چیزایی خوندم اما چشم بازم بیشتر میخونم اگه مشکلی بود مزاحمتون میشم
                          درایور شبکه و nRF24L01
                          کاتالوگ محصولات
                          کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                          شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                          فروش اسیلوسکوپ GWinstek GOS-630FC

                          دیدگاه


                            #14
                            پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

                            آقا مرسی برنامشو نوشتم با کدویژن و 7سگمنت و توی پروتئوس هم شبیه سازی کردم فقط با ساعت کامپیوتر چک میکنم توی هر 60 ثانیه 10 ثانیه عقب میوفته که خیلی بده
                            بنطرت مشکل از شبیه سازی پروتئوسه؟! یا مشکل دیگه ای داره؟!
                            برنامه و تمام فایل ها رو میذارم ببینی و این که شاید به درد بخوره

                            http://www.mediafire.com/?dpy4w3r43c1s8ns

                            خب الان برای این چطور Stopwatch بذارم؟!
                            یعنی مشکلم با Prescale و مقدار کریستاله که میلی ثانیه رو دقیق تولید کنه
                            درایور شبکه و nRF24L01
                            کاتالوگ محصولات
                            کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                            شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                            فروش اسیلوسکوپ GWinstek GOS-630FC

                            دیدگاه


                              #15
                              پاسخ : ساعت دقیق با Mega8L و کریستال ساعت 32768 هرتزه

                              نوشته اصلی توسط Bastam (بسطام)
                              آقا مرسی برنامشو نوشتم با کدویژن و 7سگمنت و توی پروتئوس هم شبیه سازی کردم فقط با ساعت کامپیوتر چک میکنم توی هر 60 ثانیه 10 ثانیه عقب میوفته که خیلی بده
                              بنطرت مشکل از شبیه سازی پروتئوسه؟! یا مشکل دیگه ای داره؟!


                              این تاخیر به برنامه هست اگه دقت کنی وقتی برنامه را در شبیه ساز اجرا می کنی پردازش سیستم بالا می ره و این خطا از خود سیستم هست اگه به صورت عملی مدار رو ببندی این مشکل رو نخواهی داشت

                              البته یه نکته ای که باید رعایت کنی اینه که موقع لحیم کاری کریستال نباید کریستال رو زیاد داغ کنی چون از دقتش کاسته می شه
                              من سه تا کریستال الان دارم که هیچ کدوم دقیق کار نمی کنه و توی 60 دقیقه 3 دقیقه یا جلو می افته یا عقب پس این نکته رو رعایت کن
                              1- کریستال رو نزدیک آی سی بزار
                              2- موقع لحیم کاری زیاد گرمش نکن
                              3- یک سیم رو لخت کن و ( دو دور ) دور کریستال بپیچ و به منفی وصل کن

                              http://www.mediafire.com/?dpy4w3r43c1s8ns

                              خب الان برای این چطور Stopwatch بذارم؟!
                              یعنی مشکلم با Prescale و مقدار کریستاله که میلی ثانیه رو دقیق تولید کنه
                              برای این کار هم می تونی داخل حلقه مقدار کلید رو چک کنی داخل انجمن یه سری تایپیک در این زمینه هست
                              http://www.eca.ir/forum2/index.php?topic=66241.msg385847#msg385847

                              و یا از وقفه ها هم می تونی استفاده کنی

                              هر کدوم رو خواستی اول چستجو کن توی انجمن اطلاعات زیادی هست اگه به نتیجه نرسیدی بگو کمکت کنیم
                              ندن ساقی صفا اهلی ، غم دنیادن آیریلماز ** گتیر دولدور گینه جامی ، بالیخ دریادن آیریلماز
                              غنیمتدیر بو دم ساقی ، گتیر دولدور گنه جامی ** جهاندا رسمدور عاشق ، می و مینادن آیریلماز

                              دیدگاه

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