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

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Micaro, 8 ноя 2018.

Метки:
  1. Micaro

    Micaro Нерд

    Здравствуйте!
    Залил в Iskra JS с подключенным модулем часов реального времени следующий код:
    Код (Javascript):
    E.setTimeZone(+3);
    var rtc = require('@amperka/rtc').connect();
    var timeZone = +3 * 60 * 60;
    var current = Date().valueOf() / 1000 + timeZone;
    rtc.setTime(current);
    Выводит вот такую ошибку:
    Код (Javascript):
    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 133
    ...is._address=104,this.start()
                                  ^
    in function "Rtc" called from line 1 col 10
    new Rtc(a)
             ^
    in function "connect" called from line 3 col 43
    var rtc = require('@amperka/rtc').connect();
    Версия прошивки Iskra JS - 1v96.43. Использую Troyka Slot Shield. Подключаю в слот B.
    Помогите пожалуйста.
    Спасибо!
     
  2. NikitOS

    NikitOS Шут Администратор

    Micaro нравится это.
  3. Micaro

    Micaro Нерд

    Попробовал упрощать код до такого:
    Код (Javascript):
    PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 100000});
    var rtc = require('@amperka/rtc').connect(PrimaryI2C);
    rtc.setTime();
    Не помогло. Выдает ту же ошибку.
     
  4. NikitOS

    NikitOS Шут Администратор

    А если не сокращать?
    В примере и так показан минимальный код
     
  5. Micaro

    Micaro Нерд

    В каком смысле? В моем коде производится простая настройка, без вывода каких-либо результатов.
    Пробовал вгружать код прямо из примера. Все то же самое.
    Код (Javascript):
    // Настраиваем шину I2C
    PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 100000});
    // Создаем новый объект Rtc
    var rtc = require('@amperka/rtc').connect(PrimaryI2C);
    // Устанавливаем на часах текущее время контроллера
    rtc.setTime();
    // Результат в формате unixtime: 1459166474
    print(rtc.getTime('unixtime'));
    // Результат в виде строки ISO: 2016-1-21T12:1:14
    print(rtc.getTime('iso'));
    // Результат в виде объекта Date: { "ms": 1459166474000 }
    print(rtc.getTime());
    Вот сама ошибка (еще раз):
    Код (Javascript):
    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 133
    ...is._address=104,this.start()
                                  ^
    in function "Rtc" called from line 1 col 10
    new Rtc(a)
             ^
    in function "connect" called from line 6 col 53
    var rtc = require('@amperka/rtc').connect(PrimaryI2C);
     
    Последнее редактирование: 8 ноя 2018
  6. ИгорьК

    ИгорьК Гуру

    Как это переводится?
     
  7. ИгорьК

    ИгорьК Гуру

    Товарищ ТС!
    Интерперетатор всегда пишет что ему не нравится.
    Переводите и возникнут мысли.
     
    NikitOS нравится это.
  8. Micaro

    Micaro Нерд

    • Запитываю от USB компьютера
    • Я пользуюсь Troyka Slot Shield, там нельзя перепутать.
    • Я запитываю по USB от компьютера
    • Опять же Troyka Slot Shield
     
  9. Micaro

    Micaro Нерд

    Спасибо за совет!
     
  10. NikitOS

    NikitOS Шут Администратор

    Причем тут это? Модуль должен питаться от 5 вольт, питание искры тут не причем
     
  11. Micaro

    Micaro Нерд

    На Slot Shield стоит джампер в положении V2+5V
     
  12. ИгорьК

    ИгорьК Гуру

    Так переведи - 50% решения.
     
  13. ИгорьК

    ИгорьК Гуру

    Тут на форуме это удивительное железо мало кто имеет и знает.
     
  14. Micaro

    Micaro Нерд

    Я просто не знаю некоторых технических слов, по словарю получается ерунда. Если Вы знаете эти слова, пожалуйста, помогите перевести.
     
  15. ИгорьК

    ИгорьК Гуру

    Дай скриншот гуглопереводчика
     
  16. Micaro

    Micaro Нерд

    Мне выдал вот что:

    Uncaught InternalError: таймаут на I2C режиме передачи 2
    в строке 1 col 52 ... i2c.writeTo (this._address, а), this._i2c.readFrom (this._addres ... ^
    в функции "read", вызываемой из строки 1 col 20 var a = this.read (0,1) [0]; a >> 7 && this.write (0,128 ^ a) ^
    в функции «start», вызванной из строки 1 col 133 ... is._address = 104, this.start () ^
    в функции «Rtc», вызванной из строки 1 col 10 новый Rtc (a)
    Я так понял, проблема кроется в библиотеке.
     
  17. ИгорьК

    ИгорьК Гуру

    Я тебе указал ключевую фразу.
    Ключевое - таймаут связи по i2c.
    I2c - это шина связи с часами.
    Часы не отвечают.
     
  18. Micaro

    Micaro Нерд

    А как же адрес? Какой тогда указывать? Тот же, что и был?
    А по какой причине они могут не отвечать?
     
  19. ИгорьК

    ИгорьК Гуру

    Отчего часы могут не отвечать?
    Включай мозг и пиши себе все причины.
    Проверяй каждую.
     
    Daniil, Micaro и NikitOS нравится это.
  20. ИгорьК

    ИгорьК Гуру

    А что, кроме адреса причин не может быть?
     
    Micaro и NikitOS нравится это.