Новый ARM Atmel Cortex-M0+ ATSAMD20

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
vasich61
Родился
Сообщения: 3
Зарегистрирован: Чт мар 27, 2014 14:36:39

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение vasich61 »

Спасибо, аппноут посмотрю на досуге.

Я еще тогда попробовал в рукопашную по образу и подобию того что MIB в начале топика советовал, но что-то он так и не запустился от 8МГц, как ни ворочал регистры.

А вот что помогло, так это поставить Atmel Studio 6.2 - они, видимо, пролечили примерчики.
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение Frogfot »

2 vasich61:

Так какие результаты курения камня?

Я DFLL так и не вкурил, а 8 MHz RC, 32 кГц внешний и оба внутренних запускал, таймеры запускал 8/16 бит, SERCOM запустил только в режиме UART.
Хорошему коту и в декабре - март :)
Аватара пользователя
vasich61
Родился
Сообщения: 3
Зарегистрирован: Чт мар 27, 2014 14:36:39

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение vasich61 »

Frogfot писал(а):2 vasich61:

Так какие результаты курения камня?


На тот момент мне нужно было просто ускорить его, т.к. не хватало скорости для обработки внешних прерываний. Курение даташита меня так и не спасло, поэтому ограничился новыми библиотеками. Использовал таймеры, внешние прерывания, GPIO. Сейчас появилась необходимость прицепить еще и UART на SERCOM. И вот тут-то и начались свистопляска опять, ибо с частотой от DFLL что-то не то и в UART при тактировании от DFLL начинает сыпаться какой-то мусор. По ходу, назревает второй подход к снаряду...


vasich61 писал(а):SERCOM запустил только в режиме UART

а не пробовали настроить stdio так, чтобы можно было в UART посылать со стандартными printf'ами?
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение Frogfot »

vasich61 писал(а):На тот момент мне нужно было просто ускорить его, т.к. не хватало скорости для обработки внешних прерываний. Курение даташита меня так и не спасло, поэтому ограничился новыми библиотеками. Использовал таймеры, внешние прерывания, GPIO. Сейчас появилась необходимость прицепить еще и UART на SERCOM. И вот тут-то и начались свистопляска опять, ибо с частотой от DFLL что-то не то и в UART при тактировании от DFLL начинает сыпаться какой-то мусор. По ходу, назревает второй подход к снаряду...

Ну суръёзный видать проект, раз скорости не хватало :)

Я использовал демоборд, на нём внешний кварц только 32 кГц, как вариант - можно попробовать подключить внешний генератор на лапку камушка.

С либами ASF я не разобрался, DFLL пытался запустить ручками, да так руки не дошли.

Могу попробовать курнуть ваш проект на своей демоборде, если покажете.

vasich61 писал(а):а не пробовали настроить stdio так, чтобы можно было в UART посылать со стандартными printf'ами?

Не, не пробовал, периферию я настраивал ручками, и байтики отправлял тоже ручками.

Даже ума не приложу, как это сделать.
Хорошему коту и в декабре - март :)
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение Frogfot »

2 vasich61:Вот последняя версия инита RC-8 MHz:

// ---------- Init OSC8M ----------
SYSCTRL->OSC8M.reg = SYSCTRL_OSC8M_FRANGE (0x3) |
SYSCTRL_OSC8M_PRESC (0x0) |
SYSCTRL_OSC8M_ENABLE;
Хорошему коту и в декабре - март :)
layabdu
Родился
Сообщения: 7
Зарегистрирован: Вт июн 17, 2014 19:25:55

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение layabdu »

Привет всем!) Что-то я совсем запутался...
Хочу настроить один вывод на вход АЦП, например PA02 делаю так:
PORT->Group[0].PINCFG[2].bit.PMUXEN = 1; т.е. подключаю вывод PA02 к мультиплексору.
а вот что вписывать в регистр PMUXn, не могу понять..

Вот выдержка из DS: The peripheral function can be selected by writing to the PMUXO or PMUXE bit group inthe PMUXn register. The
PMUXO/PMUXE bit group is at byte offset (PMUX0 + (y / 32) / 2), in bits 3:0 if y is even and in bits 7:4 if y is odd.

что за четные и нечетные выводы и т.д...

Совсем голову сломал уже..
layabdu
Родился
Сообщения: 7
Зарегистрирован: Вт июн 17, 2014 19:25:55

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение layabdu »

Поигрался с таймерами и после того, как закоментировал строку вот так:
//GCLK->CLKCTRL.reg = (GCLK_CLKCTRL_ID(TC2_GCLK_ID) | GCLK_CLKCTRL_GEN(0) | GCLK_CLKCTRL_CLKEN);

Код: Выделить всё

void TC2_initialize(void) {
   
   GCLK->CLKCTRL.reg = (GCLK_CLKCTRL_ID(TC2_GCLK_ID) | GCLK_CLKCTRL_GEN(0) | GCLK_CLKCTRL_CLKEN);
   
   //PM->APBCMASK.bit.TC2 = 1;
   PM->APBCMASK.reg |= PM_APBCMASK_TC2;
   
   PORT->Group[0].PINCFG[0].bit.PMUXEN = 1;
   PORT->Group[0].PINCFG[1].bit.PMUXEN = 1;
   PORT->Group[0].PMUX[0].bit.PMUXE = 0x05;      //Peripheral function F selected TC2/WO[0]
   PORT->Group[0].PMUX[0].bit.PMUXO = 0x05;      //Peripheral function F selected TC2/WO[2]
   //NVMCTRL-> CLK_PM_APB
   TC2->COUNT32.CTRLA.bit.MODE = 0x2;
   TC2->COUNT32.COUNT.reg = 0x12345678;
   TC2->COUNT32.CTRLA.bit.ENABLE = 1;
   
   //PM->APBASEL.bit.APBADIV
   //REG_PORT_DIRSET0 = 0;
}

контроллер перестал подавать признаки жизни, придется выкидывать или можно как-нибудь реанимировать?
Сделано все на макетке, работаю в keil 5.0, ulink2, контроллер atsamd20e14
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение Frogfot »

layabdu писал(а):Поигрался с таймерами и после того, как закоментировал строку вот так:
//GCLK->CLKCTRL.reg = (GCLK_CLKCTRL_ID(TC2_GCLK_ID) | GCLK_CLKCTRL_GEN(0) | GCLK_CLKCTRL_CLKEN);

Если не трогать клок, то контроллер по умолчанию запустится от внутреннего RC генератора на 8 МГц с предделителем на 8 - т.е. около 1 МГц.

Закоментируй всё, что касается клока, должен запустится.
Попозже попробую разобраться с кодом.
Хорошему коту и в декабре - март :)
layabdu
Родился
Сообщения: 7
Зарегистрирован: Вт июн 17, 2014 19:25:55

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение layabdu »

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

Сейчас мучаюсь с АЦП...
Аватара пользователя
Pavel_1978
Опытный кот
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение Pavel_1978 »

Сорри))
Последний раз редактировалось Pavel_1978 Сб июл 05, 2014 14:50:31, всего редактировалось 1 раз.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение HHIMERA »

ST-Link Utility для ATSAMD20???
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение dosikus »

Дык переклинило же . :)))
Перекосило скорее всего не с клоками, а программно отрублен JTAG. Лечится элементарно: камешек певодится в бут режим включается стирается отладчиком из ST-Link Utility.


Лечится проще - надо всего то подключить RESET .
Но не в этой теме. :)))
layabdu
Родился
Сообщения: 7
Зарегистрирован: Вт июн 17, 2014 19:25:55

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение layabdu »

dosikus писал(а):надо всего то подключить RESET .
ресет то был подключен изначально.. Скорее всего действительно JTAG отвалился, только в нашем случае это SWD
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение dosikus »

layabdu, да я собственно пишу для Pavel_1978 , а он веткой ошибся - смешал атмелы с STM32 ... :)))
layabdu
Родился
Сообщения: 7
Зарегистрирован: Вт июн 17, 2014 19:25:55

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение layabdu »

Ребята, вопрос по АЦП по порядку что я делаю и что не так:

Код: Выделить всё

   GCLK->CLKCTRL.reg = (GCLK_CLKCTRL_ID(ADC_GCLK_ID) | GCLK_CLKCTRL_GEN(0) | GCLK_CLKCTRL_CLKEN); //подключаю клок к ADC
   PORT->Group[0].PINCFG[2].bit.PMUXEN = 1;              // подключаю PORTA.2 к мультиплексору
   PORT->Group[0].PMUX[1].bit.PMUXE = 0x01;      // Peripheral function B selected (тут не понимаю, в группе B еще имеются Y[0] VOUT)
   ADC->CTRLB.bit.PRESCALER = 0x01; //DIV8 Peripheral clock divided by 8
   ADC->INPUTCTRL.bit.MUXPOS = 0;   //положительный вход на вход АЦП.0
   ADC->INPUTCTRL.bit.MUXNEG = 0x18;   //отрицательный на GND
   ADC->CTRLA.bit.ENABLE = 1;      //включаю АЦП
   ADC->SWTRIG.bit.START = 1;      //запускаю на измерение
   ...
   читаю ADC->RESULT.reg;      // а там постоянно разные значения: то 0xFF, то 0, то другие хаотичные значения
вот что делаю не так?
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение Frogfot »

layabdu писал(а):Ребята, вопрос по АЦП по порядку что я делаю и что не так:

Код: Выделить всё

   GCLK->CLKCTRL.reg = (GCLK_CLKCTRL_ID(ADC_GCLK_ID) | GCLK_CLKCTRL_GEN(0) | GCLK_CLKCTRL_CLKEN); //подключаю клок к ADC
вот что делаю не так?

Кажысь клок подключается в самую последнюю очередь - во всяком случае для таймеров и SERCOMа.

А где есть "E" - т.е. 32 пинки? Ато у меня демоборда сгорела на J18, проще 32 пинку на макетке распаять, у "J" и "G" шаг шибко мелкий.
Хорошему коту и в декабре - март :)
layabdu
Родился
Сообщения: 7
Зарегистрирован: Вт июн 17, 2014 19:25:55

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение layabdu »

Да, Е - это 32 пина,где есть не скажу, т.к. не я покупал.
а макетку брал здесь: http://www.quartz1.com/price/model.php?akt=6207.13
маленькая и удобная
706N0620713.jpg
(214.83 КБ) 542 скачивания
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение Frogfot »

layabdu писал(а):Ребята, вопрос по АЦП по порядку что я делаю и что не так

Ещё вроде нужно смотреть в STATUS флаг:

Bit 7 – SYNCBUSY: Synchronization Busy
This bit is cleared when the synchronization of registers between the clock domains is complete.
This bit is set when the synchronization of registers between clock domains is started.

Для SERCOM и таймеров обязательно, для АЦП в даташите не сказано.
Хорошему коту и в декабре - март :)
layabdu
Родился
Сообщения: 7
Зарегистрирован: Вт июн 17, 2014 19:25:55

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение layabdu »

Frogfot писал(а):Ещё вроде нужно смотреть в STATUS флаг:

Bit 7 – SYNCBUSY: Synchronization Busy

Это да, я пока что не анализирую флаги, просто выдерживаю явно большую паузу и смотрю результат.
Кстати, если запускаю без отладчика, т.е. измерение АЦП вывожу сразу на индикатор OLED, то работает, вроде как надо.
Видимо под отладчик читает регистры АЦП и это влияет как-то.
marus-ka
Родился
Сообщения: 5
Зарегистрирован: Ср мар 12, 2014 11:18:31

Re: Новый ARM Atmel Cortex-M0+ ATSAMD20

Сообщение marus-ka »

Народ, а кто-нибудь разбирался с внешним тактированием?
Хочу запустить камень от 7,37 МГц с gain 4. Но в asf в структуре, описывающей внешний кварец (struct system_clock_source_xosc_config ), нет почему-то поля для установки gain, только autogain enable/disable.
Искать где-то еще? Устанавливать значение ручками? Или вообще использовать DFLL? Он-то работает? (так и не поняла из всего обсуждения)



P.S. новая версия IAR for ARM (7.20) поддерживает explained. Можно играться. Хотя сами атмеловцы в переписке утверждали, что работает и с 7.10.
Ответить

Вернуться в «ARM»