اطلاعیه

Collapse
No announcement yet.

یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

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

    یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

    سلام به همگی.

    آقا من میخوام یه ساعت برای ارگان دولتی طراحی کنم و به تولید انبوه برسونیم. و میخوام ببینیم به نظر شما از چه ic برای این ساعت استفاده کنم که حداکثر در سال 3 دقیقه یا کمتر (در حد صفر) خطا داشته باشه . یعنی یه ساعت دقیق دقیق دقیق .البته نا گفته نماند با سون سگمنت ساخته میشه و به صورت رفرشی کار میکنه .(سون سگمنت مالتی پلس)
    www.icesi.ir

    #2
    پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

    سلام

    ds1307,1340 هست اما بستگی به فرکانس خوندن و نوشتن i2c و pcb و دقت کریستال داره

    البته میتونید کلاک کالیبریشن هم بکنید

    1340:


    Clock Calibration
    The DS1340 provides a digital clock calibration feature
    to allow compensation for crystal and temperature variations.
    The calibration circuit adds or subtracts counts
    from the oscillator divider chain at the divide-by-256
    stage. The number of pulses blanked (subtracted for
    negative calibration) or inserted (added for positive calibration)
    depends upon the value loaded into the five
    calibration bits (CAL4–CAL0) located in the control register.
    Adding counts speeds the clock up and subtracting
    counts slows the clock down.
    The calibration bits can be set to any value between 0
    and 31 in binary form. Bit 5 of the control register, S, is
    the sign bit. A value of 1 for the S bit indicates positive
    calibration, while a value of 0 represents negative calibration.
    Calibration occurs within a 64-minute cycle.
    The first 62 minutes in the cycle can, once per minute,
    have a one-second interval where the calibration is performed.
    Negative calibration blanks 128 cycles of the
    32,768Hz oscillator, slowing the clock down. Positive
    calibration inserts 256 cycles of the 32,768Hz oscillator,
    speeding the clock up. If a binary 1 is loaded into the
    calibration bits, only the first two minutes in the 64-
    minute cycle are modified. If a binary 6 is loaded, the
    first 12 minutes are affected, and so on. Therefore,
    each calibration step either adds 512 or subtracts 256
    oscillator cycles for every 125,829,120 actual 32,678Hz
    oscillator cycles (64 minutes). This equates to
    +4.068ppm or -2.034ppm of adjustment per calibration
    step. If the oscillator runs at exactly 32,768Hz, each of
    the 31 increments of the calibration bits would represent
    +10.7 or -5.35 seconds per month, corresponding
    to +5.5 or -2.75 minutes per month.
    For example, if using the FT function, a reading of
    512.01024Hz would indicate a +20ppm oscillator frequency
    error, requiring a -10(00 1010) value to be
    loaded in the S bit and the five calibration bits.
    Note: Setting the calibration bits does not affect the frequency
    test output frequency. Also note that writing to
    the control register resets the divider chain.
    I2C Serial Data Bus
    The DS1340 supports a bidirectional I2C bus and data
    transmission protocol. A device that sends data onto
    the bus is defined as a transmitter and a device receiving
    data as a receiver. The device that controls the
    message is called a master. The devices that are controlled
    by the master are slaves. A master device that
    generates the serial clock (SCL), controls the bus
    access, and generates the START and STOP conditions
    must control the bus. The DS1340 operates as a
    slave on the I2C bus. Connections to the bus are made
    through the open-drain I/O lines SDA and SCL. Within
    the bus specifications a standard mode (100kHz max
    clock rate) and a fast mode (400kHz max clock rate)
    are defined. The DS1340 works in both modes.
    The following bus protocol has been defined (Figure 7):
    • Data transfer can be initiated only when the bus is
    not busy.
    • During data transfer, the data line must remain
    stable whenever the clock line is high. Changes in
    the data line while the clock line is high are interpreted
    as control signals.


    ِِDie for Life, Not Live to Die
    Freedom Fighter
    " ناخود گاه، هریک از ما ، از نامیرائی خود یقین دارد " . فروید

    دیدگاه


      #3
      پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

      یکی اینارو به من معرفی کرد:
      PCF8563-02
      PCF8583

      دیتا شیتاشو ببین چه طوره؟
      اگه نداری خودم بذارم.؟
      www.icesi.ir

      دیدگاه


        #4
        پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

        PCF8563 رو مطمئن نیستم اما PCF8583 بک اپ نداره

        به نظر من بهترین گزینه خانواده ی DS ه
        ِِDie for Life, Not Live to Die
        Freedom Fighter
        " ناخود گاه، هریک از ما ، از نامیرائی خود یقین دارد " . فروید

        دیدگاه


          #5
          پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

          عزیز دل من یک برنامه با بسکالم که از استادم گرفتم خوب کار میکنه برات بزارم
          با مگا 32 هستش ششتا سون سگمنت و بدون 7447 هست یعنی سون سگمنتها بایک مرحله درایور مستقیم به avrوصل هستن ضمنا الان داخل یک مسجد در شهر خودمون درحال کاره و هیچ مشکلی از نظر زمانی نداره
          انجام پروژه های برنامه نویسی اندروید
          [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
          http://cafebazaar.ir/app/?id=com.atxdroid

          دیدگاه


            #6
            پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

            سلام می شه برنامشو برم mail کنین

            m_elcom_20@yahoo.com

            دیدگاه


              #7
              پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

              اگه قراره پروژه را بگذارید تو انجمن تو همین تایپک بذارید تا همه استفاده کنن.

              دستتم درد نکنه اگه بذاری ممنون. :agree:
              ایمیل ممنوع
              www.icesi.ir

              دیدگاه


                #8
                پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

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


                [move](---> موسیقی ایرانی <---) [/move]

                دیدگاه


                  #9
                  پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                  chia جان ممنون از راهنماییت ولی اون id که من معرفی کردم از ثانیه ،دقیقه ، ساعت ، روز ، هفته ، ماه ، سال رو تو خودش ذخیره میکنه و میشماره.

                  خانواده ds ها هم این قابلیت رو دارن؟

                  من تا حالا با ds ها کار نکردم.نمیدونم اصلا چه دیتایی به ما میگیره و از این قبیل.

                  من انگلیسیم هم ضعیفه زیاد به دیتا شیت ها مسلط نیستم.
                  www.icesi.ir

                  دیدگاه


                    #10
                    پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                    نوشته اصلی توسط میلاد موسوی
                    chia جان ممنون از راهنماییت ولی اون id که من معرفی کردم از ثانیه ،دقیقه ، ساعت ، روز ، هفته ، ماه ، سال رو تو خودش ذخیره میکنه و میشماره.

                    خانواده ds ها هم این قابلیت رو دارن؟

                    من تا حالا با ds ها کار نکردم.نمیدونم اصلا چه دیتایی به ما میگیره و از این قبیل.

                    من انگلیسیم هم ضعیفه زیاد به دیتا شیت ها مسلط نیستم.
                    سلام

                    البته که ds ای امکانات رو داره علاوه بر این امکانات امکان ذخیره ی زمان و تاریخ در حالی که نوسانساز هم فعاله تا 10 سال داره :eek:

                    شما با یک باطری کوچک بک اپ 3 ولتی تا 10 سال بدون برق ساعت و تاریخ اپ تو دیت رو خواهید داشت :smile:

                    داده ی خروجی هم از طریق باس I2C در اختیار قرار میگیره

                    1340 هم امکانات کالیبریشن کلاک رو داره

                    یعنی شما میتونید به صورت تجربی میزان عقب یا جلو افتادن ساعت رو مثلا در 1 ماه محاسبه کنید و با رجیستر کالیبریشن این کند یا سریع بودن کلاک را جبران کنید
                    ِِDie for Life, Not Live to Die
                    Freedom Fighter
                    " ناخود گاه، هریک از ما ، از نامیرائی خود یقین دارد " . فروید

                    دیدگاه


                      #11
                      پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                      ضمنا این برنامه به همراه ساعت با ورودی adcکه به اون سنسور دما وصل میشه دمای محیط رو نشون میده
                      اگر سخت افزار خاستین بگین تا بزارم


                      $regfile = "m32def.dat"
                      $crystal = 4000000
                      Config Clock = Soft
                      Config Adc = Single , Prescaler = Auto , Reference = Internal
                      Enable Interrupts
                      Time$ = "0150"
                      Dim A As Byte
                      Dim B As Byte
                      Dim C As Byte
                      Dim D As Byte
                      Dim E As Byte
                      Dim G As Byte
                      Dim H As Byte
                      Dim K As Byte
                      Dim M As Byte
                      Dim N As Byte
                      Dim R As Byte
                      Dim S As Byte
                      Dim T As Byte
                      Dim U As Byte
                      Dim V As Byte
                      Dim W As Byte
                      Dim O As Byte
                      Dim Y As Byte
                      Dim Q As Byte
                      Dim Z As Byte
                      Dim I As Byte
                      Dim H1 As Byte
                      Dim H2 As Byte
                      Dim H3 As Byte
                      Dim H4 As Byte
                      Dim F(17) As Byte
                      Config Portb = Output
                      Config Portd.0 = Output
                      Config Portd.1 = Output
                      Config Portd.2 = Output
                      Config Portd.3 = Output
                      Config Portd.4 = Output
                      Config Portd.5 = Output
                      Config Portd.6 = Output
                      Config Portd.7 = Output
                      Config Porta.2 = Output
                      Config Portc.0 = Output
                      Config Portc.5 = Input
                      Config Portc.4 = Input
                      Config Portc.3 = Input
                      Config Portc.2 = Input
                      Declare Sub Scan
                      Declare Sub Codtemp
                      Declare Sub Codtimes
                      Declare Sub H_up
                      Declare Sub Hold
                      Declare Sub M_up
                      Declare Sub M_down
                      F(10) = 63
                      F(1) = 6
                      F(2) = 91
                      F(3) = 79
                      F(4) = 102
                      F(5) = 109
                      F(6) = 125
                      F(7) = 7
                      F(8) = 127
                      F(9) = 111
                      F(11) = 119 'A
                      F(12) = 88 'C
                      F(13) = 121 'E
                      F(14) = 80 'r
                      F(15) = 113 'F
                      F(16) = 0 'BLANK
                      A = 0
                      B = 0
                      C = 0
                      D = 0
                      Z = 0
                      F(z) = 63
                      Portd = &B00000000
                      Portb = &B00000000
                      For V = 0 To 5
                      Set Porta.2
                      Set Portc.0
                      Waitms 20
                      Reset Porta.2
                      Reset Portc.0
                      Waitms 50
                      Next
                      L6:
                      Portb = F(11)
                      Portd = &B00000001
                      Waitus 600
                      Portb = 0
                      Portd = &B00000001
                      Waitus 4
                      Portb = F(15)
                      Portd = &B00000010
                      Waitus 600
                      Portb = 0
                      Portd = &B00000010
                      Waitus 4
                      Portb = F(1)
                      Portd = &B00000100
                      Waitus 600
                      Portb = 0
                      Portd = &B00000100
                      Waitus 4
                      Portb = F(3)
                      Portd = &B00001000
                      Waitus 600
                      Portb = 0
                      Portd = &B00001000
                      Waitus 4
                      Portb = F(8)
                      Portd = &B00010000
                      Waitus 600
                      Portb = 0
                      Portd = &B00010000
                      Waitus 4
                      Portb = F(6)
                      Portd = &B00100000
                      Waitus 600
                      Portb = 0
                      Portd = &B00100000
                      Waitus 4
                      If Pinc.5 = 0 Then Jmp L6
                      Set Porta.2
                      I = 0
                      '***********************************
                      Main:
                      Start Adc
                      L1:
                      For O = 0 To 255
                      Toggle Porta.2
                      If Pinc.5 = 1 Then Call Hold
                      If Pinc.3 = 1 Then Call H_up
                      If Pinc.4 = 1 Then Call M_down
                      If Pinc.2 = 1 Then Call M_up
                      For Q = 0 To 4
                      Call Codtimes
                      Call Scan
                      If _min = 00 Then
                      If _sec = 00 Then
                      For V = 0 To 8
                      Set Portc.0
                      For W = 0 To 3
                      Call Codtimes
                      Call Scan
                      Next
                      Reset Portc.0
                      Call Codtimes
                      Call Scan
                      Call Codtimes
                      Call Scan
                      Call Codtimes
                      Call Scan
                      Waitms 20
                      Next
                      End If
                      End If
                      Next
                      Next
                      R = Getadc(0)
                      R = R / 4
                      R = R - 5
                      Call Codtemp
                      Waitms 50
                      jmp l1
                      End
                      '$$$$$$$$$$$$$$$
                      Scan:
                      For S = 0 To 3
                      Portb = F(m)
                      Portd = &B00000001
                      Waitus 550
                      Portb = 0
                      Portd = &B00000001
                      Waitus 4
                      Portb = F(n)
                      Portd = &B00000010
                      Waitus 550
                      Portb = 0
                      Portd = &B00000010
                      Waitus 4
                      Portb = F(g)
                      Portd = &B00000100
                      Waitus 550
                      Portb = 0
                      Portd = &B00000100
                      Waitus 4
                      Portb = F(h)
                      Portd = &B00001000
                      Waitus 550
                      Portb = 0
                      Portd = &B00001000
                      Waitus 4
                      Portb = F(b)
                      Portd = &B00010000
                      Waitus 550
                      Portb = 0
                      Portd = &B00010000
                      Waitus 4
                      Portb = F(c)
                      Portd = &B00100000
                      Waitus 550
                      Portb = 0
                      Portd = &B00100000
                      Waitus 4
                      Portb = F(t)
                      Portd = &B01000000
                      Waitus 550
                      Portb = 0
                      Portd = &B01000000
                      Waitus 4
                      Portb = F(u)
                      Portd = &B10000000
                      Waitus 550
                      Portb = 0
                      Portd = &B10000000
                      Waitus 4
                      If _hour = 12 Then
                      If _min = 00 Then
                      If _sec = 00 Then
                      Incr I
                      Waitms 350
                      End If
                      If I = 2 Then
                      _sec = _sec + 05
                      I = 0
                      End If
                      End If
                      End If
                      Next
                      Return
                      '$$$$$$$$$$$$$$$$
                      Codtimes:
                      D = _sec
                      Select Case D
                      Case Is < 10
                      C = D
                      B = 0
                      Case 10 To 19 :
                      C = D - 10
                      B = 1
                      Case 20 To 29 :
                      C = D - 20
                      B = 2
                      Case 30 To 39 :
                      C = D - 30
                      B = 3
                      Case 40 To 49 :
                      C = D - 40
                      B = 4
                      Case 50 To 59 :
                      C = D - 50
                      B = 5
                      Case Is >= 60
                      C = 14
                      B = 13
                      End Select
                      If _min = 60 Then _min = 00
                      E = _min
                      Select Case E
                      Case Is < 10
                      H = E
                      G = 0
                      Case 10 To 19 :
                      H = E - 10
                      G = 1
                      Case 20 To 29 :
                      H = E - 20
                      G = 2
                      Case 30 To 39 :
                      H = E - 30
                      G = 3
                      Case 40 To 49 :
                      H = E - 40
                      G = 4
                      Case 50 To 59 :
                      H = E - 50
                      G = 5
                      Case Is >= 60
                      H = 14
                      G = 13
                      End Select
                      If _hour = 13 Then _hour = 01
                      K = _hour
                      Select Case K
                      Case Is < 10
                      N = K
                      M = 16
                      Case 10 To 19 :
                      N = K - 10
                      M = 1
                      End Select
                      Return
                      '$$$$$$$$$$$
                      Codtemp:
                      Select Case R
                      Case Is < 10
                      U = R
                      T = 16
                      Case 10 To 19 :
                      U = R - 10
                      T = 1
                      Case 20 To 29 :
                      U = R - 20
                      T = 2
                      Case 30 To 39 :
                      U = R - 30
                      T = 3
                      Case 40 To 49 :
                      U = R - 40
                      T = 4
                      Case 50 To 59 :
                      U = R - 50
                      T = 5
                      Case 60 To 69 :
                      U = R - 60
                      T = 6
                      Case Is >= 70
                      U = 14
                      T = 13
                      End Select
                      Return
                      '$$$$$$$$$$$$$$
                      H_up:
                      Set Portc.0
                      H1 = _hour
                      Incr H1
                      _hour = H1
                      Call Codtimes
                      Call Scan
                      Reset Portc.0
                      Return
                      '$$$$$$$$$$$$$
                      Hold:
                      L3:
                      Set Portc.0
                      H2 = _min
                      H1 = _hour
                      _min = H2
                      _hour = H1
                      _sec = 00
                      Call Codtimes
                      Call Scan
                      Reset Portc.0
                      Call Codtimes
                      Call Scan
                      If Pinc.5 = 1 Then Jmp L3
                      Return
                      '$$$$$$$$$$$$$
                      M_up:
                      Set Portc.0
                      H2 = _min
                      If H2 = 60 Then
                      _min = 0
                      End If
                      H2 = _min
                      Incr H2
                      _min = H2
                      Call Codtimes
                      Call Scan
                      Reset Portc.0
                      Return
                      '$$$$$$$$$$$$$
                      M_down:
                      Set Portc.0
                      H2 = _min
                      If H2 = 0 Then
                      _min = 60
                      End If
                      H2 = _min
                      Decr H2
                      _min = H2
                      Call Codtimes
                      Call Scan
                      Reset Portc.0
                      Return
                      انجام پروژه های برنامه نویسی اندروید
                      [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
                      http://cafebazaar.ir/app/?id=com.atxdroid

                      دیدگاه


                        #12
                        پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                        منم با Dalas موافقم
                        خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

                        دیدگاه


                          #13
                          پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                          آقا اگه سخت افزارش رو هم بذارید ممنون میشم و آقا میلاد خانواده ds ها ریف هستند من دیتا شیتشونو خوندم .
                          " علت هر شکستی عمل کردن بدون فکر است" الکس مکنزی


                          [move](---> موسیقی ایرانی <---) [/move]

                          دیدگاه


                            #14
                            پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                            سلام به دوستان واقعا بحث در سطح بالایی دنبال میشه خیلی حال کردم .
                            مزاحم اوقاتتون نمیشم فقط بگم که از DS بهتر فکر نکنم برای کار میلاد جان چیز دیگه ای باشه من با همین ds یه تقویم ردیف ساخته بودم که توش ساعتم
                            بود میزان خطاش خیلی خیلی خیلی کمه :nerd: تازه میشه اون مشکلشم همونطور که chia جان گفت حل کرد . :nice:
                            در ضمن اگه درست یادم مونده باشه این ds ها قابلیت تبدیل تاریخ میلادی به شمسی و از این چیزا رو هم دارن
                            ممنون :nerd:
                            دوستان! مدتی کمتر به سایت میام ..

                            دیدگاه


                              #15
                              پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                              نوشته اصلی توسط حسام الدین
                              در ضمن اگه درست یادم مونده باشه این ds ها قابلیت تبدیل تاریخ میلادی به شمسی و از این چیزا رو هم دارن
                              ممنون :nerd:
                              نه چنین امکاناتی در ds وجود نداره و باید با نرم افزار این کار رو بکنید :smile:
                              ِِDie for Life, Not Live to Die
                              Freedom Fighter
                              " ناخود گاه، هریک از ما ، از نامیرائی خود یقین دارد " . فروید

                              دیدگاه

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