11.12.2019, 19:50
|
|
Частый гость
Регистрация: 01.03.2008
Сообщений: 31
Сказал спасибо: 2
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
PIC12F1840 Использование хардварного UART совместно с DAC
Интересно, что в реале работает, в Протеусе нет. При записи в RCSTA бита SPEN (включение пинов RX/TX) в Протеусе на пине RA0 (по идее, переключенном на RA4) появляется "1" и DAC не может ее победить. В железе этот пин не поднимается.
Надо в ветке протеуса спрашивать.
Спасибо за участие.
|
|
|
|
11.12.2019, 20:44
|
|
Частый гость
Регистрация: 01.03.2008
Сообщений: 31
Сказал спасибо: 2
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
PIC12F1840 Использование хардварного UART совместно с DAC
Столкнулся с непонятным.
Исходный код на С - передаем "привет" в альтернативный пин UART и делаем пилу на стандартном пине UArta:
#include ‹12F1840.h›
#fuses NOMCLR INTRC_IO PLL_SW
#device ADC = 10
#use delay(clock=32000000)
#use rs232(uart1, baud=19200)
#BYTE APFCON=0X11D #BIT RXDTSEL=APFCON.7 #BIT TXCKSEL=APFCON.2
int8 dc=0; //это будем выводить в DAC
void main(void) {
TXCKSEL=1; //Переключаем выход UART с RA0 на RA4
printf("Privet\r\n"); //Выводит привет в RA4.
delay_ms(10);
setup_dac(DAC_OUTPUT | DAC_VSS_VDD); //задаем режим DAC
while(TRUE) //Делаем пилу на RA0
{
dc_write(dc);
if(dc++›31)
dc=0;
delay_us(10);
}}
В реале пила есть.
В Протеусе пилы нет, колебания на пине RA0 около 5 вольт.
Если убрать #use rs232... и printf... то протеус пилу рисует, в полный размах.
При пошаговом моделировании в дизассемблере места #use rs232.. обнаружил, что при записи в RCSTA бита SPEN (включение пинов RX и TX) Протеус ставит на пин RA0 единицу (хотя этот пин ТХ УАРТ будет далее переназначен на RA4). Эту "1" никак не убрать, и DAC не может ее победить. Обнуление SPEN ничего не меняет, единица на RA0 стоит.
Пин RA4 после переключения висит и ставится в '1' только после "привета".
Сделать переназначение пинов до директивы #use rs232 компилятор не позволяет.
В ЖЕЛЕЗЕ пин ТХ RA0 после переключения свободен и DAC рисует пилу. Правда, на половину питания. С этим пока тоже непонятно. Вроде должно при записи 0b11111 (31) в DAC он должен выдавать почти полное питание.
Что я делаю не так?
|
|
|
|
11.12.2019, 21:46
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 714
Сказал спасибо: 363
Сказали Спасибо 797 раз(а) в 371 сообщении(ях)
|
Re: PIC12F1840 Использование хардварного UART совместно с DAC
Вероятно, стОит проверить в листинге на ассемблере, во что разворачивается конструкция setup_dac(...) на предмет корректной настройки:
- источника положительного напряжения для DAC в регистре DACCON0, биты DACPSS‹1:0›. Эти биты должны быть установлены в b00 для выбора VDD.
- источника отрицательного напряжения для DAC в регистре DACCON0, бит DACNSS. Этот бит должен быть установлен в 0 для выбора VSS.
Впрочем, это состояние после reset-а.
Также стОит обратить внимание на нагрузку выходного пина DAC на предмет "перегрузки" - резисторы в матрице DAC-а по 5кОм.
Также указано время установления выходного напряжения DAC-а - порядка 10 мкс (худший случай).
Кстати, в тексте программы как раз 10 мкс.
|
|
|
|
12.12.2019, 10:33
|
|
Частый гость
Регистрация: 01.03.2008
Сообщений: 31
Сказал спасибо: 2
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: PIC12F1840 Использование хардварного UART совместно с DAC
За основу беру листинг и видео симуляции в Протеусе отсюда:
https://simple-circuit.com/pic12f1822-dac-module-ccs-c/
Если в этом примере убрать чтение ADC, а в DAC записывать от 0 до 31, то Протеус показывает на осцилле равномерно возрастающую ступенчатую пилу, 32 шага. В железе реально пила возрастает нелинейно и до половины питания, кривая. Возможно, нужна нагрузка на выход DAC.
Если добавим #use RS232 и переназначаем пин ТХ на альтернативный, чтобы освободить его для DAC, то Протеус делает как я писал ранее, на выходе DAC пилы нет, стоит 1. В железе пила есть, кривая.
Зачем это все - не хватает пинов.
Вот я и пробую так использовать DAC для вывода нескольких флагов, дальше уже другой мк будет разбираться. Поставить другой камень по ряду причин не могу. Софтварный уарт тоже не подходит.
|
|
|
|
12.12.2019, 11:21
|
|
Заблокирован
Регистрация: 16.05.2015
Адрес: Болгария
Сообщений: 1,460
Сказал спасибо: 286
Сказали Спасибо 1,125 раз(а) в 540 сообщении(ях)
|
Re: PIC12F1840 Использование хардварного UART совместно с DAC
Схему бы DAC03 CR Unit Resistor Value (R) 5K
RA0 7 AN0 DACOUT CPS0 C1IN+ P1B TX CK SDO SS(1) IOC MDOUT Y ICSPDAT ICDDA
Здесь могут быть конфликты DACOUT - TX - ICSPDAT - PULL_UP
Вобщем посмотрите APFCON. Я периферию функциями настраивать избегаю, разве что UART, I2C и подобные пакости. Другое ручками битиками...
|
|
|
|
12.12.2019, 12:59
|
|
Прописка
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
|
Re: PIC12F1840 Использование хардварного UART совместно с DAC
Сообщение от kib12
|
1. Обнуление SPEN ничего не меняет, единица на RA0 стоит.
2. В ЖЕЛЕЗЕ пин ТХ RA0 после переключения свободен и DAC рисует пилу. Правда, на половину питания.
|
1. После отключения USART (SPEN=0). Дополнительно настрой порт на вход TRISA.0=1; и пила появится...
2. Посмотри что у тебя записано в регистре FVRCON.
А с чего ты взял что пин TX можно переназначить на другой порт?
|
|
|
|
12.12.2019, 16:47
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 714
Сказал спасибо: 363
Сказали Спасибо 797 раз(а) в 371 сообщении(ях)
|
Re: PIC12F1840 Использование хардварного UART совместно с DAC
Сообщение от kib12
|
Вот я и пробую так использовать DAC для вывода нескольких флагов, дальше уже другой мк будет разбираться
|
По указанной Вами ссылке у автора вывод в DAC происходит с периодом 10 миллисекунд.
Пин RA0 еще может служить выходом модуля Data Signal Modulator (DSM).
Возможно, для вывода флагов можно придумать что-то более удобное с этим модулем, нежели аналоговый сигнал с DAC-а. Ну это взгляд со стороны ( так сказать, мысли вслух ..)
|
|
|
|
12.12.2019, 18:36
|
|
Частый гость
Регистрация: 01.03.2008
Сообщений: 31
Сказал спасибо: 2
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: PIC12F1840 Использование хардварного UART совместно с DAC
Сообщение от mimuh64
|
А с чего ты взял что пин TX можно переназначить на другой порт?
|
Я иногда так делаю если разводка не позволяет использовать основной пин ТХ или RX. Регистр APFCON.
|
|
|
|
12.12.2019, 21:17
|
|
Прописка
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
|
Re: PIC12F1840 Использование хардварного UART совместно с DAC
Сообщение от kib12
|
Я иногда так делаю если разводка не позволяет использовать основной пин ТХ или RX. Регистр APFCON.
|
Блин... я имел ввиду что изменяя порт в APFCON при использовании функции rs232(uart1, baud=19200) в CCS пин A0 остается настроенный на выход. Для Протеуса его нужно установить как вход. Изменения регистра APFCON вряд ли коснутся функции rs232 CCS. Поэтому в Протеусе и не работает.
Если все настраивать ручками, то порты можно переназначать...
|
|
|
|
13.12.2019, 10:37
|
|
Прописка
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
|
Re: PIC12F1840 Использование хардварного UART совместно с DAC
Два варианта. Видны настройки регистров. Просто открой архив и посмотри ролик.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:17.
|
|