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 в търсенето. Виждаме списъка с налични проекти.Изберете този, от който се нуждаете. Въведете ново име за проекта и изберете местоположението.Готово! Натиснете "OK". Сега имаме примерен проект, който можем да компилираме и качим на борда за разработка. Да предположим, че искаме да променим кода. Нека нашите светодиоди светнат на таймер. За да направите това, отидете на съветника за ASF, въведете ключовата дума таймер в търсенето, изберете режима на обратно извикване, след което щракнете върху Добавяне и прилагане.Настройте таймера. За да направим това, ние декларираме структура глобално, която ще съхранява параметрите на таймера:
Сега трябва да настроим таймера. Добавяне на функция:
Обяснение на функцията:
- 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.