Изучаем Atmel SAM D20 Xplained Pro.
Изучаем Atmel SAM D20 Xplained Pro.
Приобрел Atmel SAM D20 Xplained Pro. Как всегда есть сложности с какой стороны начать кушать столь аппетитный предмет. Поделитесь Вашим опытом уважаемые коты!
- Вложения
-
- Atmel SAM D20 Xplained Pro.jpg
- (65.28 КБ) 1022 скачивания
- Реклама
Re: Изучаем Atmel SAM D20 Xplained Pro.
Спасибо Яндексу-переводчику!
- Вложения
-
- Atmel-SAMD20-Xplained-Pro перевод на русский.doc
- (478 КБ) 801 скачивание
Re: Изучаем Atmel SAM D20 Xplained Pro.
Всё-же, моё личное мнение, изучение Atmel SAM 32 надо было бы начать изучать с платы Arduino Due. И дополнительных модулей готовых к ней, и примеры их использования есть в достаточном количестве. Хоть и в одноимённой среде, но если вас от неё тошнит и мозгов не занимать, то AnmelStudio 6(7) к Вашим услугам.
http://ru.aliexpress.com/item/For-Ardui ... 1ed695ab3f
http://ru.aliexpress.com/item/For-Ardui ... 1ed695ab3f
Re: Изучаем Atmel SAM D20 Xplained Pro.
Почему я сделал такой выбор.
1. Это для меня совершенно новое в отличие от 8 битных, хотя писать программы нравится на ассемблере.
2. ОС 8 винда старый программатор не видит, а на этой плате встроенный программатор с выходом на внешние устройства. Стреляю двух зайцев программатор и новая плата для изучения в одном флаконе.
3. Цена 2800 р.
Дело за малым вкурить кучу примеров на С+ и Студию 7
1. Это для меня совершенно новое в отличие от 8 битных, хотя писать программы нравится на ассемблере.
2. ОС 8 винда старый программатор не видит, а на этой плате встроенный программатор с выходом на внешние устройства. Стреляю двух зайцев программатор и новая плата для изучения в одном флаконе.
3. Цена 2800 р.
Дело за малым вкурить кучу примеров на С+ и Студию 7
Re: Изучаем Atmel SAM D20 Xplained Pro.
Первый раз попробовал запрограммировать стартовый пример для этой платы (Студия сгенерила). В принципе все просто. Все работает.
#include <asf.h>
int main (void)
{
system_init();
/* Insert application code here, after the board has been initialized. */
/* This skeleton code simply sets the LED to the state of the button. */
while (1) {
/* Is button pressed? */
if (port_pin_get_input_level(BUTTON_0_PIN) == BUTTON_0_ACTIVE) {
/* Yes, so turn LED on. */
port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
} else {
/* No, so turn LED off. */
port_pin_set_output_level(LED_0_PIN, !LED_0_ACTIVE);
}
}
}
Далее попробовал задержку вставить
#include <asf.h>
int main (void)
{
system_init();
/* Insert application code here, after the board has been initialized. */
/* This skeleton code simply sets the LED to the state of the button. */
while (1) {
/* Is button pressed? */
if (port_pin_get_input_level(BUTTON_0_PIN) == BUTTON_0_ACTIVE) {
/* Yes, so turn LED on. */
_delay_ms(250); // ожидание 250 мс
port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
} else {
/* No, so turn LED off. */
port_pin_set_output_level(LED_0_PIN, !LED_0_ACTIVE);
}
}
}
при компиляции ошибку выдает (Ошибка неявная декларация функции '_delay_ms')
видимо у функции другое наименование, а где найти все описания функций?
#include <asf.h>
int main (void)
{
system_init();
/* Insert application code here, after the board has been initialized. */
/* This skeleton code simply sets the LED to the state of the button. */
while (1) {
/* Is button pressed? */
if (port_pin_get_input_level(BUTTON_0_PIN) == BUTTON_0_ACTIVE) {
/* Yes, so turn LED on. */
port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
} else {
/* No, so turn LED off. */
port_pin_set_output_level(LED_0_PIN, !LED_0_ACTIVE);
}
}
}
Далее попробовал задержку вставить
#include <asf.h>
int main (void)
{
system_init();
/* Insert application code here, after the board has been initialized. */
/* This skeleton code simply sets the LED to the state of the button. */
while (1) {
/* Is button pressed? */
if (port_pin_get_input_level(BUTTON_0_PIN) == BUTTON_0_ACTIVE) {
/* Yes, so turn LED on. */
_delay_ms(250); // ожидание 250 мс
port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
} else {
/* No, so turn LED off. */
port_pin_set_output_level(LED_0_PIN, !LED_0_ACTIVE);
}
}
}
при компиляции ошибку выдает (Ошибка неявная декларация функции '_delay_ms')
видимо у функции другое наименование, а где найти все описания функций?
- Реклама
Re: Изучаем Atmel SAM D20 Xplained Pro.
Штатная функция задержки почему то не хочет работать, решил проблему так, просто для тренировки написания на Си
#include <delay.h>
#include <asf.h>
long X=1;
long S=50000;
int main (void)
{
system_init();
port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
while (1)
{
if (port_pin_get_input_level(BUTTON_0_PIN) == BUTTON_0_ACTIVE) /* при нажатие кнопки частота моргания увеличивается*/
{
X=X+1;
if (X==S) port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
if (X==S*2) port_pin_set_output_level(LED_0_PIN, !LED_0_ACTIVE);
if (X>S*2) X=0 ;
}
else
{
X=X+1;
if (X==S) port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
if (X==S*5) port_pin_set_output_level(LED_0_PIN, !LED_0_ACTIVE);
if (X>S*5) X=0 ;
}
}
}
#include <delay.h>
#include <asf.h>
long X=1;
long S=50000;
int main (void)
{
system_init();
port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
while (1)
{
if (port_pin_get_input_level(BUTTON_0_PIN) == BUTTON_0_ACTIVE) /* при нажатие кнопки частота моргания увеличивается*/
{
X=X+1;
if (X==S) port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
if (X==S*2) port_pin_set_output_level(LED_0_PIN, !LED_0_ACTIVE);
if (X>S*2) X=0 ;
}
else
{
X=X+1;
if (X==S) port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
if (X==S*5) port_pin_set_output_level(LED_0_PIN, !LED_0_ACTIVE);
if (X>S*5) X=0 ;
}
}
}
Re: Изучаем Atmel SAM D20 Xplained Pro.
Яндекс меня снова порадовал. Стал искать какую нибудь инфу по SAM D20 J в поисковике и вот что получил 
- Вложения
-
- Поисковик.jpg
- Правда я крут!!!
- (121.76 КБ) 765 скачиваний
-
pcb
- Опытный кот
- Сообщения: 833
- Зарегистрирован: Пт авг 12, 2011 09:14:27
- Откуда: Млечный путь/Земля/РФ/Екатеринбург
Re: Изучаем Atmel SAM D20 Xplained Pro.
Очень крут, эт да
Объясни, почему атмел, а не стм?
Объясни, почему атмел, а не стм?
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Re: Изучаем Atmel SAM D20 Xplained Pro.
Объяснюpcb писал(а):Очень крут, эт да![]()
Объясни, почему атмел, а не стм?
В то время когда решил освоить контроллеры, в интернете больше попадались Pic и Atmel.
Атмел как то больше приглянулся. Много информации, асм и Студия проблемы в освоении не вызвала.
И как говорится на переправе котов изв. КОНЕЙ не меняют.
Про стм ничего плохого сказать не могу, не работал с ними.
Re: Изучаем Atmel SAM D20 Xplained Pro.
Курю даташит, перевожу описание контроллера. Когда переведу и как водится в начале книги скажу "Спасибо моей жене,что научилась засыпать одна. Спасибо мой собаке, зато что не лаяла, и кошкам которые орали и не давали заснуть. И конечно отдельное спасибо Яндексу-переводчику который сделал всю работу" 
Re: Изучаем Atmel SAM D20 Xplained Pro.
Прочитал тему, так и не понял в чём именно вопрос. Также не понял зачем переводить даташит, его надо просто брать и читать именно тот раздел, который нужен в данный момент.
Если говорить о том, с какой стороны подойти к отладке, то самый верный способ - создавать в Студии проект с примерами (Create Example Project) на коткретную периферию или системный драйвер, качать с сайта Атмела Application Note, касающийся данной периферии/драйвера и изучать как они работают с этой периферией.
Неприятный лично мне момент в том, что все их примеры основаны на ASF, поэтому большая часть изучения SAMD20/21 это изучение самой ASF.
Мне пока удавалось обойтись без ASF, писать всё руками через регистры и манипуляции с ними. Этот путь требует для начала вникнуть в систему тактирования, которая достаточно сложна по сравнению с простыми АВРками. В принципе, при использовании ASF в тактирование тоже надо вникать, но в этом случае все клоки задействуются и частоты назначаются в отдельном файле conf_clocks.h. Если же делать всё руками, надо включать и настраивать каждый генератор через регистры.
Что касается периферии, если настраивать её ручками, надо внимательно читать в даташите Dependencies и Basic Operation. Там расписано какие модули необходимо задействовать, чтобы периферия работала, как настроить тактирование и в каком порядке её запускать.
У очень многих регистров есть пометка Read- или Write-Synchronized. Это значит, что любая соответствующая операция (чтение или запись) с регистром требует после нее проверки флага синхронизации между общим задающим генератором и генератором этой периферии. Подробнее написано в разделе Synchronization даташита. Если пользоваться ASF, все заботы по синхронизации она берет на себя. Если манипулировать регистрами, важно не забывать добавлять строчку вида после каждой манипуляции с асинхронным регистром.
Отдельная радость - настройка пинов и мультиплексора для периферии, в это пришлось вникать долго, хотя однажды разобравшись, кажется пустяком.
Например, чтобы настроить Rx, Tx и RTS для 485-го:
Здесь дефайны RS485_TXD и т.п. это просто номер пина у порта A.
Конечно, искать что-то по SAMD20 в Яндексе дохлый номер. Это лучше делать в Гугле, причем не в русскоязычном сегменте интернета. Ну и заглянуть на avrfreaks.
Если говорить о том, с какой стороны подойти к отладке, то самый верный способ - создавать в Студии проект с примерами (Create Example Project) на коткретную периферию или системный драйвер, качать с сайта Атмела Application Note, касающийся данной периферии/драйвера и изучать как они работают с этой периферией.
Неприятный лично мне момент в том, что все их примеры основаны на ASF, поэтому большая часть изучения SAMD20/21 это изучение самой ASF.
Мне пока удавалось обойтись без ASF, писать всё руками через регистры и манипуляции с ними. Этот путь требует для начала вникнуть в систему тактирования, которая достаточно сложна по сравнению с простыми АВРками. В принципе, при использовании ASF в тактирование тоже надо вникать, но в этом случае все клоки задействуются и частоты назначаются в отдельном файле conf_clocks.h. Если же делать всё руками, надо включать и настраивать каждый генератор через регистры.
Что касается периферии, если настраивать её ручками, надо внимательно читать в даташите Dependencies и Basic Operation. Там расписано какие модули необходимо задействовать, чтобы периферия работала, как настроить тактирование и в каком порядке её запускать.
У очень многих регистров есть пометка Read- или Write-Synchronized. Это значит, что любая соответствующая операция (чтение или запись) с регистром требует после нее проверки флага синхронизации между общим задающим генератором и генератором этой периферии. Подробнее написано в разделе Synchronization даташита. Если пользоваться ASF, все заботы по синхронизации она берет на себя. Если манипулировать регистрами, важно не забывать добавлять строчку вида
Код: Выделить всё
while(SERCOM2->USART.STATUS.reg & SERCOM_USART_STATUS_SYNCBUSY); //wait for syncОтдельная радость - настройка пинов и мультиплексора для периферии, в это пришлось вникать долго, хотя однажды разобравшись, кажется пустяком.
Например, чтобы настроить Rx, Tx и RTS для 485-го:
Код: Выделить всё
/* RS-485 pins*/
PORT->Group[0].DIRSET.reg = (1 << RS485_TXD); //RS485_TXD(output) = 1
PORT->Group[0].OUTSET.reg = (1 << RS485_TXD);
PORT->Group[0].DIRCLR.reg = (1 << RS485_RXD); //RS485_RXD(input) = 1
PORT->Group[0].OUTSET.reg = (1 << RS485_RXD);
PORT->Group[0].DIRSET.reg = (1 << RS485_RTS); //RS485_RTS(output) = 0 //receive
PORT->Group[0].OUTCLR.reg = (1 << RS485_RTS);
/* SERCOM2 pins PMUX enable */
PORT->Group[0].PINCFG[RS485_TXD].reg = PORT_PINCFG_PMUXEN;
PORT->Group[0].PINCFG[RS485_RXD].reg = PORT_PINCFG_PMUXEN | PORT_PINCFG_INEN;
PORT->Group[0].PMUX[RS485_TXD/2].reg = PORT_PMUX_PMUXE_D | PORT_PMUX_PMUXO_D;
Конечно, искать что-то по SAMD20 в Яндексе дохлый номер. Это лучше делать в Гугле, причем не в русскоязычном сегменте интернета. Ну и заглянуть на avrfreaks.
Re: Изучаем Atmel SAM D20 Xplained Pro.
Чтобы работала библиотечная функция delay, необходимо включить модуль delay routines в ASF Explorer. При этом в asf.h нужно включить delay.h (ну или отдельно). Еще нужно в main инициализировать задержки с помощью функции delay_init();ATrosh писал(а):Первый раз попробовал запрограммировать стартовый пример для этой платы (Студия сгенерила). В принципе все просто. Все работает.
при компиляции ошибку выдает (Ошибка неявная декларация функции '_delay_ms')
видимо у функции другое наименование, а где найти все описания функций?
Примерно так:
Код: Выделить всё
int main(void)
{
system_init();
delay_init();
...
}
Вообще очень удобно, если что-то не знаете, как делать, посмотреть пример. Обычно у атмела на все есть примеры)
Re: Изучаем Atmel SAM D20 Xplained Pro.
Большое спасbбо alvangee за комментарии! Буду вникать. Конечно весь даташит переводить сразу смысла не имеет. Перевел пока главу 27. TC – Timer/Counter, в нем как-то больше ясности. Тактирование конечно следующий шаг.
Ура delay заработала спасибо marus-ka за подсказку delay_init(); в код я не включал. Видимо сказывется отсутствие опыта в Си. Вообще вот эти первые шаги самые трудные, дальше обычно легче идет.
Ура delay заработала спасибо marus-ka за подсказку delay_init(); в код я не включал. Видимо сказывется отсутствие опыта в Си. Вообще вот эти первые шаги самые трудные, дальше обычно легче идет.
Re: Изучаем Atmel SAM D20 Xplained Pro.
2800 р это вы переплатили
. Почти год длилась акция на эти отладки - продавали их по 1000 р. Акция пару недель завершилась (на сайте пока не отметили этого), но и теперь они по $26 идут, что дешевле 2800.
А почему топик в AVR? SAMD20 это же ARM, пора заканчивать с монополией STM32
А почему топик в AVR? SAMD20 это же ARM, пора заканчивать с монополией STM32
Re: Изучаем Atmel SAM D20 Xplained Pro.
Может 2800 и дороговато, но хотел подарок себе на новый год. И дешевле найти не мог, а может не искал толком. Так видимо с этой акции мне и перепродали
Так если доставку прибавить то и выходит.
Re: Изучаем Atmel SAM D20 Xplained Pro.
Всем доброго времени суток!
Закончился март, можно продолжить изучение МК
Хочу поделится с тем кто как я только знакомится с данной платой.
Тоесть самый первый шаг к изучению, то что я сам хотел найти, подергать МК за лапки.
Получилась такая пошаговая инструкция.
По нажатию кнопки SW0 на плате, включать и выключать светодиоды подключенные к выводам РА02 и РА03.
Используется 7-ая Атмел Студия.
Закончился март, можно продолжить изучение МК
Хочу поделится с тем кто как я только знакомится с данной платой.
Тоесть самый первый шаг к изучению, то что я сам хотел найти, подергать МК за лапки.
Получилась такая пошаговая инструкция.
По нажатию кнопки SW0 на плате, включать и выключать светодиоды подключенные к выводам РА02 и РА03.
Используется 7-ая Атмел Студия.
- Вложения
-
- 1.png
- (173.62 КБ) 407 скачиваний
Последний раз редактировалось ATrosh Чт апр 07, 2016 21:02:20, всего редактировалось 2 раза.
Re: Изучаем Atmel SAM D20 Xplained Pro.
загружает рисунки





Здесь выбираем только один вывод РА02 так нам необходимо только сформировать заготовку под свой код.


Здесь выбираем только один вывод РА02 так нам необходимо только сформировать заготовку под свой код.
Последний раз редактировалось ATrosh Чт апр 07, 2016 21:08:40, всего редактировалось 2 раза.
Re: Изучаем Atmel SAM D20 Xplained Pro.
Последний раз редактировалось ATrosh Чт апр 07, 2016 21:22:00, всего редактировалось 3 раза.


