Не работают часы реального времени (РЕШЕНО)

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем JefAir, 15 апр 2017.

  1. JefAir

    JefAir Нерд

    Приветствую!

    Не работают часы реального времени с iskra js
    Батарейка на месте, контакты перепроверил.
    Скрипт:
    Код (Javascript):
    // Настраиваем шину I2C
    PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 100000});
    // Создаем новый объект Rtc
    var rtc = require('@amperka/rtc').connect(PrimaryI2C);
    // Устанавливаем на часах текущее время контроллера
    rtc.setTime();
    // Результат в виде строки ISO: 2016-21-1T12:1:14
    print(rtc.getTime('iso'));
    Вылетает ошибка:

    Код (Javascript):
    >
        ____       __
       /  _/_____ / /__ _____ ____ _
       / / / ___// //_// ___// __ `/
    _/ / (__  )/ ,<  / /   / /_/ /
    /___//____//_/|_|/_/    \__,_/
    Based on Espruino 1v91.193
    (c) 2016 G.Williams, Amperka LLC
    Support the work of core developers:
    http://espruino.com/Donate
    >Erasing Flash....
    Writing.....
    Compressed 87200 bytes to 2759
    Checking...
    Done!
    Loading 2759 bytes from flash...
    Uncaught InternalError: Timeout on I2C Write Transmit Mode 2
    at line 1 col 52
    ...i2c.writeTo(this._address,a),this._i2c.readFrom(this._addres...
                                  ^
    in function "read" called from line 1 col 20
    var a=this.read(0,1)[0];a>>7&&this.write(0,128^a)
                       ^
    in function "start" called from line 1 col 72
    ...is._address=104,this.start()
                                  ^
    in function "Rtc" called from line 1 col 10
    new Rtc(a)
             ^
    in function "connect" called from line 7 col 53
    var rtc = require('@amperka/rtc').connect(PrimaryI2C);
                                                        ^
    >
    =undefined
    >
     
  2. Aleksnow

    Aleksnow Нерд

    Последнее редактирование: 16 апр 2017
  3. JefAir

    JefAir Нерд

    Да, тему видел. Но точку в ней никто не поставил.
    Подключение как в мануале c тройка шилдом. (+ разные извращенные вариации).
     
  4. Aleksnow

    Aleksnow Нерд

    Может все же твою схему подключения в студию?)
     
  5. JefAir

    JefAir Нерд

    легко
    [​IMG] [​IMG] [​IMG]
     
  6. Aleksnow

    Aleksnow Нерд

    Кстати для экземпляра PrimaryI2C вызов setup не обязателен: он настраивается автоматически при старте микроконтроллера. Попробуй вообще эту строку убрать.
    Код (C++):
    PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 100000});
     
  7. JefAir

    JefAir Нерд

    После того как убрал все равно вылетает ошибка, но уже немного другая.
    Различия:
    [​IMG]

    Кстати, если вообще отсоединить этот модуль, то на ошибках это никак не отражается.
    + заметил, что в библиотеке проблемы с кодировкой, хоть и в комментариях. Может в этом дело?
     
  8. sys

    sys Злобный Буратино Модератор

    только что собрал (правда без батарейки) все работает.
    Плату как прошивали?
    попробуйте контакты на sda sdl "потеребить"

    P.S. У меня ваш код ужался в 2753... где-то загуляли 6 байт:)
     
    Последнее редактирование: 16 апр 2017
  9. JefAir

    JefAir Нерд

    Плату на всякий случай перепрошил как написано здесь.
    Решил залить скрипт без батарейки, и он залился без ошибок и, при этом, все работает как надо!
    Код (Javascript):
    // Настраиваем шину I2C
    PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 100000});
    // Создаем новый объект Rtc
    var Rtc = require('@amperka/rtc').connect(PrimaryI2C);
    // Устанавливаем на часах текущее время контроллера
    Rtc.setTime(1492337004);
    // Результат в формате unixtime: 1459166474
    print(Rtc.getTime('unixtime'));


    function tt(){
        var timestamp = Rtc.getTime('unixtime') * 1000;
        var t = new Date(timestamp);
        console.log( t.toUTCString()  );
    }

    setInterval(tt, 3000);
    Но когда вставляю батарейку, сразу начинают падать ошибки, вынимаю - пропадают.
    Код (Javascript):
    Sun, 16 Apr 2017 10:04:06 GMT
    Sun, 16 Apr 2017 10:04:09 GMT
    Uncaught InternalError: Timeout on I2C Write Transmit Mode 2
    at line 1 col 52
    ...i2c.writeTo(this._address,a),this._i2c.readFrom(this._addres...
                                  ^
    in function "read" called from line 1 col 20
    var b=this.read(0,7);this._time=new Date(this._bcdToDec(b[6]...
                       ^
    in function "getTime" called from line 1 col 39
    var timestamp = Rtc.getTime('unixtime') * 1000;
                                          ^
    in function called from system
    Uncaught InternalError: Timeout on I2C Write Transmit Mode 2
    at line 1 col 52
    ...i2c.writeTo(this._address,a),this._i2c.readFrom(this._addres...
                                  ^
    in function "read" called from line 1 col 20
    var b=this.read(0,7);this._time=new Date(this._bcdToDec(b[6]...
                       ^
    in function "getTime" called from line 1 col 39
    var timestamp = Rtc.getTime('unixtime') * 1000;
                                          ^
    in function called from system
    Sun, 16 Apr 2017 10:04:18 GMT
    Sun, 16 Apr 2017 10:04:21 GMT
    Как бы вся суть модуля теряется при таком раскладе.:confused:
     
  10. sys

    sys Злобный Буратино Модератор

  11. Aleksnow

    Aleksnow Нерд

    А после обновления искры пробовал опять убирать строку инициализации PrimaryI2C. Или сделай setup но без параметров. http://wiki.amperka.ru/js:i2c
     
  12. Konkery

    Konkery Гик

    Работую с данным модулем, с батарейкой (без нее собственно не вижу смысла),
    с самого начала с ним были небольшие проблемы, заключаются в том, что при
    чтении показаний дата/время, раз в некоторое время проскакивает ошибка.
    Разбирательство на тему что это и откуда привело меня к пониманию что проблема
    во взаимодействии с модулем по I2C. Раз в некоторое время (программа циклически
    считывает показания датчиков и присваивает им timestamp т.е. "живое время с RTC")
    не удается считать показания с микросхемы. Микросхема медленная, я понижал частоту
    I2C при чтении.
    Прошивка 1v91.193, но начинал работу с RTC с заводской прошивкой, 1.8хх. Прошивал
    плату через IDE
     
    JefAir и sys нравится это.
  13. armani

    armani Нерд

    Звонил сейчас в техподдержку, просил в заказ доложить модуль, там сказали что проблема скорее всего в подключении на 3,3 вольта. Подключать нужно на пять вольт, перед этим переставив джампер на плате в положение V2-5V. (Это для того, чтобы на V2 пины шло именно 5 вольт).
     
    Konkery, JefAir и sys нравится это.
  14. sys

    sys Злобный Буратино Модератор

    Кстати да, в характеристиках же указано внешнее питание 4.5-5.5 В http://wiki.amperka.ru/продукты:troyka-rtc#характеристики

    и тут сказано, что к 5В http://wiki.amperka.ru/продукты:troyka-rtc#контакты_подключения_3-проводных_шлейфов

    Правда по схемам к сожалению этого не понять http://wiki.amperka.ru/продукты:troyka-rtc#подключение_и_настройка

    Собственно, интересно какое выставлено напряжение на плате у JefAir, т.к. у него тоже не видно по фото...
    :)
     
  15. JefAir

    JefAir Нерд

    Всем спасибо за ответы.

    1. Перепрошил из dfu.
    2. Питаю с искры, джампер на 5 вольт.

    К сожалению, ничего не поменялось - без батарейки работает, с - нет.
     
  16. sys

    sys Злобный Буратино Модератор

    звонок в техподдержку может вам помочь
     
  17. Konkery

    Konkery Гик

    Да, кстати, забыл упомянуть, у меня модуль подключен к 5V
     
    JefAir нравится это.
  18. armani

    armani Нерд

    Только недавно получил все из ТП, поробовал. И что? На slot shield- работает как на схеме в вики, на troyka shield- тоже! При этом подключение идет на 3.3 в. И все это с вставленной батарейкой(время остается настроенное). Правда, модуль мне дали новый, может в этом дело и встречается брак.
     
  19. armani

    armani Нерд

    Хотя это вряд ли, учитывая, что в ТП даже мой модуль заработал.
     
  20. armani

    armani Нерд

    Плата через dfu не прошита, только что пробовал с эмуляцией клавиатуры.(прошивка через dfu дает возможность эмулировать кла-туру на вин10).