Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.96/112: Рейтинг темы: голосов - 112, средняя оценка - 4.96
328 / 107 / 12
Регистрация: 06.03.2010
Сообщений: 242
1

Шаблоны проектов на C++ для AVR [GCC, IAR]

26.10.2013, 13:08. Просмотров 21613. Ответов 15
Метки нет (Все метки)

Ссылка на svn репозиторий:

Шаблоны: https://mysvn.ru/avr/templates/
Примеры: https://mysvn.ru/avr/examples/

Экспортировать из репозитория к себе можно при помощи плагина к проводнику: TortoiseSVN.

Шаблоны для микроконтроллеров: ATtiny2313, ATmega48, ATmega16, ATmega32, ATmega128.

Особенности шаблонов:
1. Проекты шаблонов собраны таким образом, что компилируются в двух C++ компиляторах: avr-gcc и iar.
2. Каждый шаблон имеет класс CMCU, который является программной моделью микроконтроллера AVR.
3. Обработка событий (прерываний) осуществляется через соответствующие методы класса CMCU, которые имеют соответствующие названия.
4. Код максимально самодокументирован, вплоть до отдельных настроечных битов конфигурационных регистров.
5. В каждый проект шаблона включён заголовочный файл с классом CVersion. Этот класс создаётся автоматически перед каждой компиляции проекта (и в iar, и в gcc). Его назначение - автоматически отслеживать номер версии прошивки в стиле: Major.Minor.Build.Revision, где первое число изменяется от 0 до 9, второе от 0 до 99, а последние два от 0 до 9999 (доступен и другой вариант, как в .Net, если формат версии задан в виде: x.x.*). Также в классе есть метод, возвращающий дату билда в виде строки. Строка находится во флеш.
6. Проекты шаблонов настроены для работы с MHV AVR Tools 20131017 (замена WinAVR-20100110) и IAR 6.10.
7. Каждый шаблон имеет возможность однообразного описания декларации переменных и одномерных массивов, которые должны находится во флеш. При использовании специального C++ шаблона умного указателя (SmartPtr.h) можно забыть про функции типа pgm_read_byte() и eeprom_read_byte(). С++ компилятор автоматически вызовет эти функции для чтения данных из флеш или eeprom.
8. Для тех, кто умеет пользоваться VS2008, в каждой папке есть GCC проект для этой IDE, в котором можно работать над проектом. Сборка идёт через Makefile.

Назначение:
1. Переход на объектный C.
2. Небольшие проекты без сильных требований к быстродействию, т.е. там где не нужны в большом количестве ассемблерные вставки. Их можно подключать и в шаблонах, но только в качестве исключения.
3. Для тех, кому нравится ООП или хочет писать с использованием ООП на AVR.

Ограничения и недостатки:
1. При использовании двумерных массивов, которые должны находится во флеш, теряется кросс-компиляция.
2. Шаблоны пока ещё не готовы на 100%, в них могут быть неточности в плане описания регистров или битов. Нужно быть внимательными.
5
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2013, 13:08
Ответы с готовыми решениями:

Шаблоны проектов на C++ для AVR [GCC, IAR]
Ссылка на svn репозиторий: Шаблоны: https://mysvn.ru/avr/templates/ Примеры:...

ключик для IAR 6.11 Atmel AVR ...
не знаю корректен ли в данном сообществе и на данном форуме такой вопрос .. Но как новичок, сделав...

Как в AVR-GCC вычислять адрес для in/out?
Hi, Ott! Подскажите, как грамотно написать фрагмент программы на Си, где идёт обращение к портам...

[РЕШЕНО] Настройка AVR-GCC для Code::Blocks - подскажите.
Помогите, пожалуйста, со следующим вопросом: Есть комп с Linux, на нем стоит AVR Toolchain....

15
0 / 0 / 1
Регистрация: 04.04.2013
Сообщений: 23
12.11.2014, 12:10 2
не одна ссылка не работает
Шаблоны для микроконтроллеров: ATtiny2313, ATmega48, ATmega16, ATmega32, ATmega128.
0
328 / 107 / 12
Регистрация: 06.03.2010
Сообщений: 242
12.11.2014, 12:14  [ТС] 3
Проверил, всё работает.
0
10205 / 6587 / 493
Регистрация: 28.12.2010
Сообщений: 21,165
Записей в блоге: 1
12.11.2014, 21:28 4
...у меня тоже не открывается. Пробовал браузером. Зайти просто по http в корень mysvn.ru можно.

Возможно нужен особый клиент, типа TSVN? Тогда следует оговорить каким и как его настроить.

p.s.: никогда не доверял национальным репозиториям, чем гитхаб и сурсфорже международные не угодили? Всегда есть доступ, всем.
0
1278 / 1184 / 175
Регистрация: 02.12.2013
Сообщений: 4,886
12.11.2014, 22:10 5
У меня всё нормально, на компе правда SVN клиент и сервер есть.
0
328 / 107 / 12
Регистрация: 06.03.2010
Сообщений: 242
12.11.2014, 23:18  [ТС] 6
svn - это практически классика. Когда я заливал исходники проекта на этот бесплатный сервис, то у меня ещё не было аккаунта на github. Даже сейчас, когда аккаунт у меня есть, svn мне кажется проще для простых смертных. Плагин к Visual Studio для svn также куда приятнее, чем аналогичный для github, который нужно дорабатывать напильником (ещё и глючный).

Ссылки даны для обзора в веб исходников, а не для их скачивания. Чтобы получить копию проекта нужно установить плагин к проводнику, как указано в первом сообщении. Устанавливаете его и в проводнике выбираете команду Export, прописывая путь на проект (только без местной добавки для редиректа).

С помощью плагина вы можете не просто скачать исходники, а посмотреть их историю (Журнал), скачать ранние версии, посмотреть комментарии к изменениям.

В браузере должен показываться список файлов последней ревизии (https протокол, а не http). Без каких-либо клиентов.

Если уж github'ом научились пользоваться, то что про svn-то рассказывать? Исходники не распространяются в виде архива по очевидной причине - они периодически дорабатываются и я не буду везде zip'ы переупаковывать.

Сейчас нет времени перезаливать на github. Кроме того, мне хотелось бы сохранить историю изменений и я не знаю возможно ли это при такой конвертации.

В общем, если вы пытаетесь писать на C++ для мк, то для вас не должно быть сложным скачать исходники с svn.
1
10205 / 6587 / 493
Регистрация: 28.12.2010
Сообщений: 21,165
Записей в блоге: 1
13.11.2014, 07:36 7
...вы игнорируете очевидные вещи. У меня есть TSVN, но и через него на указанный репозиторий доступа нет.
0
328 / 107 / 12
Регистрация: 06.03.2010
Сообщений: 242
13.11.2014, 08:35  [ТС] 8
Это странно. Я проверял доступ по веб с iPad. Всё прекрасно заходит прямо по ссылке с редиректом. Надо ли упоминать, что на iPad никакого клиента нет. Попробую скачать последнюю версию плагина для проводника, может там что-то изменилось.

Добавлено через 47 минут
TortoiseSVN 1.8.8, Build 25755 - 64 Bit , 2014/08/10 14:44:06 на Windows 8.1 - полёт нормальный.

Если у кого нет доступа ни через браузер, ни через плагин для проводника, то проверяйте свои сетевые настройки. Может быть у вас слишком умный антивирус/firewall? У меня установлен Nod32 7.0, который веба не касается.

Отдельно ещё проверил доступ через 3G сеть от МТС на iPhone и тот же результат - всё доступно.

Добавлено через 5 минут
Справка по TortoiseSVN:

- Клиент Subversion для Windows;
- Экспорт рабочей копии Subversion.
0
621 / 249 / 86
Регистрация: 04.07.2014
Сообщений: 711
13.11.2014, 15:32 9
Всё открылось.

Не понравился Git посмотри на Mercurial. Процедура конвертирования:
  1. Включаем расширение Convert. В файле %USERPROFILE%\mercurial.ini должно быть:
    Код
    [extensions]
    hgext.convert=
  2. Готовим файлы преобразования имён authors.txt:
    Код
    uni=Uni Uni <uni@uni.ru>
  3. (опционально) Готовим файл фильтра файлов files.txt:
    Код
    exclude ATtiny2313/docs/ATtiny2313.pdf
  4. Конвертируем в локальный репозиторий:
    Код
    hg convert --authormap authors.txt --filemap files.txt [url]https://mysvn.ru/avr/templates/[/url] avr-template
  5. Результат:
    Код
    >hg log
    changeset:   26:5c20cdfab489
    tag:         tip
    user:        Uni Uni <uni@uni.ru>
    date:        Sun Nov 03 09:50:26 2013 +0000
    summary:     Удалён ATmega48.pdf.
    
    changeset:   25:9ef8b86cb8eb
    user:        Uni Uni <uni@uni.ru>
    date:        Wed Oct 30 12:28:32 2013 +0000
    summary:     Обновлён модуль Console.bas.
    
    changeset:   24:26cb7e93b90c
    user:        Uni Uni <uni@uni.ru>
    date:        Mon Oct 28 08:50:38 2013 +0000
    summary:     Добавлен модуль Console.bas.
    
    changeset:   23:e53fbc708f64
    user:        Uni Uni <uni@uni.ru>
    date:        Sat Oct 26 16:04:50 2013 +0000
    summary:     Добавлены базовые компоненты проектов шаблонов.
    
    ....
    
    changeset:   1:405374247839
    user:        Uni Uni <uni@uni.ru>
    date:        Wed Nov 21 15:47:46 2012 +0000
    summary:     Добавлен шаблон проекта для микроконтроллера ATmega48.
    
    changeset:   0:1f3ea445699e
    user:        Uni Uni <uni@uni.ru>
    date:        Sat Nov 17 11:34:59 2012 +0000
    summary:     Добавлен шаблон проекта для микроконтроллера ATmega16.

З.Ы.: По аналогии и с Git
1
328 / 107 / 12
Регистрация: 06.03.2010
Сообщений: 242
13.11.2014, 15:39  [ТС] 10
Спасибо, все бы так расписывали такие вещи. Дело тут ещё в том, что я пишу код в Visual Studio 2008 - 2013. Есть очень симпатичный плагин для студии, который работает с svn. Для git плагин показался немного ущербным и для его встраивания нужно немножко чего-то поделать (уже даже не помню чего и где я это брал, для VS2013).

Что есть для удобной работы с VS2013 + Mercurial?
0
0 / 0 / 1
Регистрация: 04.04.2013
Сообщений: 23
13.11.2014, 19:50 11
у меня ссылку не открывает
0
328 / 107 / 12
Регистрация: 06.03.2010
Сообщений: 242
13.11.2014, 20:35  [ТС] 12
В выходные попробую переместить исходники на github.
1
328 / 107 / 12
Регистрация: 06.03.2010
Сообщений: 242
15.11.2014, 19:48  [ТС] 13
Пока так:
https://github.com/ViacheslavM... -templates
https://github.com/ViacheslavMezentsev/avr

Они были в разных svn репозиториях. Потом объединю и по папкам разложу. Последние версии заточены под gcc 4.8.x и не взлетят на WinAVR последней версии. Но можно сделать правку, чтобы взлетела. Дело касается умных указателей, там нетривиальный код, который использует нововведения в последних версиях компилятора.

В общем, если будут вопросы по сборке шаблонов, то пишите где, в чём и как собирали.
0
10205 / 6587 / 493
Регистрация: 28.12.2010
Сообщений: 21,165
Записей в блоге: 1
15.11.2014, 20:01 14
Вот теперь все пучком.
0
328 / 107 / 12
Регистрация: 06.03.2010
Сообщений: 242
15.11.2014, 20:06  [ТС] 15
Блин, там везде readme автоматом подцепился, а в нём куча ссылок на пиратский инструментарий на торрентах. Надо будет что-то придумать, а то меня забанят ещё.
0
2 / 2 / 0
Регистрация: 05.04.2015
Сообщений: 30
20.04.2016, 12:23 16
Всё открылось, спасибо автору.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2016, 12:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

STM8 после AVR с AVR-GCC
Привет! В процессе знакомства с STM8 накопились мелкие вопросы, ответы на которые пока не нашел:...

JetBrains Rider F# Установить шаблоны для создания проектов
Всем привет! Установил JetBrains Rider 2017. Он поддерживает ЯП F#. А там только пустой проект...

IAR >> GCC
Нашёл код под IAR, как переделать под GCC. __no_init volatile union { unsykned char FLAGS;...

Ассемблер AVR-AS из AVR-GCC
Помогите начать программировать на этом ассемблере. Интересует: - подробное описание...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.