Циф. потенциометр. Не получается записать значение в память.
Добавлено: Чт июл 17, 2014 13:47:14
Здравствуйте. Учусь управлять цифровым потенциометром (ЦП) AD5292 через LPT-порт по SPI.
Три недели назад не представляла даже, как дергать ножки порта, сейчас умею выставлять нужное сопротивление. Но встала проблема как сохранить это сопротивление в памяти. Неоднократное перечитывание даташита никак не наталкивает на мысль, где я допустила ошибку, которая, несомненно, есть, раз сопротивление не сохраняется в памяти. О том, что оно не сохраняется, я сужу по команде 4 на 18 странице даташита (RESET), которая передвигает ползунок на середину (значение, выставляемое если в памяти ничего не было сохранено) .
Насколько мне удалось понять, алгоритм записи сопротивления в 20-ТР помять должен выглядеть следующим образом:
1. Разрешить изменение положения ползунка и содержимого памяти. Команда: ох1803.
2. Выставить нужное значение сопротивления. Команда: 0x0500 (5кОм).
3. Подготовка чтения из RDAC регистра. Команда: 0х0800.
4. Сохранить значение сопротивления в памяти. Команда: 0x0C00.
После этого я меняю сопротивление на любое другое и посылаю команду 4 (xx0100xxxxxxxxxx) c 18 страницы даташита (RESET). После этого ползунок сбрасывается не на "записанное" в память значение, а в среднее положение.
Есть вариант, что не работает потому, что какие-то команды нужно посылать по временной диограмме Read, тогда как я все посылаю по временной диаграмме write.
Буду очень рада, если кто-нибудь подскажет, в чем может быть проблема.
Три недели назад не представляла даже, как дергать ножки порта, сейчас умею выставлять нужное сопротивление. Но встала проблема как сохранить это сопротивление в памяти. Неоднократное перечитывание даташита никак не наталкивает на мысль, где я допустила ошибку, которая, несомненно, есть, раз сопротивление не сохраняется в памяти. О том, что оно не сохраняется, я сужу по команде 4 на 18 странице даташита (RESET), которая передвигает ползунок на середину (значение, выставляемое если в памяти ничего не было сохранено) .
Насколько мне удалось понять, алгоритм записи сопротивления в 20-ТР помять должен выглядеть следующим образом:
1. Разрешить изменение положения ползунка и содержимого памяти. Команда: ох1803.
2. Выставить нужное значение сопротивления. Команда: 0x0500 (5кОм).
3. Подготовка чтения из RDAC регистра. Команда: 0х0800.
4. Сохранить значение сопротивления в памяти. Команда: 0x0C00.
После этого я меняю сопротивление на любое другое и посылаю команду 4 (xx0100xxxxxxxxxx) c 18 страницы даташита (RESET). После этого ползунок сбрасывается не на "записанное" в память значение, а в среднее положение.
Есть вариант, что не работает потому, что какие-то команды нужно посылать по временной диограмме Read, тогда как я все посылаю по временной диаграмме write.
Буду очень рада, если кто-нибудь подскажет, в чем может быть проблема.