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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
MIB
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт окт 16, 2012 21:27:35

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

Сообщение MIB »

До завтра, парни.
Do You Like Water?.. Yes?.. Good, Then You Already Like 72% Of Me :-)
Аватара пользователя
Leopoldius
Родился
Сообщения: 10
Зарегистрирован: Пн дек 09, 2013 01:13:56
Откуда: Украина, Полтава

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

Сообщение Leopoldius »

dosikus писал(а):Благодарствую . Жаль вердикт только завтра увижу , спать . :)))

Зы лучше лапкой помахать и на осцилл или лог. анализатор...


Доброй ночи. Увы, нет у меня еще осцила, впрочем как и лог аналазитора дома:(

Обновлено[23:36 09/12/13]
Прогнал я код. Единственное что надо добавить:

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

...
   NVIC_EnableIRQ(SysTick_IRQn);
   __enable_irq;
...


Из нюансов - тактируется он от стандартного RC по умолчанию, в кайле нереализован запуск. Так и написано. Надо выкачивать ASF и оттуда юзать заголовки и файлики похоже. :twisted:
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Leopoldius писал(а):Прогнал я код. Единственное что надо добавить:

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

...
   NVIC_EnableIRQ(SysTick_IRQn);
   __enable_irq;
...




Не знаю зачем это нужно , может у Вас Keil не той системы . :)))
Systick инитится в CMSIS и все что нужно уже есть .
Вчитайтесь внимательно в код .

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

 */
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */

  SysTick->LOAD  = ticks - 1;                                  /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */
  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
  return (0);                                                  /* Function successful */
}

#endif




Хэдеры и исходники есть в Keil в соотвествующих папках.
Аватара пользователя
Leopoldius
Родился
Сообщения: 10
Зарегистрирован: Пн дек 09, 2013 01:13:56
Откуда: Украина, Полтава

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

Сообщение Leopoldius »

dosikus писал(а):Хэдеры и исходники есть в Keil в соотвествующих папках.


Keil у меня 4.73

файл system_samd20.c я бы не сказал что сильно полный. Прикладываю его для ознакомления :)ъ

UPD: странно - прицепилось два.

Возможно и недосмотрел, ибо время було позднеею. Сегодня на работе внятнее посмотрю.
Вложения
system_samd20.c
(2.64 КБ) 336 скачиваний
system_samd20.c
(2.64 КБ) 422 скачивания
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Leopoldius писал(а):Keil у меня 4.73

файл system_samd20.c я бы не сказал что сильно полный. Прикладываю его для ознакомления :)ъ


У меня 5 .
Сей файл и у меня такой же , только при чем здесь он ?
Инит SySTick( снова как попугай долблю) находится в CMSIS .
В KEil есть поиск определений и объявлений -пользуй контекстное меню ...
Аватара пользователя
Leopoldius
Родился
Сообщения: 10
Зарегистрирован: Пн дек 09, 2013 01:13:56
Откуда: Украина, Полтава

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

Сообщение Leopoldius »

Я ж и говорю про функцию SystemInit, в которой по идее должно настраиватся тактирование и т.д. Да, с с систиком я разобрался уже. Во всем виноват Морфей :kill:

В ней ничего не реализовано. Вот про что я
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Leopoldius писал(а):В ней ничего не реализовано. Вот про что я


Согласен , но тыркаться в симуляторе - как то не спортивно.
А так - смотреть реализацию в ASF и стряпать свою по образу и подобию...
Аватара пользователя
AVKrobotics
Родился
Сообщения: 18
Зарегистрирован: Пн дек 09, 2013 13:27:21

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

Сообщение AVKrobotics »

Спасибо за программу, сделал как написано все работает, вот видео http://www.youtube.com/watch?v=BA1OROtf ... e=youtu.be
http://youtu.be/BA1OROtfhOA

Очень даже мяу! :music:
Аватара пользователя
MIB
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт окт 16, 2012 21:27:35

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

Сообщение MIB »

Поздравляю! :beer:

Предлагаю присоединиться "курить" ДШ и платку. Гуртом і батька бити легше ;)
Do You Like Water?.. Yes?.. Good, Then You Already Like 72% Of Me :-)
Аватара пользователя
AVKrobotics
Родился
Сообщения: 18
Зарегистрирован: Пн дек 09, 2013 13:27:21

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

Сообщение AVKrobotics »

У меня намечается проект. Ходячий робот на 4 ногах. Планирую 6 сервоприводов. Хотел на Arduino MEGA2560 но плата тяжелая по весу. Эта плата вполне подходит. Вот только надо сформировать 6 независимых сигналов период 20 mS импульс 1.0 1.5 2.0 mS. Думаю попробовать на этой плате. Поможете в начинаниях?

Буду очень мяу, и даже не бесплатно :write:
Вложения
Чертеж11.jpg
Расположение серводвигателей
(7.68 КБ) 666 скачиваний
Чертеж2.jpg
Внешний вид
(15.83 КБ) 709 скачиваний
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

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

Сообщение Frogfot »

Народ здарова!

Кто-то уже вкурил как заюзать PLL, т.е. DFLL48L?

2 AVKrobotics: я тока начал вкуривать чип, разбираюсь с клоками. В принципе мощи хватит ногами и софтверно подрыгать. Какие там необходимы диаграммы выходов управления сервами?
Хорошему коту и в декабре - март :)
Аватара пользователя
AVKrobotics
Родился
Сообщения: 18
Зарегистрирован: Пн дек 09, 2013 13:27:21

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

Сообщение AVKrobotics »

Проект уже начали на плате Arduino Spider контроллер http://arduino-ua.com/prod516-Spider_kontroller_48_serv, программа для проекта написана к ATmega 1280: http://letsmakerobots.com/node/25923, я пробую перенести эту программу на нашу плату. Привожу пример Листинг1. Честно говоря не могу понять как сервы коммутируются. Если за 20 мС на серв не будет подан импульс, то серв перейдет в положение 90 грд что соответствует импульсу в 1,5 мС.


Всем мяу :solder:
Вложения
Листинг1.txt
Листинг включения 48 сервов
(2.58 КБ) 329 скачиваний
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

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

Сообщение Frogfot »

2 AVKrobotics: отличие SAMD20 от ATmega1280 - что ARM ноги допускают напряжение не выше 3,3-3,6В, а AVR8 - 5В, и имеют бОльшую нагрузочную способность - 20 мА тянут спокойно. По схеме сервопривриводов - http://arduino-ua.com/index.php?productID=216 - вроде обмотки подключены прямо к портам контроллера, вроде 20 мА на землю порты ARM тянут, серва нужна на 3 В.
Хорошему коту и в декабре - март :)
Аватара пользователя
AVKrobotics
Родился
Сообщения: 18
Зарегистрирован: Пн дек 09, 2013 13:27:21

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

Сообщение AVKrobotics »

Я буду ставить ULN2003 или полевики. Напрямую лучше сервами не управлять. Тем более сервы потребляют большие токи, их питание будет от преобразователя. Примерно конструкция будет такая http://www.youtube.com/watch?v=pNPbMrIyFA0
Основной вопрос это независимость управления каждым сервом. На видео видно что управление цепочечное. Ресурса Mega 1280 мало он успевает только давать команды сервам, при этом он не думает что делает,
а на нашей плате очень хороший МК. Опыт управления есть, но программы в асме. http://www.youtube.com/watch?v=kGfjNqDFSaE

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

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

Сообщение Frogfot »

AVKrobotics писал(а):Я буду ставить ULN2003 или полевики. Напрямую лучше сервами не управлять.

Ну совсем другое дело.

AVKrobotics писал(а):Ресурса Mega 1280 мало он успевает только давать команды сервам, при этом он не думает что делает... Опыт управления есть, но программы в асме.

На асме по прерываниям таймера ресурсов Mega 1280 должно хватить, если не использовать софтверные задержки по 25 мкС.

AVKrobotics писал(а):на нашей плате очень хороший МК.

Чип то хороший, остались только мелочи - разобраться с ним :(
Хорошему коту и в декабре - март :)
Аватара пользователя
MIB
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт окт 16, 2012 21:27:35

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

Сообщение MIB »

Я злой :( Не работает GCG-1 от XOSC32K хоть ты укакайся. Сделано всё step-by-step по ДШ. Написал на Atmel HotLine. Бум ждать ответа. :kill:

AVKrobotics писал(а):Я буду ставить ULN2003 или полевики. Напрямую лучше сервами не управлять. Тем более сервы потребляют большие токи, их питание будет от преобразователя...


Половички получше будут. Падение на переходах меньше, управлять проще. Главное не прохлопать тот момент при каком напряжении на затворе транзистор гарантированно открывается. У нас же уровень с IO МК всего 3,3 В.

Frogfot писал(а):Кто-то уже вкурил как заюзать PLL, т.е. DFLL48L?


Судя по Errata у DFLL48M серьёзные траблы в формате не там где нужно расположенных битовых групп, и неньшему числу этих самых бит. Как DFLL будет работать я так и не понял, там где множитель у DFLL48M всего 8 бит. Ну clock референс для DFLL48M всего 32 кГц. Теперь если перемножим 32768 кГц на 256 (2^8) то получаем печальные 8`388`608 =~ 8 MHz. Я делаю вывод что DFLL48M работать не будет. опровергните если я не прав, уважаемое сообщество.
Последний раз редактировалось MIB Чт дек 12, 2013 17:59:42, всего редактировалось 1 раз.
Do You Like Water?.. Yes?.. Good, Then You Already Like 72% Of Me :-)
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

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

Сообщение Frogfot »

MIB писал(а):Я злой :( Не работает GCG-1 от XOSC32K

А кварц запускается - осцилом пасмареть?
По идее чтобы его запустить - нужно поднять в "1" биты:
Bit 2 – XTALEN: Crystal Oscillator Enable
Bit 1 – ENABLE: Oscillator Enable
Последний раз редактировалось Frogfot Чт дек 12, 2013 18:18:05, всего редактировалось 2 раза.
Хорошему коту и в декабре - март :)
Аватара пользователя
MIB
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт окт 16, 2012 21:27:35

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

Сообщение MIB »

Дык, писал же-ж вроде - подобие синуса чётко видно, даже while() выполняющий ожидание запуска генератора подвешивается на секунды, потом отпускает когда флаг готовности возводится. Всё гут. Frogfot, глянь по ДШ, там с инициализацией генератора всё просто до предела, ребёнок должен асилить. По errata Automatic Amplitude Control не фурыкает. Да и хрен с ним, написано - просто не использовать. Время запуска генератора установил по максимуму - 4 секунды. За это время любой генератор должен выйти на рабочий режим. Кароче, здаётся мне что с DFLL пока можно не париться, ждать когда почистят этот баг. Просто вешать ВЧ кварц на, скажем, 24 МГц и радоваться камушку без DFLL. 24 МГц на 32-х битах математики должно хватить всем что-бы потренироваться.

Пока буду ждать ответ от ATMEL по XOSC32K, если решат, можно будет спросить за DFLL48M как с её траблами быть.
Do You Like Water?.. Yes?.. Good, Then You Already Like 72% Of Me :-)
Аватара пользователя
MIB
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт окт 16, 2012 21:27:35

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

Сообщение MIB »

Frogfot писал(а):По идее чтобы его запустить - нужно поднять в "1" биты:
Bit 2 – XTALEN: Crystal Oscillator Enable
Bit 1 – ENABLE: Oscillator Enable


Пожалуй распишу, что бы народу было понятно. Текущий даташитег - http://www.atmel.com/Images/Atmel-42129 ... asheet.pdf номер и ревизия документа 42129I–SAM–12/2013 Страница 133, пункт 16.6.3 - 32kHz External Crystal Oscillator (XOSC32K) Operation.

Краткий вольный перевод:

XOSC32K работает в 2-х режимах: 1) Как приёмник внешнего такта подаваемого на пин XIN32 2) Как генератор с внешним кварцем на 32.768kHz между выводами XIN32 и XOUT32. XOSC32K может работать как источник такта для generic clock generators (генераторов общего назначения), как описано в разделе “GCLK – Generic Clock Controller” на странице 79.

После подачи питания XOSC32K вырублен, и выводы XIN32/XOUT32 могут быть использованы как обычные I/O
(GPIO) линии или выводы других перифирических функций. Когда XOSC32K активный, функция линий GPIO определяется режимом работы XOSC32K. Когда XOSC32K работает в генераторном режиме, функция XIN32 и XOUT32 определяется модулем SYSCTRL, и функция GPIO определяется для обоих пинов (как генератора). Когда XOSC32K работает как приёмник внешнего такта XIN32 работает как вход. Вывод XOUT32 как и прежде работает как обычная линия GPIO.

Модуль XOSC32K может быть активирован как приёмник внешнего такта, или как генератор битовой записью (XOSC32K.ENABLE) в 32kHz
External Crystal Oscillator управляющем регистре. Для активации XOSC32K как кварцевого генератора, лог. 1 должна быть записана в XTAL Enable бит (XOSC32K.XTALEN). Если XOSC32K.XTALEN в состоянии лог. 0 XOSC32K будет работать как приёмник внешнего такта.

Генаратор может быть вырублен записью лог. 0 в XOSC32K.ENABLE в регистре управления 32kHz External Crystal Oscillator при этом сохраняя остальные биты неизменными.
Запись остальных бит настройки одновременно с XOSC32K.ENABLE могут привести к непредсказуемому результату! Генератор остаётся в рабочем состоянии во всех режимах сна, если он был включен заблаговременно. Время запуска генератора 32kHz выбирается записью в Oscillator Start-Up Time группу битов (XOSC32K.STARTUP) в регистре управления 32kHz External Crystal Oscillator. Модуль SYSCTRL маскирует выход генератора XOSC32K на протяжении цикла запуска, что бы нестабильный такт не повалил на цифровую логику. Бит PCLKSR.XOSC32KRDY активизируется как только генератор заведётся плюс пользовательская настройка указанная в user-selected startup time группе бит. Также может быть сгенерено прерывание по переходу с нулевого состояния в единичное бита PCLKSR.XOSC32KRDY конечно же если было разрешение на прерывание задаваемое в регистре INTENSET.XOSC32KRDY.

Как генератор работающий с внешним кварцем XOSC32K требует очень длинный временной промежуток для гарантированного запуска генератора, вплоть до секунд. Генератор 32kHzможет сохранять свою работоспособность несмотря на сигнал внешнего сброса за исключением сигнала сброса возникающего при подаче питания (POR). Генератор XOSC32K может выдать 2 внешних тактовых сигнала если были установлены биты XOSC32K.EN1K и/или XOSC32K.EN32K.

Премного благодарен если вы зацените мой перевод и вникните в него. С уважением.
Do You Like Water?.. Yes?.. Good, Then You Already Like 72% Of Me :-)
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

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

Сообщение Frogfot »

MIB писал(а):Текущий даташитег - http://www.atmel.com/Images/Atmel-42129 ... asheet.pdf номер и ревизия документа 42129I–SAM–12/2013

Ура! Поздравляем компанию Atmel с Removed “Preliminary”
Хорошему коту и в декабре - март :)
Ответить

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