Як би це дивно не звучало, але я ніколи в житті не використовував фірмову софтину від Atmel для написання прошивок. Спочатку користувався Eclipse, але в зв'язку з тим, що для CodeVision було більше прикладів, то до сих пір з ним і працював. Але все ж інтерес переважив і я вирішив дізнатися, чи не так страшний Atmel Studio як його малюють Для простоти можна моргнути світлодіодом, заодно і описати враження.
Перше що кидається в очі дизайн успадкований від Visual Studio, не знаю кому як, а мені він звичний і блювотних позивів не спостерігається. Далі стандартна процедура File-New project. З типом проекту теж ніяких проблем, мікроконтролер 8 бітний, аргументів проти GCC теж ніяких немає
З залізом теж все зрозуміло, а ось за даташит окреме спасибі. До речі, досить зручно прикинути, скільки у якого мікроконтролера пам'яті і оператіви.
Згенерувати порожній проект, заголовки трохи відрізняється від CodeVision, але в цілому це анітрохи не бентежить.
Перше куди я поліз - шукати де налаштовується частота каменю, полазив в настройках ніде немає. Очевидно налаштовується в коді проекту, в кінці кінців так і виявилося. Незвично.
Назва бібліотеки затримок гугл просто util / delay.h. Дуже зручним здалося, то що при наборі коду пропонується автодоповнення. Після Visual C # цієї штуки страшенно не вистачає в CAVR. У підсумку за 5 хвилин накидав шматочок коду
Протеус підтвердив працездатність прошивки.
Що ж я хотів сказати цією статтею? Те, що важливо розібратися з основними принципами роботи мікроконтролера. Для початківця радіоаматора впринципі не важливо в чому писати. Якщо ви будете розуміти, що звідки береться, то вам не складе труднощів, перенести проект в будь-яку іншу середу.
ЗИ заради приколу порівняв розмір такої ж прошивки в CAVR, виявилося що GCC згенерувати Hex вполтора рази менше O_o.
Ну це логічно. Не робити циклічний програма просто відпрацювала раз і закінчилася.
Чи не знав куди написати, тому пишу сюди. Як зробити так щоб переривання таймера за випадковим збігом з B не переривати переривання за випадковим збігом з A? Переривання А виконується за часом менше ніж B. Тобто як змусити ці два переривання працювати разом? А то виходить що під час роботи переривання по В не працює переривання по А.
Документація на ATtiny2313, сторінка 48, розділ 6.1. Чорним по білому написано, що переривання по Т0 COMPA має вищий пріоритет ніж В. У таблиці це 14 і 15 вектора. Ще питання є?