![]() |
![]() |
#1 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Ускоряем работу Arduino Nano и Arduino UNO
Альтернативная и улучшенная библиотека от Arhat109 Спасибо Bulatovor, за помощь в создании библиотеки CyberLib Благодаря ему теперь библиотека получила описание и поддержку работы с портами в Arduino Mega и Arduino Leonardo Сегодня вооружившись осциллографом, я решил провести наглядное тестирование встроенной фукции digitalWrite(); и работу с портами библиотеки CyberLib Залил ниже приведенный код для проверки встроенной в IDE функции Код:
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); digitalWrite(13, LOW); } Слабовато! Ускоряем, зациклив функцией goto Код:
void setup() { pinMode(13, OUTPUT); } void loop() { label: digitalWrite(13, HIGH); digitalWrite(13, LOW); goto label; } Теперь попробуем с использованием библиотеки CyberLib.h Код:
#include "CyberLib.h" void setup() { D13_Out; //Настраиваем пин D13 на выход } void loop() { label: D13_High; D13_Low; goto label; } Теперь результат впечатляет, скорость работы отличается в 22 раза В следующий раз проверю скорость работы функции чтения порта Спасибо Bulatovor, за то что создал описание функций библиотеки CyberLib PHP код:
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
А если вот так попробовать замерить или при компиляции с библиотекой получается тоже самое? Ну так чтоб убедиться.
PHP код:
|
![]() |
![]() |
![]() |
#3 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Получится тоже самое
Перед компиляцией кода, Препроцессор будет искать все директивы предназначенные для него и начинаются со знака # #define это директива Макро-подстановки, первая запить после команды это идентификатор, вместо нее в код будет подследственна вторая запись(значение) Синтакс #define идентификатор значение |
![]() |
![]() |
![]() |
#4 |
Junior Member
Регистрация: 24.11.2012
Адрес: Новосибирск
Сообщений: 14
Вес репутации: 0 ![]() |
![]()
В библиотеке есть такая запись:
//***************Output Pins************* #define MotorA0 DDRD |=B00010000 #define MotorA1 DDRD |=B00100000 #define MotorB0 DDRD |=B01000000 #define MotorB1 DDRD |=B10000000 Вопрос: 1) MotorA0, MotorA1, MotorB0, MotorB1 - это что ? 2) Правильно ли написать : void setup() { D5_In; D5_High; } для подключения внутреннего подтягивающего резистора у входа D5 ? Последний раз редактировалось fot; 03.03.2013 в 07:20. |
![]() |
![]() |
![]() |
#5 | ||
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#6 |
Junior Member
Регистрация: 24.11.2012
Адрес: Новосибирск
Сообщений: 14
Вес репутации: 0 ![]() |
![]()
Вот бы ещё A0 - A5 перевести,
да с analogRead () командой... А ещё analogWrite(D5), например, для PWM. |
![]() |
![]() |
![]() |
#7 | ||
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Цитата:
Без настройки регистров ADCSRA и ADMUX не обойтись В примере читается порт A0 циклически в фоновом режиме PHP код:
PHP код:
|
||
![]() |
![]() |
![]() |
#8 |
Junior Member
Регистрация: 24.11.2012
Адрес: Новосибирск
Сообщений: 14
Вес репутации: 0 ![]() |
![]()
Влоб попробовал поменять :
PHP код:
A0 - то же самое. А, вот A1 как (D15) - работает. Остальные пины, из нужных (см.setup()) - работают адекватно. Плата Seeeduino, кристалл Atmega 328 . |
![]() |
![]() |
![]() |
#9 |
Junior Member
Регистрация: 24.11.2012
Адрес: Новосибирск
Сообщений: 14
Вес репутации: 0 ![]() |
![]()
A0 мне нужен как цифровой вход , но что-то не хочет он быть D14-м.
Всё равно - большое спасибо за науку! Завтра попробую АЦП оба варианта. Последний раз редактировалось fot; 03.03.2013 в 13:24. |
![]() |
![]() |
![]() |
#10 | |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Проверил D8 у меня работает
Цитата:
|
|
![]() |
![]() |
![]() |
Здесь присутствуют: 6 (пользователей: 0 , гостей: 6) | |
|
|