та складність використання деяких функцій мікроконтролера
як раз складнощів тут нема, бо орієнтоване на непрограміста, біолога, гітариста...
- обмеження в максимальній роботі
Купуєш плату за приблизно 95 гривень, ти береш плату для роботи в 8 MHz, якщо тобі потрібно стабільно працювати в 16 MHz, то вже купи плату за 250 грн.
1- це залежить не вiд плати, а вiд типу МК, встановленого кварца та напруги живлення. Дивись даташит.
2- ситуація така, що сучасні AVR можуть працювати і на гарантованих 16 МГц, досить кварц поміняти.
3- щодо ціни - на алi нано з 16 МГц десь вiд ~ 45 грн з безкоштовною доставкою за півтора-два тижні.
- обмеження в швидкості
...
приклад був простий digitalWrite(13, LOW)
це обмеження макросів середовища виконання, ніхто не забороняє прискорювати роботу Сі-викликами, продовжуючи працювати в тій же Arduino IDE (якщо вже вимога така). Зроблено це не тому, що IDE така погана або програмісти погані, а тому що саме рішення орієнтоване на масове побутове застосування, де швидкості не потрібні. Для управління сервою або світлодіодом моргнути цілком вистачить.
Наприклад замість 2 мілісек digitalRead () можна відразу написати if (PINA == B00000001) {... і прискоритися до 19 мкс. Аналогічно з analogWrite(), яка дає стандартним засобом PWM максимум = 480-490 Гц при 16 МГц. Пишемо прямо в рідному середовищі:
void setup()
{
TCCR1B = TCCR1B & 0b11111000 | 0x02;
TCCR2B = TCCR2B & 0b11111000 | 0x02;
і вже частота PWM аж 4 кГц. І вже точно ніхто не забороняє прямо в рідному середовищі Arduino IDE писати на ASM:
ldi r16,(1<<CS00) ;
out TCCR0B,r16
Або ось читання АЦП рідним макросом 110 мкс, а прямим вже ~18 мкс (стягнуто з Хабра):
#define FASTADC 1
// defines for setting and clearing register bits
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
void setup() {
int start ;
int i ;
#if FASTADC
// set prescale to 16
sbi(ADCSRA,ADPS2) ;
cbi(ADCSRA,ADPS1) ;
cbi(ADCSRA,ADPS0) ;
#endif
Serial.begin(9600) ;
Serial.print("ADCTEST: ") ;
start = millis() ;
for (i = 0 ; i < 30000 ; i++)
analogRead(0) ;
Serial.print(millis() - start) ;
}
Причому ресурсів Arduino (AVR) вистачає для розрахунку FFT realtime у звуковому дiапазонi:
https://www.youtube.com/watch?v=bFXTujPKTpc
і це не примітивний метод п'яти ординат.
0xDADA11C7 написав:Я не звязуюсь з Ардуїно через її гіпстерську дегенеративну спільноту, бо як почитаєш їхні потуги -- блювати хочеться
негоже всіх під одну гребінку. А потім, як раз саме різноманітність професій розробників, які використовують модуль дає тільки суцільні плюси, бо дозволяє розширювати свій кругозір іншим розробникам в суміжних дисциплінах.
При виконанні будь-якої роботи не можна тупо писати тiльки код і бути просто програмістом, потрібно розуміти техпроцес під який пишеш ПО і відчути його. Саме тому таке різноманіття інженерних спеціалізацій, включаючи технологiв.
Не потрібно дивитися на модуль як невідповідний для промислового використання, там той же МК, що і в багатьох промислових контролерах, а то і крутіше за можливостями. Ось наприклад мій промисловий графічний термінал оператора:
На чому думаєте зроблений? На мега128 (1 2), iнтерфейси є додатковi і виконання пиловологозахищене корпусу лише )
А ось Segnetics SMH-2010 зi власним середовищем графічної розробки типу на FBD як у SCADA (SMLogix):
На чому? На мега128, а це вже древнiсть.
Резюмуючи
На Dou я вже розпинався на цю тему, не подобається AVR і не вистачає ресурсів? Arduino є на ARM-ах і Intel, так-так з Linux (Arduino Yun від RS Components з додатковим чіпом Atheros AR9331 і бездротовим стеком OpenWrt. А ще є Maple і Maple-mini на STM32F103). Моє ставлення до Arduino цілком собі прагматичне, як й до будь-якого iншого кубiбоарду. Є інструмент, є бюджет та переваги - можна використовувати. Хоча для серйознiших вісокошвідкісніх проектів волію FPGA, хоч це й вельми спеціфічній напрямок.
Цю тему я хотів почати писати в розділі схемотехніка, електроніка, але більше хотілосяб обговорити, чим нарікати.
темi якраз мiсце в залiзяках та электронiцi, бо вона для таких обговорень й створена. Нiчого в флудороздiлi тонути.