реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Atsamd11 проблема с компаратором, Не работает выход компаратора
Aal6
сообщение Apr 1 2018, 12:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-03-06
Пользователь №: 14 880



Добрый день!
Помогите победить компаратор в ATSAMd11d14am.
Не могу вывести на выходные пин сигнал выхода сравнения компаратора.
Основа проекта, пример работы с компаратором из AFS(Atmel Studio7).
Изменены режимы
ac_chan_conf.sample_mode = AC_CHAN_MODE_CONTINUOUS;
ac_chan_conf.output_mode = AC_CHAN_OUTPUT_ASYNCRONOUS;
Все транслируется на биты в установке компаратора(картинка вложена).

PORTIO->WRCONFIG.reg = PORT_WRCONFIG_PMUXEN | ((PORT_PMUX_PMUXE_B_Val)<< PORT_WRCONFIG_PMUX_Pos)|PORT_WRCONFIG_WRPMUX| PORT_WRCONFIG_WRPINCFG| (1<<PIN_PA10) ;//(1<<PIN_PA14);.
В установках пина Pin_PA10 PORT_PMUX_PMUXE_B_Val и PORT_PINCFG_PMUXEN выставляются(в дебагере видно), хотя ASF это программно не поддерживает.

На выводе постоянный 0. (осцилограф)

При программной трансляции статуса компаратора на произвольный выход - все нормально работает(осцилограф), выходной пин повторяет вход.
if(AC->STATUSA.bit.STATE0)
PORTIO->OUTCLR.reg = 1<<PIN_PA17;
else
PORTIO->OUTSET.reg = 1<<PIN_PA17;
Т.е. проблема в районе железной трансляции выхода компаратора на пин. Не могу понять в чем дело. Помогите, кто сталкивался, второй день пляшу с бубном. Видимо, бубен держу не в той руке.

С уважением, Алексей.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Apr 1 2018, 17:50
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Действительно, не работает. При переключении PMUX на CMPx выход просто висит в третьем состоянии.

Это похоже на баг в документации (таблица PMUX), я попробую выяснить. Но скорее всего придется подождать пару дней пока я смогу найти людей, которые могут проверить куда именно подключен выход.

Я ткнул пальцем в небо и по аналогии с D21 попробовал PMUX_G и выход заработал.

Так что это ошибка в документации. Я сообщу куда нужно.

Вот полный код
CODE
//-----------------------------------------------------------------------------
HAL_GPIO_PIN(AC,       A, 4);
HAL_GPIO_PIN(CMP,      A, 10);
HAL_GPIO_PIN(LED,      A, 16)

//-----------------------------------------------------------------------------
static void ac_init(void)
{
  HAL_GPIO_AC_in();
  HAL_GPIO_AC_pmuxen(HAL_GPIO_PMUX_B);

  HAL_GPIO_CMP_out();
  HAL_GPIO_CMP_clr();
  HAL_GPIO_CMP_pmuxen(HAL_GPIO_PMUX_G);

  PM->APBCMASK.reg |= PM_APBCMASK_AC;

  GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID(AC_GCLK_ID_ANA) |
      GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN(0);

  GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID(AC_GCLK_ID_DIG) |
      GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN(0);

  AC->COMPCTRL[0].reg = AC_COMPCTRL_ENABLE | AC_COMPCTRL_SPEED_HIGH |
      AC_COMPCTRL_INTSEL_RISING | AC_COMPCTRL_OUT_ASYNC |
      AC_COMPCTRL_MUXNEG_VSCALE | AC_COMPCTRL_MUXPOS_PIN0;

  AC->SCALER[0].reg = 32;

  AC->CTRLA.reg |= AC_CTRLA_ENABLE;
}

//-----------------------------------------------------------------------------
int main(void)
{
  SYSCTRL->OSC8M.bit.PRESC = 0;

  ac_init();

  HAL_GPIO_LED_out();
  HAL_GPIO_LED_clr();

  while (1)
  {
    HAL_GPIO_LED_write(AC->STATUSA.bit.STATE0);
  }

  return 0;
}


Сообщение отредактировал ataradov - Apr 1 2018, 17:36
Go to the top of the page
 
+Quote Post
Aal6
сообщение Apr 1 2018, 18:34
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-03-06
Пользователь №: 14 880



Все оказалось просто.
В даташите в таблице PORT Function Multiplexing указано, что AC CMP[0]-CMP[1] относится к Peripheral function B, а по факту к Peripheral function G.
Раскопал в define на чип.
Относится к samd10-samd11 семейству. В обоих даташитах имеется определение CMP[0]-CMP[1] в группе B.
Блин...


Спасибо за ответ! Так все и оказалось.
Жаль ответ прочитал позже, чем нашел сам.

Сообщение отредактировал Aal6 - Apr 1 2018, 18:43
Go to the top of the page
 
+Quote Post
ataradov
сообщение Apr 1 2018, 18:39
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Если будут подобные проблемы в будущем - обращайтесь без копания днями. Если что-то не работает, что очевидно должно, то обычно решение известно или можно быстро найти.
Go to the top of the page
 
+Quote Post
Aal6
сообщение Apr 1 2018, 20:14
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-03-06
Пользователь №: 14 880



Цитата(ataradov @ Apr 1 2018, 21:39) *
Если будут подобные проблемы в будущем - обращайтесь без копания днями. Если что-то не работает, что очевидно должно, то обычно решение известно или можно быстро найти.


Обычно сперва думаешь, что сам ошибся. Особенно, когда чип не знаком.

Вопросы которые мне бы немного помогли:
Работает ли PullUp/Down при определении периферийной функции на входах?
Достаточно ли стабильности внутреннего генератора для работы с UART? (Стоит ли ставить внешний кварц)

С уважением, Алексей.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Apr 1 2018, 20:21
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (Aal6 @ Apr 1 2018, 13:14) *
Работает ли PullUp/Down при определении периферийной функции на входах?
Для разной периферии по-разному, но в общем случае нет. В GPIO pull-up/pull-down контролируется теми-же сигналами, что и установка 1 и 0. Так что pull-up/pull-down не будут работать для периферии, которая использует пины на выход, хотя бы часть времени (I2C, например). Но для EIC они будут работать как нужно.

QUOTE (Aal6 @ Apr 1 2018, 13:14) *
Достаточно ли стабильности внутреннего генератора для работы с UART? (Стоит ли ставить внешний кварц)
Более чем достаточно для большинства применений.
Go to the top of the page
 
+Quote Post
Aal6
сообщение Apr 1 2018, 20:30
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-03-06
Пользователь №: 14 880



Цитата(ataradov @ Apr 1 2018, 23:21) *
Для разной периферии по-разному, но в общем случае нет. В GPIO pull-up/pull-down контролируется теми-же сигналами, что и установка 1 и 0. Так что pull-up/pull-down не будут работать для периферии, которая использует пины на выход, хотя бы часть времени (I2C, например). Но для EIC они будут работать как нужно.

Более чем достаточно для большинства применений.


Интересует pullup для UART RX. В общем-то все равно проверю, ошибка на плате будет себе дороже. Хотя доп резистор ставить не хочу.

Для I2C там пулапы прописаны в стандарте функции. Странно, что в даташите в таблице мультиплексора функций указано в графе type только 4 пина с типом I2c. При том, что в чипе 3 SerCom модуля.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Apr 1 2018, 20:38
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (Aal6 @ Apr 1 2018, 13:30) *
Интересует pullup для UART RX. В общем-то все равно проверю, ошибка на плате будет себе дороже. Хотя доп резистор ставить не хочу.
Я точно не знаю - не проверял. Но внешний резистор я бы поставил.

QUOTE (Aal6 @ Apr 1 2018, 13:30) *
Для I2C там пулапы прописаны в стандарте функции.
В смысле? Внутренних pull-up там нет совсем.

QUOTE (Aal6 @ Apr 1 2018, 13:30) *
Странно, что в даташите в таблице мультиплексора функций указано в графе type только 4 пина с типом I2c. При том, что в чипе 3 SerCom модуля.
Пины помеченные как I2C обладают повышенной нагрузочной способностью, но в остальном любые пины, на которые можно назначить PAD[0] и PAD[1] могут работать как I2C. По крайней мере в не-fast режиме.
Go to the top of the page
 
+Quote Post
Aal6
сообщение Apr 10 2018, 09:01
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-03-06
Пользователь №: 14 880



Добрый день!

Нет ли у кого бутлоадера под SAMD10/11, которым не жалко поделится?

Из примеров ASF уж очень большой компилится(4.5k без шифрования под i2c), задача влезть в 4к из 16 на борту c шифрованием под Uart или i2c.

И хорошо бы файл для линкера, который переносит компиляцию основной задачи на 4к выше.

С уважением, Алексей.

Go to the top of the page
 
+Quote Post
Aal6
сообщение Apr 14 2018, 11:38
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-03-06
Пользователь №: 14 880



Добрый день!

Подскажите, где взять файлы к Secure UART Bootloader for SAM D10?

http://www.microchip.com/wwwappnotes/appno...ppnote=en603279

Не могу понять. Буду благодарен за ссылку или сами файлы.


С уважением, Алексей.
Go to the top of the page
 
+Quote Post
Aal6
сообщение Apr 18 2018, 08:29
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-03-06
Пользователь №: 14 880



Получил с Микрочипа.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th July 2025 - 19:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01452 секунд с 7
ELECTRONIX ©2004-2016