Всем доброго времени суток. У меня появилась проблема. Необходимо организовать ЦАП. ЦАП на ШИМ получается медленный, ФНЧ тормозит. И если использовать ШИМ от ПРОТОНа, то и дискретность 255 маловата. В связи с этим решил попробовать на ЦАП AD5310. За основу взял программу на AD5305. Но пока как надо она не работает. Пошагово просматривал, приращение в переменной value вроде идет нормально и перераспределение в Val1 и Val2 тоже. Вольтметр стартует со значения больше 1В и в дальнейшем абракадабра. Грешу на сигнал по входу SYNC, но как сдвинуть его в программе, не понимаю. Заранее спасибо. В архиве даташит на AD5310.
Обрати внимание на то что разрядность не 8 бит, а 1024 (0-1023) = 10бит. Соответственно переменные двойное слово. Вместо сдвига для проверки можно считать с 4 по 4095.
Всем доброго времени суток. 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) Вот такие у меня непонятки. Помогите кто чем может .
Да! Я вчера с температурой и поздно дал маху. Переменная Word = 2 байтам. Так что ошибся. Здоровье разрешит - посмотрю еще. Может проблема с функцией вывода? Попробуйте сделать вывод побитово, в цикле, "вручную" устанавливая выводы. Т.е. подергайте пин. возможно передается 9 бит вместо 8.
Сообщение отредактировал
anatol - Сб, 15.12.2012, 21:19
Всем доброго времени суток. ivan_fd, почему я так решил объяснить не могу. Наверно слаб я в этом еще. Но, огромное Вам спасибо. Действительно работает великолепно.