Электроника - это просто Теоретические и практические вопросы для начинающих электронщиков. |
20.05.2016, 10:24
|
|
Прописка
Регистрация: 03.06.2009
Адрес: С.-Петербург
Сообщений: 148
Сказал спасибо: 112
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
Re: Быстродействие для Arduino
Сообщение от Easyrider83
|
Видали мы их библиотеки. Не удивительно, что производительности им не хватает. Простейшие свистелки еще как-то выходят, а если чего посложнее, уже никак.
|
Да ладно. Причем тут библиотеки. Нужно изначально понимать, что это 8 бит и 16 МГц. Т.е. Ардуины предназначены для определенного класса задач.
Задачи же могут быть и не такими уж и простыми. Например легко реализуется парсер для NMEA с индикацией. Да и другие задачи по автоматизации: Опрос многочисленных датчиков, регулирование и т.п.
Для более сложных задач можно распределять ресурсы по нескольким Ардуинам, строя сеть, например RS485. Или строить сеть с центральным контроллером STM или Raspberry и с периферией или исполнительными устройствами на Ардуинах.
Основное преимущество, что за 180 р. можно купить процессор с 16 GPIO пинами, SPI, I2C, OneWire и UART'ом. А также с доступом ко всей функциональности AVR (mega168, 328, 2560), таймерам, регистрам, ADC (10 бит), PWM и т.д.
И, что и есть самое главное, осуществить сверх быстрый "старт" для человека, знакомого только с основами программирования.
Последний раз редактировалось Wlad1453; 20.05.2016 в 11:21.
|
|
|
|
20.05.2016, 10:28
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Быстродействие для Arduino
За эти же деньги можно купить STM32Discovery, получить 32 бита, возможность запуска RTOS, а про интерфейсы я вообще молчу. Бонусом будет бесплатный realtime debugger прямо на плате.
|
|
|
|
20.05.2016, 10:39
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,091
Сказал спасибо: 2,566
Сказали Спасибо 11,900 раз(а) в 5,973 сообщении(ях)
|
Re: Быстродействие для Arduino
Сообщение от Wlad1453
|
А также с доступом ко всей функциональности AVR
|
Не ко всей, через задницу и неэффективно.
Это если использовать абдуриновские еблиотеки. Лучше обходиться без Абдури.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
20.05.2016, 10:50
|
|
Прописка
Регистрация: 13.03.2007
Сообщений: 135
Сказал спасибо: 7
Сказали Спасибо 37 раз(а) в 22 сообщении(ях)
|
Re: Быстродействие для Arduino
STM -еще тот геморрой! Если вам нужен результат, а не "32 бита и RTOS" то Ардуино вам это даст без гемора и затрат времени.
Работал и с тем и с тем, знаю о чем говорю.
А вообще-то, весь Али сейчас заполонили STM32 Ардуины. Но 32 в них - это сплошное шапкозакидательство. По производительности то же самое, что 8 бит и 16 МГц на старом добром мини или нано.
|
|
|
|
20.05.2016, 10:50
|
|
Прописка
Регистрация: 03.06.2009
Адрес: С.-Петербург
Сообщений: 148
Сказал спасибо: 112
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
Re: Быстродействие для Arduino
Сообщение от Easyrider83
|
За эти же деньги можно купить STM32Discovery, получить 32 бита, возможность запуска RTOS, а про интерфейсы я вообще молчу. Бонусом будет бесплатный realtime debugger прямо на плате.
|
Можно. Истинная правда. Причем тоже сравнительно дешево, поэтому СТМ32 это сильные конкуренты. Но, для работы с СТМ нужна все-таки более высокая квалификация, чем с Ардуиной, где с помощью абсолютно простого IDE можно практически сразу писать что-нибудь осмысленное.
P.S. Кстати, самую дешевую STM32, а именно STM32F103C8T6 я нашел за 350 руб. А это, хотя и не так дорого, но все-таки в два раза дороже Ардуины (nano на mega328 ) в подобном форм-факторе.
Последний раз редактировалось Wlad1453; 20.05.2016 в 11:02.
|
|
|
|
20.05.2016, 11:16
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,091
Сказал спасибо: 2,566
Сказали Спасибо 11,900 раз(а) в 5,973 сообщении(ях)
|
Re: Быстродействие для Arduino
Сообщение от tele_puz
|
Работал и с тем и с тем, знаю о чем говорю.
А вообще-то, весь Али сейчас заполонили STM32 Ардуины. Но 32 в них - это сплошное шапкозакидательство. По производительности то же самое, что 8 бит и 16 МГц на старом добром мини или нано.
|
Сегодня уже давно не первое апреля! И шутки в других темах.
Хотя... Может и свели абдуринщики все плюшки СТМ32 к "хуже восьмибиток"... Вам, наверное, виднее.
Потому и говорится везде и в полный голос: "Абдурина - зло!"
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
Последний раз редактировалось akegor; 20.05.2016 в 11:18.
|
|
|
|
20.05.2016, 11:59
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Быстродействие для Arduino
Ну такое вот сомнительное оправдание своей некомпетентности. А что, пусть так, зато честно.
|
|
|
|
20.05.2016, 12:14
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Быстродействие для Arduino
Сообщение от Wlad1453
|
Нужно изначально понимать, что это 8 бит и 16 МГц.
...
Для более сложных задач можно распределять ресурсы по нескольким Ардуинам, строя сеть, например RS485. Или строить сеть с центральным контроллером STM или Raspberry и с периферией или исполнительными устройствами на Ардуин
|
ДА ЛАДНО?? Фигасе до чего техника дошла, надоже
|
|
|
|
20.05.2016, 12:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,053
Сказал спасибо: 3,041
Сказали Спасибо 3,212 раз(а) в 2,182 сообщении(ях)
|
Re: Быстродействие для Arduino
Сообщение от NewWriter
|
ДА ЛАДНО?? Фигасе до чего техника дошла, надоже
|
А то! "Теперь, со всей этой ***нёй мы попробуем взлететь".
|
|
|
|
20.05.2016, 12:54
|
|
Прописка
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Re: Быстродействие для Arduino
Сообщение от Wlad1453
|
можно реализовать некоторую функциональность RTOS, т.е. проверять состояние датчика и клавиатуры через определенные заданные промежутки времени с помощью стандартных (для Ардуины) функций millis() или micros(). При этом все остальное время, т.е. ресурсы процессора, будет свободно для других задач.
Клавиатуру же (как и некоторые другие устройства), если не хватает пинов, можно реализовать на I2C и микросхеме pcf8574 (50-100 руб)
|
Дисплей можно по I2C, давайте поставим lcd 1602 hd44780 + модуль pcf8574=1.5€+0.8€
Суммарная стоимость 6.8€
Кнопки пока непонятно сколько надо, по крайней мере одна - "старт"
Про алгоритм измерения я не понял что вы предлагаете, опрос?
Опрос датчика можно делать функцией pulseIn библиотеки Wiring:
Код:
|
#include "wiring_private.h"
#include "pins_arduino.h"
/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH
* or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds
* to 3 minutes in length, but must be called at least a few dozen microseconds
* before the start of the pulse.
*
* This function performs better with short pulses in noInterrupt() context
*/
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout)
{
// cache the port and bit of the pin in order to speed up the
// pulse width measuring loop and achieve finer resolution. calling
// digitalRead() instead yields much coarser resolution.
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
uint8_t stateMask = (state ? bit : 0);
// convert the timeout from microseconds to a number of times through
// the initial loop; it takes approximately 16 clock cycles per iteration
unsigned long maxloops = microsecondsToClockCycles(timeout)/16;
unsigned long width = countPulseASM(portInputRegister(port), bit, stateMask, maxloops);
// prevent clockCyclesToMicroseconds to return bogus values if countPulseASM timed out
if (width)
return clockCyclesToMicroseconds(width * 16 + 16);
else
return 0;
} |
Второй способ - отслеживание изменения состояния вывода через механизм внешних прерываний. Я предлагаю попробовать оба варианта и сравнить их. Предложите алгоритм?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:41.
|
|