Spi и цап проблемы

Тема в разделе "Arduino & Shields", создана пользователем Genadyi, 13 мар 2022.

  1. Genadyi

    Genadyi Нерд

    Добрый день, на ардуино нано пытаюсь загрузить в цап по SPI уровень (микруха DAC101S101), по сигналам на пинах на ардуинке непонятно почему идет 4 пакета синхронизации по 8 бит. Пробовал менять режим моде с разными значениями (0-3), на выходе цапа всёравно уровень не меняется и не зависит от входного кода
    for(int j; j<sizeof(s); j++)
    {
    byte b=s>>8*j;
    SPI.transfer(b);
    }
    По даташиту на цап сигнал синхронизации не разрывается и идет все 16 импульсов начиная с младшего. Пробовал передавать код меньше двух байт и ничего не менялось уровень на выходе "0". Может кто мне помочь в данном вопросе?
     
  2. Asper Daffy

    Asper Daffy Иксперд

    Нет. Пока не будет полного кода, никто не сможет.
     
  3. Genadyi

    Genadyi Нерд

    Так в приведенном куске кода и идет передача двухбайтного кода, в принципе я кажись экспериментами дошел до нужного результата. Поучается что при передаче кода 0x02AA(например) то на цап передается 0хАА02. Вообщем перед отправкой кода я его перекручиваю(меняю байты местами) и тогда уже -> на цап, все получилось, на выходе устанавливается соответствующий уровень. Благодаря даташиту на цап, именно сигналам записи (форме сигнала), для моего случая получилось моде0 и поменять байты местами. Осцыл помог, без него и рыпаться не стоит, Тема закрыта.
     
    arkadyf нравится это.
  4. SergeiL

    SergeiL Оракул Модератор

    Ну как написано, так и передается
    Код (C++):
     unsigned s = 0xAA02;
      for (unsigned j = 0; j < sizeof(s); j++)
      {
        byte b = s >> 8 * j;
        Serial.println(b, BIN);
      }
    Вывод:
    Код (Text):
    10
    10101010
     
    j в for() нужно инициализировать, локальные переменные не инициализируются автоматически.