Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 11.12.2019, 19:50  
kib12
Частый гость
 
Регистрация: 01.03.2008
Сообщений: 31
Сказал спасибо: 2
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
kib12 на пути к лучшему
По умолчанию PIC12F1840 Использование хардварного UART совместно с DAC

Интересно, что в реале работает, в Протеусе нет. При записи в RCSTA бита SPEN (включение пинов RX/TX) в Протеусе на пине RA0 (по идее, переключенном на RA4) появляется "1" и DAC не может ее победить. В железе этот пин не поднимается.
Надо в ветке протеуса спрашивать.
Спасибо за участие.
Реклама:
kib12 вне форума  
Непрочитано 11.12.2019, 20:44  
kib12
Частый гость
 
Регистрация: 01.03.2008
Сообщений: 31
Сказал спасибо: 2
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
kib12 на пути к лучшему
По умолчанию 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 он должен выдавать почти полное питание.


Что я делаю не так?
kib12 вне форума  
Непрочитано 11.12.2019, 21:46  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 673
Сказал спасибо: 360
Сказали Спасибо 751 раз(а) в 357 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию 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 мкс.
j-Roger вне форума  
Непрочитано 12.12.2019, 10:33  
kib12
Частый гость
 
Регистрация: 01.03.2008
Сообщений: 31
Сказал спасибо: 2
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
kib12 на пути к лучшему
По умолчанию 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 для вывода нескольких флагов, дальше уже другой мк будет разбираться. Поставить другой камень по ряду причин не могу. Софтварный уарт тоже не подходит.
kib12 вне форума  
Непрочитано 12.12.2019, 11:21  
OakRidge
Почётный гражданин KAZUS.RU
 
Аватар для OakRidge
 
Регистрация: 16.05.2015
Адрес: Болгария
Сообщений: 1,460
Сказал спасибо: 286
Сказали Спасибо 1,125 раз(а) в 540 сообщении(ях)
OakRidge на пути к лучшему
По умолчанию 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 и подобные пакости. Другое ручками битиками...
OakRidge вне форума  
Непрочитано 12.12.2019, 12:59  
mimuh64
Прописка
 
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
mimuh64 на пути к лучшему
По умолчанию Re: PIC12F1840 Использование хардварного UART совместно с DAC

Сообщение от kib12 Посмотреть сообщение
1. Обнуление SPEN ничего не меняет, единица на RA0 стоит.
2. В ЖЕЛЕЗЕ пин ТХ RA0 после переключения свободен и DAC рисует пилу. Правда, на половину питания.
1. После отключения USART (SPEN=0). Дополнительно настрой порт на вход TRISA.0=1; и пила появится...
2. Посмотри что у тебя записано в регистре FVRCON.

А с чего ты взял что пин TX можно переназначить на другой порт?
mimuh64 вне форума  
Непрочитано 12.12.2019, 16:47  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 673
Сказал спасибо: 360
Сказали Спасибо 751 раз(а) в 357 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: PIC12F1840 Использование хардварного UART совместно с DAC

Сообщение от kib12 Посмотреть сообщение
Вот я и пробую так использовать DAC для вывода нескольких флагов, дальше уже другой мк будет разбираться
По указанной Вами ссылке у автора вывод в DAC происходит с периодом 10 миллисекунд.

Пин RA0 еще может служить выходом модуля Data Signal Modulator (DSM).
Возможно, для вывода флагов можно придумать что-то более удобное с этим модулем, нежели аналоговый сигнал с DAC-а. Ну это взгляд со стороны ( так сказать, мысли вслух ..)
j-Roger вне форума  
Непрочитано 12.12.2019, 18:36  
kib12
Частый гость
 
Регистрация: 01.03.2008
Сообщений: 31
Сказал спасибо: 2
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
kib12 на пути к лучшему
По умолчанию Re: PIC12F1840 Использование хардварного UART совместно с DAC

Сообщение от mimuh64 Посмотреть сообщение
А с чего ты взял что пин TX можно переназначить на другой порт?
Я иногда так делаю если разводка не позволяет использовать основной пин ТХ или RX. Регистр APFCON.
kib12 вне форума  
Непрочитано 12.12.2019, 21:17  
mimuh64
Прописка
 
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
mimuh64 на пути к лучшему
По умолчанию Re: PIC12F1840 Использование хардварного UART совместно с DAC

Сообщение от kib12 Посмотреть сообщение
Я иногда так делаю если разводка не позволяет использовать основной пин ТХ или RX. Регистр APFCON.
Блин... я имел ввиду что изменяя порт в APFCON при использовании функции rs232(uart1, baud=19200) в CCS пин A0 остается настроенный на выход. Для Протеуса его нужно установить как вход. Изменения регистра APFCON вряд ли коснутся функции rs232 CCS. Поэтому в Протеусе и не работает.
Если все настраивать ручками, то порты можно переназначать...
mimuh64 вне форума  
Непрочитано 13.12.2019, 10:37  
mimuh64
Прописка
 
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
mimuh64 на пути к лучшему
По умолчанию Re: PIC12F1840 Использование хардварного UART совместно с DAC

Два варианта. Видны настройки регистров. Просто открой архив и посмотри ролик.
Вложения:
Тип файла: rar 1 вар.rar (160.2 Кб, 0 просмотров)
Тип файла: rar 2 вар.rar (98.8 Кб, 0 просмотров)
mimuh64 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC12F1840 Использование UART совместно с DAC kib12 PIC 2 11.12.2019 03:00
Программирование программатором STERH 007 PIC микроконтроллеров ispitatel1 Песочница (вопросы новичков) 4 17.04.2017 17:18


Часовой пояс GMT +4, время: 03:48.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot