Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-авг-19 07:14

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с ADC0 на 1986ВЕ8Т
СообщениеДобавлено: 2018-янв-23 11:49 
Не в сети

Зарегистрирован: 2014-дек-12 11:22
Сообщения: 12
Получили "свежие" образцы 1986ВЕ8Т с ревизией 4 (1731). Тестирую работу ADC на Evaluation Board for MCU1986VE8T REV 1.1. ADC1 работает замечательно - от внутреннего источника измеряет постоянное напряжение +-1емр. Для 12-разрядного АЦП это хороший результат.
А вот с ADC0 - проблема. Не запускается. Настройки с ADC1 идентичные. Не работает ни про прерываниям, ни по готовности.
Отладка под KEIL с Keil.MDR32F8.0.1.pack.
У кого-нибудь оба АЦП: ADC0 и ADC1 одновременно работают? Где мне искать ошибку?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с ADC0 на 1986ВЕ8Т
СообщениеДобавлено: 2018-янв-23 16:24 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 666
Откуда: г. Санкт-Петербург
МК 1986ВЕ8Т 1725
Пример проекта теста ЦАП-АЦП для отладочной платы.
Выход DAC0_OUT соединен с входом ADC2, на выходе DAC1_OUT наблюдаем сигнал c DAC0 "пропущенный" через ADC0(ADC1). Оба АЦП работоспособны.


Вложения:
tstadcdac.rar [121.5 КБ]
Скачиваний: 57
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с ADC0 на 1986ВЕ8Т
СообщениеДобавлено: 2018-янв-24 13:34 
Не в сети

Зарегистрирован: 2014-дек-12 11:22
Сообщения: 12
Отлично!
Спасибо большое!
В файле:
******************************************************************************
* @file mdr32f8_adc.c
* @author Milandr Application Team
* @version V1.4.0
* @date 20/07/2015
* @brief This file provides all the ADC firmware functions.
******************************************************************************
была ошибка:
функция
void ADC_CLK_en(uint32_t ADC_CLKSRC, uint32_t ADC_CLK_DIV);
не настраивала тактирование ADC0, а только ADC1 !!!
Поправил и все заработало!

На самом деле, в библиотеке очень много ошибок, как ни печально. Где- бы взять исправленную?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с ADC0 на 1986ВЕ8Т
СообщениеДобавлено: 2018-янв-24 15:18 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 666
Откуда: г. Санкт-Петербург
Alkorix писал(а):
...
На самом деле, в библиотеке очень много ошибок, как ни печально. Где- бы взять исправленную?

Из-за ограниченного применения данного МК "безошибочная" библиотека вряд ли скоро появится.
Поэтому советую писать все самому.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с ADC0 на 1986ВЕ8Т
СообщениеДобавлено: 2018-янв-24 22:06 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1133
Откуда: Тула
Считаю это вопрос мотивации, причинно-следственной связи. Миландру эта либа, как и остальные "непрофильные активы", не нужна. Соответственно, кропотливо корпеть над штукой не приносящей профита миландровцы не будут (если только по личной инициативе кто-то, таких мало).
Так что остаётся только коммьюнити пользователей. Типа того https://github.com/eldarkg/emdr1986x-std-per-lib

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с ADC0 на 1986ВЕ8Т
СообщениеДобавлено: 2018-янв-25 08:03 
Не в сети

Зарегистрирован: 2014-дек-12 11:22
Сообщения: 12
prostoRoman писал(а):


К сожалению, для M4 там еще не заточено.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с ADC0 на 1986ВЕ8Т
СообщениеДобавлено: 2018-янв-25 11:41 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1133
Откуда: Тула
Alkorix писал(а):
prostoRoman писал(а):
К сожалению, для M4 там еще не заточено.

Так о том и речь - заводите новый, правьте, народ подтянется в меру желания...

Стоит переговорить с 8daemon о добавлении поддержки ВЕ8 в его репозиторий.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с ADC0 на 1986ВЕ8Т
СообщениеДобавлено: 2018-янв-29 16:01 
Не в сети

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 36
Подскажите по режиму автоматической калибровки АЦП.
В документации написано, что нужно выполнить преобразования для каналов 60..63 - это какие каналы? 28,29,30,31 (считая от 0) каналы ADC1?
Правильно я понимаю, что записать автокалибровку нужно только один раз при старте работы с АЦП?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с ADC0 на 1986ВЕ8Т
СообщениеДобавлено: 2018-янв-30 19:22 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1281
Откуда: АО "ПКК Миландр"
QuadMan писал(а):
Подскажите по режиму автоматической калибровки АЦП.
В документации написано, что нужно выполнить преобразования для каналов 60..63 - это какие каналы? 28,29,30,31 (считая от 0) каналы ADC1?
Правильно я понимаю, что записать автокалибровку нужно только один раз при старте работы с АЦП?


Очепятка - АЦП работает без калибровки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с ADC0 на 1986ВЕ8Т
СообщениеДобавлено: 2018-фев-15 15:47 
Не в сети

Зарегистрирован: 2016-апр-27 12:14
Сообщения: 26
Да кстати про АЦП. Есть в библиотеке функция void ADC_CLK_en(uint32_t ADC_CLKSRC, uint32_t ADC_CLK_DIV)
Она включает только ADC1, но проблема не в этом, а в том, что там перепутаны местами аргументы. Вместо источника тактирования
в биты 28-31 записывается делитель частоты. В результате АЦП тактируется совсем не так, как вы предполагаете.
Код:
     tmpreg &= ~ADCx_DIV_Msk;                           
     tmpreg |=  ADC_CLKSRC;
   tmpreg &= ~ADCx_CLKSRC_msk;
   tmpreg |=  ADC_CLK_DIV<<ADCx_CLKSRC_offs; // неправильно на 28 бит сдвигается источник тактирования, а не делитель

Вот как может выглядеть функция:
Открыть
Код:
#define ADC0 0
#define ADC1 1
#define IS_ADC_ALL_PERIPH(PERIPH)          (((PERIPH) == ADC0) || \
                                             ((PERIPH) == ADC1))

void ADC_CLK_en_corrected(uint8_t ADC_n, uint32_t ADC_CLKSRC, uint32_t ADC_CLK_DIV)
{
  uint32_t tmpreg;
  /* Check the parameters */
  assert_param(IS_ADC_ALL_PERIPH(ADC_n));

   
   tmpreg = ADC_CLKSRC<<ADCx_CLKSRC_offs|ADCx_CLK_EN|ADC_CLK_DIV;
   if (ADC_n == 1){
      CLK_CNTR->ADC1_CLK = 0;
      CLK_CNTR->ADC1_CLK = tmpreg;
        }
   if (ADC_n == 0){
      CLK_CNTR->ADC0_CLK = 0;
      CLK_CNTR->ADC0_CLK = tmpreg;
        }
}
Закрыть


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с ADC0 на 1986ВЕ8Т
СообщениеДобавлено: 2018-фев-26 10:11 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 136
Откуда: ПКК "Миландр"
Так же необходимо поправить в mdr32f8_adc.h

#define ADCx_CLKSRC_MAX_CLK ((uint32_t)0x0000000D) // было 0хС

и чтобы не заводить новые define в реализации от _oleg_, предложил бы входные параметры завести аналогично прочим функциям.

Открыть
Код:
void ADCx_CLK_en(ADCxControl* ADCx, uint32_t ADC_CLKSRC, uint32_t ADC_CLK_DIV)
{
  /* Check the parameters */
  assert_param(IS_UART_ALL_PERIPH(UARTx));
  assert_param(IS_UART_CLKSRC(UART_CLKSRC));
   
  if (ADCx == ADC0)
  { 
    CLK_CNTR->ADC0_CLK = 0;
    CLK_CNTR->ADC0_CLK = (ADC_CLKSRC<< ADCx_CLKSRC_offs) | ADCx_CLK_EN | ADC_CLK_DIV;   
  } 
  else
  { 
    CLK_CNTR->ADC1_CLK = 0;
    CLK_CNTR->ADC1_CLK = (ADC_CLKSRC<< ADCx_CLKSRC_offs) | ADCx_CLK_EN | ADC_CLK_DIV;
  } 
}
Закрыть

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с ADC0 на 1986ВЕ8Т
СообщениеДобавлено: 2018-май-17 18:27 
Не в сети

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 36
А вот еще вопрос по АЦП.
Есть калибровочные значения для преобразования значений внутренних каналов (напряжение питания домена 0...датчик температуры 1) в вольты, амперы и цельсии?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB