اطلاعیه

Collapse
No announcement yet.

مشکل: قطع شمارش RTC هنگام وصل تغذیه

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

    مشکل: قطع شمارش RTC هنگام وصل تغذیه

    با سلام خدمت دوستان،
    یه مشکلی خوردم که واقعا عجیبه و دردسر ساز :sad:
    من از بورد طراحی خودم، و میکروی LPC 1768 استفاده می کنم
    قبلاً بردی که زده بودم به خوبی کار می کرد (و میکنه)، یه سری اصلاحات جدیدی روش داده بودم و الان که با بورد جدید کار میکنم، وقتی تغذیه اصلی مدار رو (مدارش با 2576 بسته شده) وصل می کنم، شمارش RTC از کار میفته! (حتی وقتی JLink رو وصل میکنم) و وقتی خاموشه مدار (البته باتری ساعت هس) شمارش رو انجام میده!
    هرجا هم جستجو کردم به نتیجه ای نرسیدم :(
    کسی نمیدونه چیکار باید کرد؟

    لازم به ذکره که مدار RTC (البته مداری ام نداره :mrgreen: ) رو نسبت به برد قبلی تغییری ندادم...

    با تشکر

    «پشتکار» «پشتکار» «پشتکار»

    #2
    پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

    یه نکته ای،
    یه برگه لیست اشتباهات (Errata Sheet) زده شرکت NXP برای سری 1763 - 1769 که به مشکلی از RTC هم توش اشاره شده:

    خب نوشته های روی میکروی من به این شرحه:
    LPC1768FBD100
    S2Y077
    ZSD1421A
    اگه اون A اخرین خط رو به عنوان نسخه اصلاحی در نظر بگیرم، مشکل RTC به گفته ی همین برگه، برای نسخه های "-" بوده! و در نسخه های بعدی A و B حل شده.
    مشکل RTC ذکر شده:


    حالا مشکل اینجاس که من چندتا 1768 این بار از ECA خریدم و متأسفانه همشون به همین شکلن! (البته با فرض اینکه مشکل از بردهای جدید نباشه)

    «پشتکار» «پشتکار» «پشتکار»

    دیدگاه


      #3
      پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

      با سلام
      باتریتون درسته؟ این جور که میگین مشکل از تغذیه RTC هست
      The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

      دیدگاه


        #4
        پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

        سلام،
        ممنون از پاسختون

        بله باتری نو هست و ولتاژ 3.05 میده. حتی تا پایه VBAT خود میکرو هم چک کردم به درستی ولتاژ میرسه. (حتی ولتاژ تغذیه میکرو رو هم مستقیم وصل کردم ولی افاقه نکرد)
        البته الان که برقم قطع میکنم بازم نمیشماره!

        «پشتکار» «پشتکار» «پشتکار»

        دیدگاه


          #5
          پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

          برق 3.3 تغذیه رو وصل نکردی به باطری

          دیدگاه


            #6
            پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

            نوشته اصلی توسط gbg
            برق 3.3 تغذیه رو وصل نکردی به باطری
            نه دوست عزیز، به صورت مستقیم از باتری یه سیم رفته به میکرو (VBAT) و به هیچ جای دیگه متصل نیستن

            «پشتکار» «پشتکار» «پشتکار»

            دیدگاه


              #7
              پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

              از نظر سخت افراری برای کریستال RTC خازن گذاشتید آیا؟

              دیدگاه


                #8
                پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

                بله، دوتا خازن 10nf براش گذاشتم.

                «پشتکار» «پشتکار» «پشتکار»

                دیدگاه


                  #9
                  پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

                  والا
                  بقیش به برنامه ربط داره

                  من یادمه این خط رو نوشته بودم

                  کد:
                  	RTC_Init(LPC_RTC);
                  ولی این رو ننوشته بودم

                  کد:
                  	RTC_Cmd(LPC_RTC, ENABLE);
                  وقتی برنامه بالا میومد ساعت کار نمی کرد

                  دیدگاه


                    #10
                    پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

                    نوشته اصلی توسط gbg
                    والا
                    بقیش به برنامه ربط داره

                    من یادمه این خط رو نوشته بودم

                    کد:
                    	RTC_Init(LPC_RTC);
                    ولی این رو ننوشته بودم

                    کد:
                    	RTC_Cmd(LPC_RTC, ENABLE);
                    وقتی برنامه بالا میومد ساعت کار نمی کرد
                    نه، برنامه درسته و همونطور که عرض کردم روی بورد قبلی کار می کرد و همچنین بورد آموزشی...
                    بیشتر دارم به این شک میکنم توی چاپ برد مشکلی بوده باشه! (داده بودم آلفا) مثلاً قطعی، ترکی چیزی که دیده ام نمیشه یا هم میکروهای جدید مشکلی داشته باشن! (چون همه چی مثل قبله فقط این میکروها خرید سری جدیدن + بوردها که البته تغییر چندانی داده نشده نسبت به قبل)
                    هرچند خب تغذیه VBAT که به درستی میره، و کریستالم پایه هاشو به بازر چک کردم وصل بود، اما اسکوپ ندارم بتونم ببینم درسته همه چی یا نه؟ (البته کریستال ساعتشو عوضم کردم و مطمئنم درسته خود کریستال)

                    «پشتکار» «پشتکار» «پشتکار»

                    دیدگاه


                      #11
                      پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

                      خب از اونجایی که دوستان معتقدن مشکل ممکنه از برنامه باشه، (با اینکه میگم برنامه روی بورد های قبلیم کار می کرد)، من قسمتی از کدها که مربوط به واحد RTC میشه رو اینجا میذارم ببینیم شاید بایت تنظیمات خاصی رو انجام داد؟ (برنامه با Keil نوشته شده)

                      ابتدای برنامه از تابع RTCInit استفاده کردم که در کتابخونه rtc.h به شکل زیر آورده شده:
                      [code=c]void RTCInit( void )
                      {
                      alarm_on = 0;

                      /* Enable CLOCK into RTC */
                      LPC_SC->PCONP |= (1 << 9);

                      /* If RTC is stopped, clear STOP bit. */
                      if ( LPC_RTC->RTC_AUX & (0x1<<4) )
                      {
                      LPC_RTC->RTC_AUX |= (0x1<<4);
                      }

                      /*--- Initialize registers ---*/
                      LPC_RTC->AMR = 0;
                      LPC_RTC->CIIR = 0;
                      LPC_RTC->CCR = 0;
                      return;
                      }[/code]

                      و بعد از اون شروع کردن شمارش یا همون RTCStart:
                      [code=c]void RTCStart( void )
                      {
                      /*--- Start RTC counters ---*/
                      LPC_RTC->CCR |= CCR_CLKEN;
                      LPC_RTC->ILR = ILR_RTCCIF;
                      return;
                      }
                      [/code]

                      و در نهایت داخل While اصلی برنامه گرفتن آخرین مقدار (کنونی) RTC توسط این خط کد:
                      [code=c]current_time = RTCGetTime();[/code]

                      حالا کار اضافی باید انجام بدم؟
                      لازم به ذکره که توی Configuration Wizard مربوط به System_LPC17xx هم PCRTC یا همون Power/Clock مربوط به RTC رو فعال کردم.

                      این هم کد به صورت کامل:
                      [code=c] */
                      #include <stdio.h> /* standard I/O .h-file */
                      #include <ctype.h> /* character functions */
                      #include <string.h> /* string and memory functions */
                      #include <LPC17xx.H> /* LPC17xx definitions */
                      #include "rtc.h"
                      #include "lpc17xx_gpio.h"
                      #include "lpc17xx_pinsel.h"
                      #include "lpc17xx_timer.h"

                      #define extern

                      #include "myTCP.h"
                      #include "tcpip.h"

                      RTCTime local_time, current_time;

                      int main (void) {
                      U32 i;
                      Bool test = FALSE;

                      *(unsigned char *)RemoteIP = 192; // uncomment those lines to get the
                      *((unsigned char *)RemoteIP + 1) = 168; // quote of the day from a real
                      *((unsigned char *)RemoteIP + 2) = 0; // internet server! (gateway must be
                      *((unsigned char *)RemoteIP + 3) = 50; // set to your LAN-router)
                      LPC_GPIO0->FIODIR |= (1<<4);
                      LPC_GPIO0->FIOCLR = (1<<4);
                      SystemInit(); /* initialize clocks */
                      SysTick_Config(100000 - 1);
                      TCPLowLevelInit();
                      TCPLocalPort = 1001;
                      TCPRemotePort = 1002;

                      RTCInit();

                      RTCStart();
                      current_time = RTCGetTime();


                      while(1){
                      if (!(SocketStatus & SOCK_ACTIVE)) TCPActiveOpen();
                      DoNetworkStuff();

                      current_time = RTCGetTime();
                      ClearmyBuffer();
                      sprintf(myBuffer,"%d : %d : %d \n",current_time.RTC_Hour,current_time.RTC_Mi n,current_time.RTC_Sec);
                      SendTCP();

                      }
                      }
                      [/code]

                      و این هم نتیجه!


                      باز هم تأکید میکنم قبلاً همین برنامه کار میکرد با بردای دیگم،
                      و اینکه الان از میکروی LPC1768 با مشخصات زیر استفاده می کنم: (خرید سری جدیدمه از ECA)
                      LPC1768FBD100
                      S2Y077
                      ZSD1421A
                      و اینکه کریستال ساعت 32.768KHz و خارن 10pf استفاده کردم و باتری CR2032 که داخل مدار ولتاژ 2.9 رو میده.

                      با تشکر از دوستانی که پاسخ میدن

                      «پشتکار» «پشتکار» «پشتکار»

                      دیدگاه


                        #12
                        پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

                        لازم به ذکره که مدار RTC (البته مداری ام نداره :mrgreen: ) رو نسبت به برد قبلی تغییری ندادم...
                        البته جسارت نباشه ولی به ذهنم رسید باتری رو درست وصل کردین، سر و ته نیست مثلا
                        The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

                        دیدگاه


                          #13
                          پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

                          نوشته اصلی توسط hessam2013
                          البته جسارت نباشه ولی به ذهنم رسید باتری رو درست وصل کردین، سر و ته نیست مثلا
                          نه دوست عزیز
                          عرض کردم که ولتاژ 3ولت به پایه VBAT میکرو میاد

                          «پشتکار» «پشتکار» «پشتکار»

                          دیدگاه


                            #14
                            پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

                            تابع ClearmyBuffer(); چیکار میکنه؟
                            اگه فقط متغییر myBuffer رو خالی میکنه حذفش کن ، در غیر این صورت ببین با ساعت یا متغییر ساعت کاری نداشته باشه

                            دیدگاه


                              #15
                              پاسخ : مشکل: قطع شمارش RTC هنگام وصل تغذیه

                              این تابع رو خودم نوشتم و فقط بافر رو خالی میکنه. مشکل از این نیست، چون با LCD هم نمایش نمیده!
                              کلاً مشکل توی نمایش نیست، مشکل توی شمارشه!

                              «پشتکار» «پشتکار» «پشتکار»

                              دیدگاه

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