Страница 1 из 2

Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Пт фев 05, 2016 21:00:33
ATrosh
Приобрел Atmel SAM D20 Xplained Pro. Как всегда есть сложности с какой стороны начать кушать столь аппетитный предмет. Поделитесь Вашим опытом уважаемые коты!

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Сб фев 06, 2016 21:46:44
ATrosh
Спасибо Яндексу-переводчику!

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Вс фев 07, 2016 04:14:08
Vov123
Всё-же, моё личное мнение, изучение Atmel SAM 32 надо было бы начать изучать с платы Arduino Due. И дополнительных модулей готовых к ней, и примеры их использования есть в достаточном количестве. Хоть и в одноимённой среде, но если вас от неё тошнит и мозгов не занимать, то AnmelStudio 6(7) к Вашим услугам.

http://ru.aliexpress.com/item/For-Ardui ... 1ed695ab3f

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Вс фев 07, 2016 20:29:05
ATrosh
Почему я сделал такой выбор.
1. Это для меня совершенно новое в отличие от 8 битных, хотя писать программы нравится на ассемблере.
2. ОС 8 винда старый программатор не видит, а на этой плате встроенный программатор с выходом на внешние устройства. Стреляю двух зайцев программатор и новая плата для изучения в одном флаконе.
3. Цена 2800 р.
Дело за малым вкурить кучу примеров на С+ и Студию 7 :kill:

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Вс фев 07, 2016 23:15:00
ATrosh
Первый раз попробовал запрограммировать стартовый пример для этой платы (Студия сгенерила). В принципе все просто. Все работает.

#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.

Добавлено: Вт фев 09, 2016 20:32:26
Den1ss
https://habrahabr.ru/company/rainbow/page2/

тут много инфы по этим камням

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Вт фев 09, 2016 22:15:45
ATrosh
:facepalm:

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Сб фев 20, 2016 22:01:58
ATrosh
Штатная функция задержки почему то не хочет работать, решил проблему так, просто для тренировки написания на Си

#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.

Добавлено: Сб фев 20, 2016 22:07:33
ATrosh
Яндекс меня снова порадовал. Стал искать какую нибудь инфу по SAM D20 J в поисковике и вот что получил :shock:

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Сб фев 20, 2016 22:25:30
pcb
Очень крут, эт да :tea:

Объясни, почему атмел, а не стм?

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Вс фев 21, 2016 11:35:15
ATrosh
pcb писал(а):Очень крут, эт да :tea:

Объясни, почему атмел, а не стм?
Объясню :roll:
В то время когда решил освоить контроллеры, в интернете больше попадались Pic и Atmel.
Атмел как то больше приглянулся. Много информации, асм и Студия проблемы в освоении не вызвала.
И как говорится на переправе котов изв. КОНЕЙ не меняют.
Про стм ничего плохого сказать не могу, не работал с ними.

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Пт мар 04, 2016 21:22:45
ATrosh
Курю даташит, перевожу описание контроллера. Когда переведу и как водится в начале книги скажу "Спасибо моей жене,что научилась засыпать одна. Спасибо мой собаке, зато что не лаяла, и кошкам которые орали и не давали заснуть. И конечно отдельное спасибо Яндексу-переводчику который сделал всю работу" :)

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Чт мар 10, 2016 15:03:50
alvangee
Прочитал тему, так и не понял в чём именно вопрос. Также не понял зачем переводить даташит, его надо просто брать и читать именно тот раздел, который нужен в данный момент.

Если говорить о том, с какой стороны подойти к отладке, то самый верный способ - создавать в Студии проект с примерами (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;
Здесь дефайны RS485_TXD и т.п. это просто номер пина у порта A.

Конечно, искать что-то по SAMD20 в Яндексе дохлый номер. Это лучше делать в Гугле, причем не в русскоязычном сегменте интернета. Ну и заглянуть на avrfreaks.

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Чт мар 10, 2016 15:25:17
marus-ka
ATrosh писал(а):Первый раз попробовал запрограммировать стартовый пример для этой платы (Студия сгенерила). В принципе все просто. Все работает.

при компиляции ошибку выдает (Ошибка неявная декларация функции '_delay_ms')
видимо у функции другое наименование, а где найти все описания функций?
Чтобы работала библиотечная функция delay, необходимо включить модуль delay routines в ASF Explorer. При этом в asf.h нужно включить delay.h (ну или отдельно). Еще нужно в main инициализировать задержки с помощью функции delay_init();
Примерно так:

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

int main(void)
{
	system_init();
	delay_init();
...
}
Сами функции задержки: delay_s(1); delay_ms(100); и delay_cycles(100);

Вообще очень удобно, если что-то не знаете, как делать, посмотреть пример. Обычно у атмела на все есть примеры)

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Чт мар 10, 2016 23:06:08
ATrosh
Большое спасbбо alvangee за комментарии! Буду вникать. Конечно весь даташит переводить сразу смысла не имеет. Перевел пока главу 27. TC – Timer/Counter, в нем как-то больше ясности. Тактирование конечно следующий шаг.
Ура delay заработала спасибо marus-ka за подсказку delay_init(); в код я не включал. Видимо сказывется отсутствие опыта в Си. Вообще вот эти первые шаги самые трудные, дальше обычно легче идет.

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Пт мар 11, 2016 08:57:33
Den1ss
2800 р это вы переплатили :). Почти год длилась акция на эти отладки - продавали их по 1000 р. Акция пару недель завершилась (на сайте пока не отметили этого), но и теперь они по $26 идут, что дешевле 2800.

А почему топик в AVR? SAMD20 это же ARM, пора заканчивать с монополией STM32 :)

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Пт мар 11, 2016 19:59:12
ATrosh
Может 2800 и дороговато, но хотел подарок себе на новый год. И дешевле найти не мог, а может не искал толком. Так видимо с этой акции мне и перепродали :? Так если доставку прибавить то и выходит.

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Чт апр 07, 2016 19:27:05
ATrosh
Всем доброго времени суток!
Закончился март, можно продолжить изучение МК :roll:
Хочу поделится с тем кто как я только знакомится с данной платой.
Тоесть самый первый шаг к изучению, то что я сам хотел найти, подергать МК за лапки.
Получилась такая пошаговая инструкция.
По нажатию кнопки SW0 на плате, включать и выключать светодиоды подключенные к выводам РА02 и РА03.
Используется 7-ая Атмел Студия.

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Чт апр 07, 2016 19:31:56
ATrosh
загружает рисунки
Изображение
Изображение
Изображение
Изображение
Изображение
Здесь выбираем только один вывод РА02 так нам необходимо только сформировать заготовку под свой код.
Изображение
Изображение

Re: Изучаем Atmel SAM D20 Xplained Pro.

Добавлено: Чт апр 07, 2016 20:50:20
ATrosh
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
если вкралась ошибка