Вот примерно это я хотел найти в интернете.
Когда начинаешь немного вникать кажется ни так все сложно, и вроде как все логично и удобно.
Удобно пример нужный на сайте открыть, свои имена выводам присвоить и прочее. Вот только некому доходчиво объяснить и показать что и как.
Наворочено много. Разгребать и разгребать.
Захотелось поморгать светодиодами с помощью задержки.
Что интересно, если вставлять в прошлый проект "delay" при помощи ASF Wisard, Студия начинает ругаться ( бла-бла не можем гарантировать корректную работу), что действительно и происходит.
Сделал ход конем.
1. Зашел на стартовый сайт, сгенерировал проект с функцией delay
Программирование на С в отличии от asm мне напоминает большую управленческую контору, где много вывесок, всякой информации, что бы что то сделать нужно одних найти, с другими согласовать и прочая суета, связи всякие нужные завести. Зато когда освоился, тут можно и развернуться!
Третий день пытаюсь реализовать ШИМ. Сгенерил пример в ASF и на этом все застопорилось. Понимаю что по идее все элементарно, пару тройку строк и готово, но видимо атмеловские разработчики так запарлись, что доделывать толковый пример не стали. Мол не маленькие сами разберутся. Нашел описание ASF на английском может что прояснит.
Продолжение. Проявились в работе с программой AtmelStudio7 два косяка.
Делюсь бесценным опытом, потому как поначалу такие косяки выносят мозг капитально.
Первый не особо страшный.
Захотелось мне организовать передачу данных через USART на ПК. для этого установил Visual Studio 2015 бесплатную версию.
После установки AtmelStudio7 перестала работать как положено. Решилась задача переустановкой AtmelStudio7 на другой диск.
Второй конкретный косяк(более корректного слова подобрать не могу)
Перед закачкой кода AtmelStudio7 предложила обновить EDBG sam d20 Xplained Pro на более свежую версию 3.0
Я с дуру нажал Ок и при обновлении AtmelStudio7 вылетела, а плата осталась в режиме прошивки и моргала двумя диодами одновременно. После этого AtmelStudio7 никак плату не определяла. Что делать?
Написал на форум Atmel И получил ответ. http://community.atmel.com/forum/atmel- ... nt-1883941.
В кратце. В папках программы AtmelStudio7 есть файлы которые необходимо собрать в одну. Затем в командной строке набрать волшебное слово и о чудо! Свершилось!Плата засветилась одним зеленным огоньком и все работает как прежде.
Доброго времени всем!
Поэкспериментировав с ASF функциями захотелось просто поморгать ножками как на старой доброй Тиньке.
Вот что получилось.
У SAMD20 как всем известно пины делятся на две группы Group[0] и Group[1] и у каждого по 32 битному регистру.
Если необходимо зажечь светодиод на ножке РА04 необходимо в файл main.c ввести три строки
#include "sam.h" unsigned long Pin_Grup=16; // вывод РА04
int main(void)
{
SystemInit();
PORT->Group[0].DIR.reg = Pin_Grup ; //вкл напр на выход
PORT->Group[0].OUT.reg=Pin_Grup ; // включает 3,29 вольт
}
а значение переменной определить в соответствии с таблицей.
//GCLK->GENDIV.reg=512; // запись в делитель 2
GCLK->GENDIV.reg=1024; // запись в делитель 4
PORT->Group[0].DIR.reg = 48 ; // установка на выход РА04, PA05
while(Count<10000)
{
Count++ ;
PORT->Group[0].OUT.reg=16 ; // включает PA04
}
// при OSCULP32K 32KHz
// переключение на PA05 через прим 3 сек без деления
// переключение на PA05 через 6 сек с делением на 2
// переключение на PA05 через 12 сек с делением на 4
PORT->Group[0].OUT.reg= 32; // включает PA05
}
Далее для удобства расчета значении регистров таблицы Excel.
В выше приведенном примере использование GCLK->GENCTRL.reg=67328; // DFLL48M 48MHz и GCLK->GENCTRL.reg=66560; // OSC32K
не дает результата, возможно необходимо выполнить дополнительные настройки типа синхронизации.
Приятно что помаленьку SAMD2x идёт в массы. Давненько заводил ветку для изучения мелкокортексов М0 от Атмел - https://www.radiokot.ru/forum/viewtopic ... 59&t=97708 да потом у меня демоборда сгорела на работе вместе с компом, и на этом всё закончилось. Сейчас мне подогнали новую борду тоже на SAMD20, можно возобновить юзание.