Atmel Software Framework (ASF) как работи
Малко теория
Atmel® Software Framework (ASF) е софтуерна библиотека за микроконтролери, която съдържа широк набор от кодове за вграждане на микроконтролери Atmel от всички семейства: megaAVR, AVR XMEGA, AVR UC3 и SAM. Основни предимства:
- използването и разработването на микроконтролери е опростено, тъй като библиотеката е написана на високи и средни нива на абстракция;
- ASF е проектиран да се използва на всеки етап от проектирането;
- ASF е интегриран в Atmel Studio (което замени AVR Studio и поддържа всички микросемейства на Atmel) с графичен потребителски интерфейс, но може да се използва и с IAR и GCC компилаторите;
- ASF е безплатна.

Atmel Studio е безплатна среда за разработка на микроконтролери Atmel, наследник на AVR Studio. Визуалната обвивка е взета от Microsoft Visual Studio. Компилаторът все още е GCC.
Както можете да видите от фигурата по-горе, ASF се състои от няколко слоя абстракция:
- печатна платка (платка),
- драйвери (драйвери),
- компоненти (компоненти),
- услуги (Услуги),
- приложение (Приложения).
ASF използва три градивни елемента:
- Модул : софтуерен модул, който не съдържа функциятаint main (void) (напр. USART модул, USB стек). ASF модулите са слоеве: драйвери, компоненти и услуги. ASF модулът се конфигурира статично и/или динамично.
- Приложение/Пример : Програмен код в ASF, който може да бъде компилиран, програмиран в микроконтролера и изпълнен. ASF приложенията се състоят от слоеве: драйвери, компоненти, услуги, приложение. За ASF приложения е налична само статична конфигурация.
- PCB : Абстрактен слой за всеки комплект за отстраняване на грешки на Atmel, поддържан от ASF. Обикновено един кит съответства на един микроконтролер. Има и специална персонализирана печатна платка „потребителска платка“, това е празен абстракционен слой за създаване на приложение, базирано на потребителска платка.
За всеки проект дървото на директорията (вижте фигурата по-долу) се състои от:
- Папки за избраното микросемейство Atmel (на фигурата "sam0")
- Папки с общ код (на фигурата "common" и "common2")
- Папки със софтуер на трета страна (на фигурата "трета страна").

Основните етапи на работа с ASF
Кодирането стъпка по стъпка с ASF в Atmel Studio изглежда така:
- Изтеглете ASF (с помощта на мениджъра на разширения, направено веднъж).
- Изберете примерен проект или създайте свой собствен (на началната страница на Atmel Studio).
- Добавете необходимите модули (ASF Wizard).
- Конфигуриране на модули (файлове xxxx_conf.h).
- Напишете логиката на работа (действителния код на приложението).
След това ще анализираме всеки от етапите по-подробно. За да инсталирате необходимото разширение:
- Отворете Extension Manager (Инструменти → Extension Manager )
- Въведете ключови думи в полето за търсене
- Изтеглете инсталационния файл (за това трябва да сте регистриран потребител на atmel.com)
- Инсталирайте приложението
Актуализирайте вече инсталираните приложенияизвършва се и чрез Extention Manager.

Създайте проект
Когато стартирате Atmel Studio (или File-New-Project…/Example Project…), ви се предлага избор за създаване на нов проект, създаване на примерен проект или отваряне на вече създаден проект.Има много примерни проекти и е най-удобно да започнете да изучавате Atmel Studio, ASF и контролерите на Atmel от тях. За да изберете желания проект, въведете фамилията микроконтролери, платката за разработка или ключова дума в съответното поле. След като изберете проекта, посочете папката за поставяне и името (ако желаете да е различно от името по подразбиране). При създаване на нов проект се избира неговия тип. Броят на видовете и самите те зависят от вече инсталираните разширителни модули. Фигурата по-долу показва, че са налични Qtouch проекти, които могат да бъдат създадени само след инсталиране на Qtouch Library и Qtouch Composer.

A.S.F съветник
Ако сте отворили готов пример или сте създали свой собствен проект и трябва да добавите нов периферен модул (например UART) или библиотека (например FATFS), тогава ASF Wizard ще ви помогне (менюПроект → ASF wizard или икона ). Можете да намерите модули в него по ключова дума и по тип (драйвер, компонент, услуга). Ако е необходимо, конфигурирайте как ще работят: чрез прекъсване (обратно извикване в терминологията на Atmel) или чрез запитване (запитване), какво да часовник или каква роля да играят (главен, хост, масово съхранение и т.н., в зависимост от типа периферни устройства или библиотека). Този файл съдържа общите настройки на библиотечния модул. Конфигурирането на съответните периферни устройства се извършва на 4 етапа:
- Прочетете параметрите по подразбиране със съответната функция.
- Променете, ако е необходимо, някои параметри.
- Напишете нови параметри.
- Активиране на периферни устройства.
След това ще разгледаме процедурата за добавяне на нови периферни устройства към проекта, използвайки пример.
Писане на код
След като добавим необходимите модули, конфигурираме ги и ги активираме, започваме да пишем кода. Пример Да приемем, че искаме да научим как да мигаме светодиодите на SAM D21 Xplained Pro Evaluation Kit. Нека да разгледаме по-подробно как да направим това в Atmel Studio. Стартирайте Atmel Studio и натиснете бутонаНов проект Вижте как да го направите по-горе). Създайте нов примерен проект ( вижте фигурата). Изберете фамилията контролери samd, въведете ключовата дума led в търсенето. Виждаме списъка с налични проекти.
Сега трябва да настроим таймера. Добавяне на функция:
Обяснение на функцията:
- struct tc_config config_tc спомагателна структура, която съхранява настройките на таймера
- tc_get_config_defaults (&config_tc) прочете настройките по подразбиране (попълнете структурата).За да видите какви са действителните настройки по подразбиране, щракнете с десния бутон върху функцията и изберете „goto implementation“ от падащото меню. За да разберете името на функцията, която записва настройките по подразбиране, въведете името на периферното устройство и думата "get" през долната черта и автоматичното довършване ще изведе пълното име.
- Променяме настройките, от които се нуждаем. В този случай това са предскалерът, режимът на работа и съдържанието на регистъра за сравнение.
- tc_init (&tc_instance_tc0, TC3, &config_tc) Запишете променените данни в структурата и свържете софтуерната структура с хардуерния таймер (TC3).
- tc_enable (&tc_instance_tc0) Активиране на таймера.
Сега настройваме прекъсвания и пишем кода, който ще бъде изпълнен при прекъсването. За да направим това, пишем функции:
Първата функция задава кой манипулатор на прекъсване да се извика (tc_register_callback (&tc_instance_tc0, tc0_callback, TC_CALLBACK_CC_CHANNEL0);) и разрешава това извикване (tc_enable_callback (&tc_instance_tc0, TC_CALLBACK_CC_CHANNEL0);). Втората функция е това, което се изпълнява в манипулатора на прекъсване (обратно извикване). Компилирай, стартирай, готово!
Atmel Studio заедно с Atmel Software Framework са отлични инструменти за първоначално запознаване с периферните устройства на микроконтролерите Atmel, като значително намаляват времето за усвояване на ново семейство микроконтролери поради голям брой примери и удобна среда за разработка.
ASF може да се използва и с IAR. В този случай самостоятелната версия на ASF се изтегля и свързва към проекта в IAR ръчно, пътищата до необходимите библиотечни файлове са посочени в менютоOptions-C/C++ Compiler → Preprocessor.