stm32nucleo + multiservo shield

Тема в разделе "Arduino & Shields", создана пользователем suspavnick, 11 май 2015.

  1. suspavnick

    suspavnick Нуб

    Как можно организовать работу с шилдом multiservo в связке с stm32nucleo. Насколько я понимаю, нужно организовать передачу данных по аналогии с тем, как это сделано в библиотеке Multiservo для arduino? Есть ли описание протокола или какие-то особенности?
     
  2. suspavnick

    suspavnick Нуб

    по аналогии с кодом из библиотеки multiservo пробую повторить на stm32nucleo:
    Код (Text):

    Multiservo::Error Multiservo::writeMicroseconds
      (
        uint8_t  pin,
        uint16_t pulseWidth,
        uint8_t  twiAddress,
        uint8_t  retryAttempts
      )
    {
        uint8_t ret;
        char data[3];
        data[0] = pin;
        data[1] = pulseWidth >> 8;
        data[2] = pulseWidth & 0xff;

        do {
            ret = i2c.write(twiAddress, data, 3);
        } while (ret && --retryAttempts);
        return (Error) ret;
    }
     
    ret всегда возвращает 1, что соответствует nack. В чем может быть проблема?
    В качестве twiAddress использую 0x47<<1 в соответствии с библиотекой i2c для stm32.
    Проверил работу i2c на других устройствах - все выполнилось корректно.
    Наладить общение с multiservo shield пока не удалось. Подскажите, в чем может быть причина?