Thông báo

Collapse
No announcement yet.

RTC in Psoc

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • RTC in Psoc

    Chào các cao thủ

    Ai đã có kinh nghiệm với RTC của Psoc có thể chỉ giáo cho tôi vài chiêu về nó được không. Ví dụ như nó dùng để làm gì?, sai số là bao nhiêu? khi nào thì sử dụng nó....
    Cám ơn nhiều về sự trợ giúp
    |

  • #2
    RTC ở đây ý bạn là muốn nói đến việc sử dụng IC Real Time Clock ngoài (ví dụ như DS1302,DS1307...) hay là việc sử dụng nguồn thạch anh 32.768Khz rồi tự tính ra thời gian. Ở cả hai cách bạn đều cần đến thạch anh chuẩn 32.768Khz có độ chính xác cao, cách một thì IC nó tính cho bạn rồi, chỉ việc đọc giá trị là biết, còn cách sau thì phải tự tính lấy bằng phần mềm (ví dụ dùng một counter 16bit chẳng hạn). Sai số chủ yếu phụ thuộc vào sai số của crystal.
    Sử dụng realtime clock với PSoC cũng giống như những con khác thôi, ko có gì đặc biệt cả. Bạn có thể tìm một Appnote viết về RTC với PSoC tại website cypress.com
    Còn khi nào dùng? Khi nào yêu cầu của bạn liên quan tới thời gian thực, ví dụ như ghi lại sự kiện gì đó trongngày thì cần thiết dùng đến thời gian thực ...
    Work is glory

    Comment


    • #3
      RTC dùng để phát triển các ứng dụng thời gian thực.
      Sai số phục thuộc vào thạch anh + bộ chia tần.

      Sai số thạch anh = thông số kỹ thuật của thạch anh bạn có. Sai số bộ chia tần => tra cứu tài liệu của PSoC.


      Comment


      • #4
        Nguyên văn bởi yesme@
        RTC dùng để phát triển các ứng dụng thời gian thực.
        Sai số phục thuộc vào thạch anh + bộ chia tần.
        Sai số thạch anh = thông số kỹ thuật của thạch anh bạn có. Sai số bộ chia tần => tra cứu tài liệu của PSoC.
        Theo tui, bộ chia tần ko đóng góp gì về sai số cả. Vì nó đã được số hóa rồi.
        Ví dụ:32.768Khz. Bộ chia tần là 32768 lần sẽ được 1 Hz.
        Bộ chia 32768 ko thể sai số được ví dụ ko thể thành là 32769 được. Thông số kỹ thuật ko có vấn đề này. Tóm lại, chỉ phụ thuộc vào crystal thôi.

        Comment


        • #5
          Chào các bạn. Mình đang có một đồ án mà cần phải xử lý thời gian thực.
          Mình dự định dùng DS1307. Mình chỉ biết dùng giao tiếp IC Real Time Clock với Psoc qua modul SPI.
          Cao thử nào đã biết cách sử dụng xin được chỉ giáo với !

          Comment


          • #6
            PSoC có module cho SPI Master và SPI Slave. Nếu bạn đã biết cách giao tiếp qua SPI thì hoàn toàn có thể dùng Module này để giao tiếp. Nếu IC của bạn hỗ trợ chuẩn I2C thì cũng có thể dùng Hardware I2C ...Bạn có thể xem sample code ở cuối mỗi user module
            Work is glory

            Comment


            • #7
              Chào các bác, em cũng nghe nói về RTC trong PSoC và cũng đang tìm hiểu nó . Có điều trong AN nó nói khó hiểu quá nên sẵn đây xin các bác chỉ cho em một chút về nó. Như làm sao chúng ta có thể sử dụng RTC trong PSoC.Sử dụng tần số ngòai hay tần số nội tốt hơn

              Comment


              • #8
                Nguyên văn bởi Tino
                Chào các bác, em cũng nghe nói về RTC trong PSoC và cũng đang tìm hiểu nó . Có điều trong AN nó nói khó hiểu quá nên sẵn đây xin các bác chỉ cho em một chút về nó. Như làm sao chúng ta có thể sử dụng RTC trong PSoC.Sử dụng tần số ngòai hay tần số nội tốt hơn
                -------------------------------------------------------------------------
                Nếu như bạn muốn làm RTC thì bạn nên sử dụng clock ngoài 32,768hz-còn đối với clock nội thì sai số của nó - theo nhà sản xuất thì sai số mã 2.5% tần số CPU- nhưng việc sai số này cũng tùy vào nhiệt độ.

                -Để tạo RTC chính xác bạn nên dùng chế độ sleep của Psoc với tần số 1hz - tương ứng với một giây tạo ngắt 1 lần.

                Comment


                • #9
                  Chế độ Sleep của PSoC với tần số 1Hz là sao hả các bác. Trong AN nó nói muốn để chế độ Sleep xảy ra thì cần phải thiết lập các thanh ghi như : OSC_CR0,INT_MSK0,bit Sleep trong CPU_SCR0.Nhưng phải thiết lập làm sao xin các bác chỉ giúp

                  Comment


                  • #10
                    Đây là cách sử dụng I2C để giao tiếp với RTC DS1307 , các bạn có thể dùng cả I2Cm(firmware) hoặc I2CHW(Hardware) để giao tiếp. Về phần cứng không có gì, chỉ cần thêm điện trở Pullup vào đường SDA và SCL.
                    Ở Project này có thêm khối LCD để hiển thị
                    Thời gian đặt trong tx, bắt đầu bằng 00, sau đó là giây, phút, giờ, ngày trong tuần, ngày trong tháng, tháng, năm,byte cuối cùng 0x93 là byte ghi vào thanh ghi điều khiển của RTC.

                    #include <m8c.h> // part specific constants and macros
                    #include "PSoCAPI.h" // PSoC API definitions for all User Modules
                    #include "stdlib.h"

                    BYTE tx[]={0x00,0x00,0x22,0x23,0x07,0x19,0x11,0x05,0x93};
                    BYTE rx[8];
                    BYTE status;
                    unsigned char i=0;
                    void delay()
                    {
                    int i=0;
                    for(i=0;i<100;i++);
                    }
                    void main()
                    {
                    // Insert your main routine code here.
                    M8C_EnableGInt;
                    LCD_1_Start();
                    I2CHW_1_Start();
                    I2CHW_1_EnableMstr();
                    I2CHW_1_EnableInt();
                    I2CHW_1_InitRamRead(rx,8);
                    I2CHW_1_InitWrite(tx,9);
                    I2CHW_1_bWriteBytes(0x68,tx,9,I2CHW_1_CompleteXfer );
                    while(!I2CHW_1_bReadI2CStatus() &I2CHW_WR_COMPLETE);//wait for complete
                    delay();
                    I2CHW_1_ClrWrStatus();
                    I2CHW_1_bWriteBytes(0x68,tx,1,I2CHW_1_NoStop);
                    while(!I2CHW_1_bReadI2CStatus() &I2CHW_WR_COMPLETE);//wait for complete
                    I2CHW_1_ClrWrStatus();
                    while(1)
                    {
                    //read the time
                    I2CHW_1_bWriteBytes(0x68,tx,1,I2CHW_1_NoStop);
                    delay();
                    I2CHW_1_ClrWrStatus();
                    I2CHW_1_fReadBytes(0x68,rx,7,I2CHW_1_RepStart);
                    delay();
                    I2CHW_1_ClrRdStatus();
                    LCD_1_Position(0,0);
                    LCD_1_PrCString("T.gian");
                    LCD_1_Position(0,10);
                    LCD_1_PrHexByte(rx[2]);
                    LCD_1_PrCString(":");
                    LCD_1_PrHexByte(rx[1]);
                    LCD_1_PrCString(":");
                    LCD_1_PrHexByte(rx[0]);


                    }
                    }
                    Work is glory

                    Comment


                    • #11
                      Ở PSoc thì chế độ Sleep có hai tác dụng thứ nhất chúng ta có thể làm RTC (khá chính xác nếu chúng ta dùng thạch anh chuẩn 32.768Hz- do đó có thể thay cho DS1307 hoặc các con IC Realtimeclock khác)- Tác dụng thứ hai là tạo một xung kích (ngắt) cho macro M8C_Sleep làm việc (giúp tiết kiệm năng lượng cho Psoc).

                      Chúng ta có thể kích hoạt cho chế độ Sleep của PSoc bằng cách thiết lập các thông số ngay trong Global Resource mà không cần dùng thanh ghi OSC_SCR0,CPU_SCR0: Với các trường như:
                      32K_Select :internal nếu dùng clock nội hoặc external (nếu dùng clock ngoài).
                      Sleep_timer : 1Hz tương ứng với 1s tạo ngắt một lần-chúng ta áp dụng điều này để làm RTC.
                      main()
                      {
                      //reset the sleep timer
                      M8C_ClearWDTAndSleep;

                      //Enable the interrupts
                      //Tạo ngắt cho Sleep timer trong main.

                      M8C_EnableIntMask(INT_MSK0,INT_MSK0_SLEEPM8C_Enabl eGInt);

                      while(1)
                      {
                      //..........
                      }
                      }

                      Comment


                      • #12
                        Các bác cho hỏi nếu ta dùng chế độ Sleep ta cần khai báo ngắt Sleeptimer trong boot.asm không. Nếu có xincác bác chỉ cách khai báo nó

                        Comment


                        • #13
                          các Bác cho em hỏi về chế độ Sleep . Thí dụ bây giờ ta dùng ngắt của Timer8 thì trước khi cho CPU đi vào chế độ ngủ ta cần phải cấm ngắt của Timer này không ? nếu cấm nó thì làm sao khi CPU thức dậy ta có thể sử dụng nó lại?

                          Comment


                          • #14
                            Các bác chỉ giúp em với , sao không ai trả lời vậy

                            Comment


                            • #15
                              không cần!
                              Technical Institutes
                              Mobile: 0983278725
                              Email:

                              Comment

                              Về tác giả

                              Collapse

                              OSPF Tìm hiểu thêm về OSPF

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X