Максимальная частота опроса
- Войдите на сайт для отправки комментариев
Чт, 14/11/2013 - 14:54
Какая может быть максимальная (или прпосто реально достижимая) частота опроса одного аналогового входа по analogRead() для UNO 16Mhz, если контроллер не занят другими задачами?
около 9 кГц
Волшебное слово "эксперимент".
Вот как-то так:
int i,n,val; long t1,t2; double v; void setup() { Serial.begin(9600); n=10000; Serial.print("analogRead "); Serial.print(n); Serial.println(" times"); t1=millis(); for(i=0;i<n;i++) val=analogRead(A0); t2=millis(); v=1000.0*n/(t2-t1); Serial.print("Start: "); Serial.println(t1); Serial.print("Finish: "); Serial.println(t2); Serial.print("Speed: "); Serial.print(v,0); Serial.println(" calls of analogRead per sec"); } void loop() { }Запускаем ... получаем:
и 1 МГц максимальная при инициализации на си не используя analogRead
и 1 МГц максимальная при инициализации на си не используя analogRead
А мужики-то (в Atmel) и не знают...
Все пишут по-старинке:
(раздел 23.1 даташита на ATmega328)
int i,n,val; long t1,t2; double v; void setup() { ... for(i=0;i<10000/*n*/;i++) /*val=*/analogRead(A0); ... } void loop() { }так должно быть чуть быстрее. будет ли ?
не будет - экономия в пару тактов незначительна даже по сравнению с размером функции analogRead (десятки тактов процессора), не говоря о самом А-Ц-преобразовании (сотни тактов)