Прошу подсказать по ЦАП микроконтроллера PIC16F1829. Нет напряжения на выходе DAC, хотя вроде все по даташиту сделано. Может упустил чего?
В коде всего шесть строчек не считая инициализации микроконтроллера. Казалось бы, что тут может не работать? Но не работает, как ни странно.
В регистре DACCON0 ЦАП включен. В качестве DAC Positive Source выбран плюс питания Vdd. DAC Positive Source, это Vss. Бит DACOE установлен. Как утверждает даташит, при установке DACOE вывод порта A0 автоматически становится выходом ЦАП. Вот перевод этого момента из даташита:
Цитата:
|
Выбор опорного напряжения ЦАП для вывода на вывод DACOUT автоматически отменяет функции буфера цифрового выхода и порогового детектора цифрового входа этого вывода. Чтение вывода DACOUT, когда он настроен на вывод опорного напряжения ЦАП, всегда будет возвращать '0'.
|
То есть от настроек порта A зависимости не должно быть.
Казалось бы все необходимое сделал, но DAC не включается.
void main(void) {
//---Настройка порта A---
TRISA = 0b11111111;
ANSELA = 0b00000000;
WPUA = 0b00000000;
//---Настройка ЦАП---
DACCON0 = 0b11100000;
DACCON1 = 15; // Начальное значение udac
while(1);
}
Что самое обидное, в Proteus все нормально, ЦАП включается и выдает на выводе 19 (RA0/DACOUT) некоторое напряжение, которое меняется с изменением значений в регистра DACCON1. А в железе все глухо.
Вообще не представляю что тут еще можно сделать. За ЦАП в PIC16F1829 отвечают всего три регистра: DACCON0, DACCON1 и FVRCON. Последний я не трогал, поскольку беру питание DAC (или опорное, не знаю как точно назвать) непосредственно от источника питания. Тут больше настраивать нечего. В чем может быть косяк?