اطلاعیه

Collapse
No announcement yet.

مشکل باتری بک آپ در ds1307

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

    مشکل باتری بک آپ در ds1307

    سلام دوستان به یک مشکل بر خوردم دارم پروژه می بندم با ds 1307 اما باتری بک آپ رو به صورت صحیح وصل میکنم
    ولی وقتی منبع تغزیه اصلی رو قطع میکنم و دوباره وصل میکنم ساعت از اول شروع میکنه به کار اگر شما به زبان c برنامه حرفه ای دارین
    بزارین خداییش چهارشنبه باید تحویل بدم ممنون
    dont lose hope

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

    شما احتمالا قبل از حلقه وایل از دستور rtc_set_time دارید استفاده میکنید و یا کلا برنامتون طوریه که با هربار روشن شدن میکرو این دستور اجرا میشه.
    www.gam-co.blogsky.com

    دیدگاه


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

      نوشته اصلی توسط vahidabedi نمایش پست ها
      شما احتمالا قبل از حلقه وایل از دستور rtc_set_time دارید استفاده میکنید و یا کلا برنامتون طوریه که با هربار روشن شدن میکرو این دستور اجرا میشه.
      خب به جای این دستور چی بزارم من اینجوری زدم
      (rtc_set_time (h,,m,s
      (rtc_get_time(h,m,s
      ممنون میشم راهنمایی کنید
      dont lose hope

      دیدگاه


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

        سلام
        شما دیگه نیاز نیست هر بار که میکرو شروع به کار میکنه دستور (rtc_set_time (h,,m,s رو اجرا کنید
        یه بار واسه تنظیم ساعت کافیه و بعد از اون فقط با (rtc_get_time(h,m,s زمان رو بخونید
        شما باید چند تا کلید واسه تنظیم ساعت بزارید که فقط در صورت زدن اون کلیدها (rtc_set_time (h,,m,s اجرا بشه

        دیدگاه


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

          نوشته اصلی توسط M3R-E نمایش پست ها
          سلام
          شما دیگه نیاز نیست هر بار که میکرو شروع به کار میکنه دستور (rtc_set_time (h,,m,s رو اجرا کنید
          یه بار واسه تنظیم ساعت کافیه و بعد از اون فقط با (rtc_get_time(h,m,s زمان رو بخونید
          شما باید چند تا کلید واسه تنظیم ساعت بزارید که فقط در صورت زدن اون کلیدها (rtc_set_time (h,,m,s اجرا بشه
          بسیار ممنون بابت راهنمایی مشکل اصلی بنده هم همینجا بود که توی برنامه نتونستم سه تا پایه رو برای تغییر و set کردن ساعت تعریف کنم اگه شما میتونید این برنامه رو برام ادیت کنید
          کد:
          [FONT=Yekan]#include <mega32.h>[/FONT]
          
          // I2C Bus functions
          #asm
             .equ __i2c_port=0x15 ;PORTC
             .equ __sda_bit=0
             .equ __scl_bit=1
          #endasm
          #include <i2c.h>
          
          
          
          
          // DS1307 Real Time Clock functions
          #include <ds1307.h>
          
          
          // Alphanumeric LCD Module functions
          #asm
             .equ __lcd_port=0x18 ;PORTB
          #endasm
          #include <lcd.h>
          #include <stdio.h>
          #include <delay.h>
          
          
          // Declare your global variables here
          unsigned char h,m,s,d,month,y;
          char lcdbuff[33];
          
          
          void main(void)
          {
          // Declare your local variables here
          
          
          // Input/Output Ports initialization
          // Port A 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 
          PORTA=0x00;
          DDRA=0x00;
          
          
          // Port B 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 
          PORTB=0x00;
          DDRB=0x00;
          
          
          // Port C 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 
          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
          // Mode: Normal top=FFh
          // OC0 output: Disconnected
          TCCR0=0x00;
          TCNT0=0x00;
          OCR0=0x00;
          
          
          // Timer/Counter 1 initialization
          // Clock source: System Clock
          // Clock value: Timer 1 Stopped
          // Mode: Normal top=FFFFh
          // OC1A output: Discon.
          // OC1B output: Discon.
          // Noise Canceler: Off
          // Input Capture on Falling Edge
          // Timer 1 Overflow Interrupt: Off
          // Input Capture Interrupt: Off
          // Compare A Match Interrupt: Off
          // Compare B Match Interrupt: Off
          TCCR1A=0x00;
          TCCR1B=0x00;
          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: Timer 2 Stopped
          // Mode: Normal top=FFh
          // OC2 output: Disconnected
          ASSR=0x00;
          TCCR2=0x00;
          TCNT2=0x00;
          OCR2=0x00;
          
          
          // External Interrupt(s) initialization
          // INT0: Off
          // INT1: Off
          // INT2: Off
          MCUCR=0x00;
          MCUCSR=0x00;
          
          
          // Timer(s)/Counter(s) Interrupt(s) initialization
          TIMSK=0x00;
          
          
          // Analog Comparator initialization
          // Analog Comparator: Off
          // Analog Comparator Input Capture by Timer/Counter 1: Off
          ACSR=0x80;
          SFIOR=0x00;
          
          
          // I2C Bus initialization
          i2c_init();
          
          
          // DS1307 Real Time Clock initialization
          // Square wave output on pin SQW/OUT: Off
          // SQW/OUT pin state: 0
          rtc_init(0,1,0);
          rtc_set_time(h,m,s);
          rtc_set_date(7,7,7,7);
          
          
          // LCD module initialization
          lcd_init(16);
          
          
          while (1)
                {
                 
                rtc_get_time(&h,&m,&s);
                rtc_get_date(&y,&month,&d,&d); 
                sprintf(lcdbuff,"Time:%02u:%02u:%02u     ",h,m,s,d);
                lcd_gotoxy(0,0);
                lcd_puts(lcdbuff);
                };
          }
          dont lose hope

          دیدگاه


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

            دوست عزیز شما سعی خودتون رو بکنید اگر نشد ما هم کمک می کنیم.
            گر ما برنامه رو بنویسیم و کامپایل کنیم خب که نمیشه .
            خیلی راحت سه تا شرط if بزارید و سه پین رو چک کنید.
            قبل از ادامه هم یه شماتیک بزارید تا بدونیم چی به چیه.
            چرا ناراحتی پاتریک!
            + امروز ی بچه دیدم سرچهارراه گل میفروخت
            - از دیدنش ناراحت شدی؟
            + نه
            پس چی ناراحتت کرده
            + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
            ------------------------------------------------------------------------------------------------------
            تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
            ------------------------------------------------------------------------------------------------------
            محصولات

            دیدگاه


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

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

              پس نتیجه حرفم این شد
              شما در حالت عادی (ابتدای حلقه main و درون حلقه while) اصلا دستور set ننویسید

              دیدگاه


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

                نوشته اصلی توسط saeid_k68 نمایش پست ها
                صحبت جناب آراسته تایید میشه
                شما تلاشتون رو بکنید
                اما منم راهنمایی کنم
                شما با دتور set به آی سی اطلاعات اولیه میدین و آی سی طبق اطلاعات اولیه خودش شروع به کار میکنه.
                متغیر های شما وقتی روشن میکنید مقدار صفر دارن پس باید ساعتتون ریست بشه
                اما راهنمایی برای حل مشکل
                اول بیاین و دستورات set رو بردارثید از تو برنامه. اینجوری میکرو هیچ اطلاعاتی به آی سی ساعت نمیده تا اتفاق قبل بیوفته
                بعد تغذیه رو قطع کنید و وصل کنید ببینید هنوز این مشکل رو دارید که احتمالا نخواهید داشت
                دوم شما 2 پین ورودی تعریف کنید اگر اولی فشرده شد یه واحد ساعت رو افزایش بده بعد با دستور set بنویسش تو آی سی و اون کلید هم دقیقه

                پس نتیجه حرفم این شد
                شما در حالت عادی (ابتدای حلقه main و درون حلقه while) اصلا دستور set ننویسید
                ممنون از شما دوست عزیز خدارو شکر مشکلم حل شد و کلک زدم سر میکرو
                اومدم مقدار اولیه تعریف کردم و میکرو رو توی مدار گذاشتم و دو تا پین برای تغییر min و hour
                تعریف کردم و چن تا تغییر دادم به همون پین ها و میکرو رو از مدار در آوردم برنامه شو تغییر دادم اما تغزیه برد رو قطع نکردم و دستور set رو از
                برنامه دلیت کردم و کامپایل کردم وقتی میکرو رو گذاشتم خیلی شیک شروع کرد به کارکردن و به لطف باتری بک آپ این اتفاق افتاد و ds1307 مقدار قبلی رو سیو کرده
                بود

                سپاس فراوان
                dont lose hope

                دیدگاه


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

                  بابا این ژانگولر بازیا چیههههههههه

                  ولی شما فقط get کن بدون این کارا همین نتیجه رو میگیری بعد به مرور بقیه قسمت هایی رو که میخوای اضافه کن

                  دیدگاه


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

                    با سلام دوستان
                    ببخشید در همین ضمینه من هم یه سوال داشتم اگر امکان داره راهنماییم کنید ممنون می شم
                    می خواستم ببینم می شه از یه باتری بک اپ برای هم ماژول ساعت و هم Gps neo 6m استفاده کرد (برای حافظه eeprom)؟ اگر می شه همزمان استفاده کرد ایا باید نکته ای یا چیزی رو مد نظر قرار داد
                    مرسی

                    دیدگاه

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