- Вложения
-
- Atmel SAM D20 Xplained Pro.jpg
- (65.28 КБ) 1028 скачиваний
Изучаем Atmel SAM D20 Xplained Pro.
- Сообщения: 64
- Зарегистрирован: Пт ноя 18, 2011 18:43:01
Приобрел Atmel SAM D20 Xplained Pro. Как всегда есть сложности с какой стороны начать кушать столь аппетитный предмет. Поделитесь Вашим опытом уважаемые коты!
- Реклама
- Сообщения: 64
- Зарегистрирован: Пт ноя 18, 2011 18:43:01
Спасибо Яндексу-переводчику!
- Вложения
-
- Atmel-SAMD20-Xplained-Pro перевод на русский.doc
- (478 КБ) 808 скачиваний
- Сообщения: 804
- Зарегистрирован: Чт мар 12, 2009 16:31:05
Всё-же, моё личное мнение, изучение Atmel SAM 32 надо было бы начать изучать с платы Arduino Due. И дополнительных модулей готовых к ней, и примеры их использования есть в достаточном количестве. Хоть и в одноимённой среде, но если вас от неё тошнит и мозгов не занимать, то AnmelStudio 6(7) к Вашим услугам.
http://ru.aliexpress.com/item/For-Ardui ... 1ed695ab3f
http://ru.aliexpress.com/item/For-Ardui ... 1ed695ab3f
- Сообщения: 64
- Зарегистрирован: Пт ноя 18, 2011 18:43:01
Почему я сделал такой выбор.
1. Это для меня совершенно новое в отличие от 8 битных, хотя писать программы нравится на ассемблере.
2. ОС 8 винда старый программатор не видит, а на этой плате встроенный программатор с выходом на внешние устройства. Стреляю двух зайцев программатор и новая плата для изучения в одном флаконе.
3. Цена 2800 р.
Дело за малым вкурить кучу примеров на С+ и Студию 7
1. Это для меня совершенно новое в отличие от 8 битных, хотя писать программы нравится на ассемблере.
2. ОС 8 винда старый программатор не видит, а на этой плате встроенный программатор с выходом на внешние устройства. Стреляю двух зайцев программатор и новая плата для изучения в одном флаконе.
3. Цена 2800 р.
Дело за малым вкурить кучу примеров на С+ и Студию 7
- Сообщения: 64
- Зарегистрирован: Пт ноя 18, 2011 18:43:01
Первый раз попробовал запрограммировать стартовый пример для этой платы (Студия сгенерила). В принципе все просто. Все работает.
#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')
видимо у функции другое наименование, а где найти все описания функций?
- Реклама
- Сообщения: 2
- Зарегистрирован: Чт дек 17, 2015 17:50:25
- Сообщения: 64
- Зарегистрирован: Пт ноя 18, 2011 18:43:01
- Сообщения: 64
- Зарегистрирован: Пт ноя 18, 2011 18:43:01
Штатная функция задержки почему то не хочет работать, решил проблему так, просто для тренировки написания на Си
#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 ;
}
}
}
- Сообщения: 64
- Зарегистрирован: Пт ноя 18, 2011 18:43:01
Яндекс меня снова порадовал. Стал искать какую нибудь инфу по SAM D20 J в поисковике и вот что получил 
- Вложения
-
- Поисковик.jpg
- Правда я крут!!!
- (121.76 КБ) 772 скачивания
Очень крут, эт да
Объясни, почему атмел, а не стм?
Объясни, почему атмел, а не стм?
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
- Сообщения: 64
- Зарегистрирован: Пт ноя 18, 2011 18:43:01
Объяснюpcb писал(а):Очень крут, эт да![]()
Объясни, почему атмел, а не стм?
В то время когда решил освоить контроллеры, в интернете больше попадались Pic и Atmel.
Атмел как то больше приглянулся. Много информации, асм и Студия проблемы в освоении не вызвала.
И как говорится на переправе котов изв. КОНЕЙ не меняют.
Про стм ничего плохого сказать не могу, не работал с ними.
- Сообщения: 64
- Зарегистрирован: Пт ноя 18, 2011 18:43:01
Курю даташит, перевожу описание контроллера. Когда переведу и как водится в начале книги скажу "Спасибо моей жене,что научилась засыпать одна. Спасибо мой собаке, зато что не лаяла, и кошкам которые орали и не давали заснуть. И конечно отдельное спасибо Яндексу-переводчику который сделал всю работу" 
- Сообщения: 1
- Зарегистрирован: Чт мар 10, 2016 14:34:33
Прочитал тему, так и не понял в чём именно вопрос. Также не понял зачем переводить даташит, его надо просто брать и читать именно тот раздел, который нужен в данный момент.
Если говорить о том, с какой стороны подойти к отладке, то самый верный способ - создавать в Студии проект с примерами (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.
- Сообщения: 5
- Зарегистрирован: Ср мар 12, 2014 11:18:31
Чтобы работала библиотечная функция delay, необходимо включить модуль delay routines в ASF Explorer. При этом в asf.h нужно включить delay.h (ну или отдельно). Еще нужно в main инициализировать задержки с помощью функции delay_init();ATrosh писал(а):Первый раз попробовал запрограммировать стартовый пример для этой платы (Студия сгенерила). В принципе все просто. Все работает.
при компиляции ошибку выдает (Ошибка неявная декларация функции '_delay_ms')
видимо у функции другое наименование, а где найти все описания функций?
Примерно так:
Код: Выделить всё
int main(void)
{
system_init();
delay_init();
...
}
Вообще очень удобно, если что-то не знаете, как делать, посмотреть пример. Обычно у атмела на все есть примеры)
- Сообщения: 64
- Зарегистрирован: Пт ноя 18, 2011 18:43:01
Большое спасbбо alvangee за комментарии! Буду вникать. Конечно весь даташит переводить сразу смысла не имеет. Перевел пока главу 27. TC – Timer/Counter, в нем как-то больше ясности. Тактирование конечно следующий шаг.
Ура delay заработала спасибо marus-ka за подсказку delay_init(); в код я не включал. Видимо сказывется отсутствие опыта в Си. Вообще вот эти первые шаги самые трудные, дальше обычно легче идет.
Ура delay заработала спасибо marus-ka за подсказку delay_init(); в код я не включал. Видимо сказывется отсутствие опыта в Си. Вообще вот эти первые шаги самые трудные, дальше обычно легче идет.
- Сообщения: 2
- Зарегистрирован: Чт дек 17, 2015 17:50:25
2800 р это вы переплатили
. Почти год длилась акция на эти отладки - продавали их по 1000 р. Акция пару недель завершилась (на сайте пока не отметили этого), но и теперь они по $26 идут, что дешевле 2800.
А почему топик в AVR? SAMD20 это же ARM, пора заканчивать с монополией STM32
А почему топик в AVR? SAMD20 это же ARM, пора заканчивать с монополией STM32
- Сообщения: 64
- Зарегистрирован: Пт ноя 18, 2011 18:43:01
Может 2800 и дороговато, но хотел подарок себе на новый год. И дешевле найти не мог, а может не искал толком. Так видимо с этой акции мне и перепродали
Так если доставку прибавить то и выходит.
- Сообщения: 64
- Зарегистрирован: Пт ноя 18, 2011 18:43:01
Всем доброго времени суток!
Закончился март, можно продолжить изучение МК
Хочу поделится с тем кто как я только знакомится с данной платой.
Тоесть самый первый шаг к изучению, то что я сам хотел найти, подергать МК за лапки.
Получилась такая пошаговая инструкция.
По нажатию кнопки SW0 на плате, включать и выключать светодиоды подключенные к выводам РА02 и РА03.
Используется 7-ая Атмел Студия.
Закончился март, можно продолжить изучение МК
Хочу поделится с тем кто как я только знакомится с данной платой.
Тоесть самый первый шаг к изучению, то что я сам хотел найти, подергать МК за лапки.
Получилась такая пошаговая инструкция.
По нажатию кнопки SW0 на плате, включать и выключать светодиоды подключенные к выводам РА02 и РА03.
Используется 7-ая Атмел Студия.
- Вложения
-
- 1.png
- (173.62 КБ) 413 скачиваний
Последний раз редактировалось ATrosh Чт апр 07, 2016 21:02:20, всего редактировалось 2 раза.


