Максимальная частота опроса

xstramento
Offline
Зарегистрирован: 19.10.2013

Какая может быть максимальная (или прпосто реально достижимая) частота опроса одного аналогового входа по analogRead()  для UNO 16Mhz, если контроллер не занят другими задачами?

 

 

Rednaxela
Offline
Зарегистрирован: 26.08.2013

около 9 кГц

xstramento
Offline
Зарегистрирован: 19.10.2013

Rednaxela пишет:
  около 9 кГц
Вы как определили - подсчитывали по командам и тактам, измеряли практически или читали достоверную статью ?

step962
Offline
Зарегистрирован: 23.05.2011

Волшебное слово "эксперимент".

Вот как-то так:

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() {
}

Запускаем ... получаем:

analogRead 10000 times
Start:  22
Finish: 1142
Speed:  8929 calls of analogRead per sec

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

и 1 МГц максимальная  при инициализации на си не используя analogRead

step962
Offline
Зарегистрирован: 23.05.2011

jeka_tm пишет:

и 1 МГц максимальная  при инициализации на си не используя analogRead

А мужики-то (в Atmel) и не знают...

Все пишут по-старинке:

• 10-bit Resolution
• 0.5 LSB Integral Non-linearity
• ± 2 LSB Absolute Accuracy
13 - 260 μs Conversion Time
• Up to 76.9 kSPS (Up to 15 kSPS at Maximum Resolution)

(раздел 23.1 даташита на ATmega328)

Bonuz
Offline
Зарегистрирован: 22.10.2013

step962 пишет:
Волшебное слово "эксперимент". Вот как-то так:

int i,n,val;
long t1,t2;
double v;
void setup() {
...
  for(i=0;i<10000/*n*/;i++) /*val=*/analogRead(A0);  
...
}
void loop() {
}

так должно быть чуть быстрее. будет ли ?

step962
Offline
Зарегистрирован: 23.05.2011

не будет - экономия в пару тактов незначительна даже по сравнению с размером функции analogRead (десятки тактов процессора), не говоря о самом А-Ц-преобразовании (сотни тактов)