AD5310
|
|
dimitriy-bc |
Дата: Пт, 14.12.2012, 16:32 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
Всем доброго времени суток. У меня появилась проблема. Необходимо организовать ЦАП. ЦАП на ШИМ получается медленный, ФНЧ тормозит. И если использовать ШИМ от ПРОТОНа, то и дискретность 255 маловата. В связи с этим решил попробовать на ЦАП AD5310. За основу взял программу на AD5305. Но пока как надо она не работает. Пошагово просматривал, приращение в переменной value вроде идет нормально и перераспределение в Val1 и Val2 тоже. Вольтметр стартует со значения больше 1В и в дальнейшем абракадабра. Грешу на сигнал по входу SYNC, но как сдвинуть его в программе, не понимаю. Заранее спасибо. В архиве даташит на AD5310.
|
|
|
|
anatol |
Дата: Пт, 14.12.2012, 22:26 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Обрати внимание на то что разрядность не 8 бит, а 1024 (0-1023) = 10бит. Соответственно переменные двойное слово. Вместо сдвига для проверки можно считать с 4 по 4095.
|
|
|
|
dimitriy-bc |
Дата: Сб, 15.12.2012, 20:52 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
Всем доброго времени суток. anatol, в программе переменные I и value объявлены как Word. В даташит на AD5310 указано (если я правильно понял, английский со словарем), что регистр входа организован следующим образом. Два старших и два младших бита не используются. Со второго по одиннадцатый, отвечают за выходное напряжение, двенадцатый и тринадцатый, за выходное сопротивление. При пошаговом прогоне в протеусе, при появлении единици в DB2 вольтметр показывает значение 1.27В. Дальше напряжение растет на 0.02В при каждом инкрементировании value и соответственно младшего байта Val2. Это продолжается до достижения Val2 значения 01111100 вольтметр 1.86В). При следующем инкрементировании т.е. Val2 принимает значение 10000000, волтметр показывает 1.25В, и дальше 1.27В… Когда Val2 переполнен (00000000) и Val1 увеличивается на единицу (00000001), вотметр переходит со значения 1.86В на 3.75В. При дальнейшей работе программы показания вольтметра растут до значения 4.36В (Val2-01111100, Val1-00000001). В общем, получается следующее 0В (Val2-00000000, Val1-00000000) 1.27В (Val2-00000100, Val1-00000000) 1.86В (Val2-01111100, Val1-00000000) 1.25В (Val2-10000000, Val1-00000000) 1.86В (Val2-11111100, Val1-00000000) 3.75В (Val2-00000000, Val1-00000001) 4.36В (Val2-11111100, Val1-00000001) 3.75В (Val2-10000000, Val1-00000001) 4.36В (Val2-11111100, Val1-00000001) 0В (Val2-00000000, Val1-00000010) Вот такие у меня непонятки. Помогите кто чем может .
|
|
|
|
anatol |
Дата: Сб, 15.12.2012, 21:15 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Да! Я вчера с температурой и поздно дал маху. Переменная Word = 2 байтам. Так что ошибся. Здоровье разрешит - посмотрю еще. Может проблема с функцией вывода? Попробуйте сделать вывод побитово, в цикле, "вручную" устанавливая выводы. Т.е. подергайте пин. возможно передается 9 бит вместо 8.
Сообщение отредактировал
anatol - Сб, 15.12.2012, 21:19
|
|
|
|
ivan_fd |
Дата: Вс, 16.12.2012, 01:53 | Сообщение # 5 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
C чего Вы взяли, что там протокол I2C? Зачем Вы его используете?
Используйте просто SPI.
Вот пример, все работает!!! Code main: PORTA.0 = 1 value = 0 For I = 0 To 1024 DelayMS 50 Inc value
valsnd = value << 2 PORTA.0 = 0 SHOut PORTA.2 , PORTA.1 , MsbFirst , [ valsnd\16 ] PORTA.0 = 1 Next
GoTo main
|
|
|
|
dimitriy-bc |
Дата: Вс, 16.12.2012, 02:24 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
Всем доброго времени суток. ivan_fd, почему я так решил объяснить не могу. Наверно слаб я в этом еще. Но, огромное Вам спасибо. Действительно работает великолепно.
|
|
|
|