Принимайте в свои ряды.

Использование Arduino/CraftDuino (Freeduino, Seeduino, ...).

Принимайте в свои ряды.

Сообщение Arhat109 » 06 июл 2015, 14:10

Всем привет, не так давно обзавелся Мегой 2560 и кучей датчиков ... постепенно осваиваю, и, в качестве восстановления навыков программирования на С/С++, делаю "свой собственный Wiring".

Цель приобретения: замена Лего Майндшторм для ребенка. Многое уже поставлено на лего-детальки, в т.ч. и сама Мега.

Из "достигнутого":
1. Прямое управление ножками через регистры прямо из типовых функций digitalWrite(), pinMode() . Типовой скетч Blink.ino у меня теперь компиляется в 508 байт "без переделок";
2. Прямое управление таймерами. Позволяет гонять "аппаратный ШИМ" на ножках меги напрямую функциями analogWrite(), а также иметь аппартатное управление серводвигателями через неё же;
3. Изменены:
таймер миллисекунд - считает только переполнения и "фсё";
функция millis() считает "ровно" без скачков в плюс-минус 2 миллисекунды в отличии от типовой;
функция micros() отдает микросекунды с учетом времени собственного выполнения (т.е. на момент завершения вызова);
сделана функция delay16() с парамтером unsigned int вместо long, что экономит по 6 байт на каждом вызове.
4. В хидер встроена функция every..() которая много где описана и позволяет делать задержки без delay();
5. прямое управление аналоговым чтением analogRead() позволяет настраивать АЦП блок в любой режим оцифровки: типовой, дифференциальный, с усилением.

В разработке:
6. Чтение длительности импульсов "по прерыванию". Задействовал прерывания PCINT2 (аналоговые входы 8..15) для реализации pulseIn() без простоев проца. Но, тут появилась "засада" с таймаутом определения длительности ... пока сделал в таймере список таймаутов, но это решение мне - не нравится.
7. "Событийная" обработка и переход на конечный автомат для построения разного рода роботов.

Сюда выкладывать - кому-то интересно будет?
Arhat109
 
Сообщения: 11
Зарегистрирован: 04 июл 2015, 13:34
programming: c++

Re: Принимайте в свои ряды.

Сообщение noonv » 07 июл 2015, 11:10

Привет!
Разумеется, выкладывайте. Можно на сайт, а можно и сюда :)
Аватара пользователя
noonv
Администратор
 
Сообщения: 557
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++

Re: Принимайте в свои ряды.

Сообщение Arhat109 » 08 июл 2015, 06:51

Держите.

1. Архив разворачивается и подключается как обычная библиотека в каталог libraries.
2. Создан ТОЛЬКО для машинок на базе ATmega2560.
3. ... по идее, будет работать и на машинках "попроще", но тогда там надо в хидере arhat.h снять блокировку и условный вызов настроек ног Ардуино.
4. Для использования смотреть примеры.
5. Если нужен режим совместимости (таймер и все функции из wiring.c все равно будут заменены!)
, то достаточно не указывать в скетче первое определение из примеров: #define _ARHAT_ 1 .
Вложения
Arhat.zip
библиотека для Мега 2560 с прямым доступом к портам через типовые функции Wiring (часть)
(27.65 КБ) Скачиваний: 625
Arhat109
 
Сообщения: 11
Зарегистрирован: 04 июл 2015, 13:34
programming: c++

Re: Принимайте в свои ряды.

Сообщение Arhat109 » 08 июл 2015, 06:52

Создал себе github, в ближайшее время перенесу туда, дабы упростить работу с версиями.

Если полезно - переносите на сайт. :)
Arhat109
 
Сообщения: 11
Зарегистрирован: 04 июл 2015, 13:34
programming: c++

Re: Принимайте в свои ряды.

Сообщение noonv » 08 июл 2015, 11:46

Arhat109 писал(а):Создал себе github, в ближайшее время перенесу туда, дабы упростить работу с версиями.

Не забудьте сбросить ссылку ;)
Аватара пользователя
noonv
Администратор
 
Сообщения: 557
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++

Re: Принимайте в свои ряды.

Сообщение Arhat109 » 09 июл 2015, 08:44

Как только так сразу.

А пока, мне было бы интересно чтобы кто-то поюзал и отписался насколько оно полезно, удобно, фигово, не работает (нужное подчеркнуть), дабы с ориентироваться в пространстве: "надо оно или куда" и работает тока у меня или ещё у кого...
Arhat109
 
Сообщения: 11
Зарегистрирован: 04 июл 2015, 13:34
programming: c++

Re: Принимайте в свои ряды.

Сообщение Arhat109 » 14 июл 2015, 07:12

Все работы по библиотеке и прочие - прекращены до сентября в связи с отъездом. Пока собираю пожелания, нарекания и т.д. :)
Arhat109
 
Сообщения: 11
Зарегистрирован: 04 июл 2015, 13:34
programming: c++

Re: Принимайте в свои ряды.

Сообщение Arhat109 » 13 окт 2015, 09:57

Вот тут http://cyber-place.ru/showthread.php?t=1909 выложена вторая версия библиотеки. Если есть смыл - запостите куда-нибудь и на этот сайт. Все изменения описаны в первом посту. Не знаю как тут редактировать первый пост. С гитхабом пока руки так и недошли - некогда.
Arhat109
 
Сообщения: 11
Зарегистрирован: 04 июл 2015, 13:34
programming: c++

Re: Принимайте в свои ряды.

Сообщение Arhat109 » 02 дек 2015, 05:56

У меня руки так и не дошли создать проект на гитхабе, но одним из пользователей такой проект создан. Последние обновления теперь тут:

https://github.com/dimanus/AVR_LIB_AUTOMAT

Изменения "на сегодня":
1. Возвращен режим совместимости с Wiring. Если теперь указано так:
#define ARHAT_MODE 1
#include "arhat.h"

, то компиляция в "совмещенном режиме":
1. подключается Arduino.h как обычно, все типовые функции НЕ переопределяются и вызываются из wiring (что отменяет сокращение кода скетчей);
2. обработчик прерывания таймера0 (временные функции) используется из Wiring (мой НЕ компилируется и не вызывает конфликта с переопределением __vector_23())
3. все макросы и функции библиотеки по-преженму остаются доступны. В т.ч. и временные (согласованы обработчики __vector_23()).

Если ARHAT_MODE пропущен (не определен) ИЛИ определен как 2, то компилируется в "автономном" режиме без подключения Wiring:
1. переопределяются все типовые функции Wiring на макросы. Соответственно номера пинов можно указывать только константно;
2. используется внутренний обработчик прерывания таймера 0. В большинстве случаев это требует переименования файла wiring.c в какой-нибудь *old дабы не мешал. Того, который компилируется! Смотреть детальный вывод ИДЕ при компиляции.

Сделана и частично тестирована "распальцовка" для плат на базе процессоров ATmega48P, ATmega88P, ATmega168P, ATmega328P -- это разного рода Arduino UNO, Pro Mini и пр. (стандарт).

Возможности библиотеки представлены примерами и в коде есть детальные описания чего и как пользовать, что называется "читайте исходник".

Сделан файл keywords.txt.
Arhat109
 
Сообщения: 11
Зарегистрирован: 04 июл 2015, 13:34
programming: c++


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

© 2009-2019 |  О проекте  |  Политика Конфиденциальности  |