• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
RTC DS1302
#4
Jeśli chodzi o podtrzymanie czasu to najpierw ustal jaki masz moduł, ewentualnie miernik w rączki, wyjmij baterię i sprawdź połączenia:
   
VCC1 i VCC2 nie powinno być połączone, nawet jeśli zasilisz moduł do pinu VCC na pinach baterii nie powinno być napięcia, jeśli jest napięcie bateria zostanie zniszczona. Dla akumulatorka powinien być układ ładowania zapewniający napięcie nie wyższe niż 4.2V.
Z kolei z włożoną baterią bez zasilania modułu na pinie VCC2 powinno być napięcie powyżej 2V podawane z baterii.
Ten sposób ustawienia czasu nie będzie dokładny, opóźnienia w czasie wgrywania są różne za każdym razem, najlepiej zrobić to używając UART. Przykład masz w bibliotece do DS3231 w szkicu rtc_ds3231.ino, kawałek funkcji:
Kod:
void parse_cmd(char *cmd, int cmdsize)
{
    uint8_t i;
    uint8_t reg_val;
    char buff[BUFF_MAX];
    struct ts t;

    //snprintf(buff, BUFF_MAX, "cmd was '%s' %d\n", cmd, cmdsize);
    //Serial.print(buff);

    void parse_cmd(char *cmd, int cmdsize)
{
    uint8_t i;
    uint8_t reg_val;
    char buff[BUFF_MAX];
    struct ts t;

    //snprintf(buff, BUFF_MAX, "cmd was '%s' %d\n", cmd, cmdsize);
    //Serial.print(buff);

    // TssmmhhWDDMMYYYY aka set time
    if (cmd[0] == 84 && cmdsize == 16) {
        //T355720619112011
        t.sec = inp2toi(cmd, 1);
        t.min = inp2toi(cmd, 3);
    if (cmd[0] == 84 && cmdsize == 16) {
        //T355720619112011
        t.sec = inp2toi(cmd, 1);
        t.min = inp2toi(cmd, 3);
...
Wysyłasz z monitora linijkę z czasem w formacie podanym w szkicu: "// TssmmhhWDDMMYYYY aka set time" i ustawisz czas z dokładnością poniżej 1s. W funkcji trzeba podmienić zmienne na format używany w tej innej bibliotece - trzeba rozgryźć co do czego.

A używając ustawienia czasu w setup pamiętaj, że za każdym razem szkic uruchamiając się od nowa ustawi czas zapisany we flash, w kodzie Arduino. Trzeba wgrać raz, ustawić czas, po czym od razu wgrać szkic kolejny, który korzysta tylko z odczytu czasu. Inaczej po każdym resecie czas również się zresetuje gdy uruchomisz szkic od nowa odłączając zasilanie czy robiąc reset przyciskiem.
No i jednak polecam moduł DS3231, wszystko masz na płytce i czas znacznie dokładniej jest odmierzany.
   
Jeśli oczywiście problemem nie jest to, że ten jest na I2C.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
RTC DS1302 - przez chrzanio - 08-09-2019, 08:34
RE: RTC DS1302 - przez error105 - 08-09-2019, 10:22
RE: RTC DS1302 - przez -adamek - 08-09-2019, 11:09
RE: RTC DS1302 - przez kaczakat - 08-09-2019, 14:00
RE: RTC DS1302 - przez chrzanio - 08-09-2019, 14:48
RE: RTC DS1302 - przez Stawu - 26-12-2021, 12:08
RE: RTC DS1302 - przez kaczakat - 26-12-2021, 14:28
RE: RTC DS1302 - przez Stawu - 26-12-2021, 15:45
RE: RTC DS1302 - przez kaczakat - 26-12-2021, 20:50
RE: RTC DS1302 - przez Stawu - 27-12-2021, 10:29
RE: RTC DS1302 - przez kaczakat - 27-12-2021, 14:42
RE: RTC DS1302 - przez Stawu - 27-12-2021, 19:12

Skocz do:


Przeglądający: 1 gości