С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.97/67: Рейтинг темы: голосов - 67, средняя оценка - 4.97
уни
327 / 106 / 12
Регистрация: 06.03.2010
Сообщений: 234
1

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

26.10.2013, 13:08. Просмотров 12069. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
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, на нем стоит...

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

15
Greem_Jow
0 / 0 / 1
Регистрация: 04.04.2013
Сообщений: 23
12.11.2014, 12:10 2
не одна ссылка не работает
Шаблоны для микроконтроллеров: ATtiny2313, ATmega48, ATmega16, ATmega32, ATmega128.
0
уни
327 / 106 / 12
Регистрация: 06.03.2010
Сообщений: 234
12.11.2014, 12:14  [ТС] 3
Проверил, всё работает.
0
raxp
10186 / 6569 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
12.11.2014, 21:28 4
...у меня тоже не открывается. Пробовал браузером. Зайти просто по http в корень mysvn.ru можно.

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

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

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

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

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

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

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

В общем, если вы пытаетесь писать на C++ для мк, то для вас не должно быть сложным скачать исходники с svn.
1
raxp
10186 / 6569 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
13.11.2014, 07:36 7
...вы игнорируете очевидные вещи. У меня есть TSVN, но и через него на указанный репозиторий доступа нет.
0
уни
327 / 106 / 12
Регистрация: 06.03.2010
Сообщений: 234
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
AlexVRud
480 / 192 / 72
Регистрация: 04.07.2014
Сообщений: 544
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
уни
327 / 106 / 12
Регистрация: 06.03.2010
Сообщений: 234
13.11.2014, 15:39  [ТС] 10
Спасибо, все бы так расписывали такие вещи. Дело тут ещё в том, что я пишу код в Visual Studio 2008 - 2013. Есть очень симпатичный плагин для студии, который работает с svn. Для git плагин показался немного ущербным и для его встраивания нужно немножко чего-то поделать (уже даже не помню чего и где я это брал, для VS2013).

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

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

В общем, если будут вопросы по сборке шаблонов, то пишите где, в чём и как собирали.
0
raxp
10186 / 6569 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
15.11.2014, 20:01 14
Вот теперь все пучком.
0
уни
327 / 106 / 12
Регистрация: 06.03.2010
Сообщений: 234
15.11.2014, 20:06  [ТС] 15
Блин, там везде readme автоматом подцепился, а в нём куча ссылок на пиратский инструментарий на торрентах. Надо будет что-то придумать, а то меня забанят ещё.
0
shaksUa
2 / 2 / 0
Регистрация: 05.04.2015
Сообщений: 30
20.04.2016, 12:23 16
Всё открылось, спасибо автору.
0
20.04.2016, 12:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2016, 12:23

IAR AVR, объявление переменных
День добрый. Подскажите начинающему. в main.c объявил переменные static...

iar avr целая степень не работает
Господа, iar avr, на ровном месте подлянка: 10^2 = 8, 5 ^ 2 = 7, 9 ^...

GCC-AVR Linux
Вот такая констукция #asm .equ __y2s_port=0?12 ;PORTD .equ __sda_bit=0 .equ...


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

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

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