Das hast du falsch verstanden:
millis()
Natürlich hat eine allgemeine Bibliothek / Framework seine Grenzen. Aber das heißt nicht, dass es nicht geht [
Beispiel], sondern vielmehr, dass man für spezielle Anwendungen wieder LowLevel gehen kann / muss, falls das nicht jemand anderes z.B. in Form einer Bibliothek entwickelt hat.
Das würde ich eher der Qualitätssicherung eines Unternehmens zuschreiben als einer sehr gut getesteten HighLevel-Bibliothek, mit der man viele Fehler gar nicht erst machen kann. Auch hier das [
obige Beispiel]. Im ersten Fall sieht das Setup der Analogsignalmessung so aus:
Code:
pinMode(A0, INPUT);
im zeitoptimierten so:
Code:
ADCSRA = 0; // clear ADCSRA register
ADCSRB = 0; // clear ADCSRB register
ADMUX |= (0 & 0x07); // set A0 analog input pin
ADMUX |= (1 << REFS0); // set reference voltage
ADMUX |= (1 << ADLAR); // left align ADC value to 8 bits from ADCH register
// sampling rate is [ADC clock] / [prescaler] / [conversion clock cycles]
// for Arduino Uno ADC clock is 16 MHz and a conversion takes 13 clock cycles
//ADCSRA |= (1 << ADPS2) | (1 << ADPS0); // 32 prescaler for 38.5 KHz
ADCSRA |= (1 << ADPS2); // 16 prescaler for 76.9 KHz
//ADCSRA |= (1 << ADPS1) | (1 << ADPS0); // 8 prescaler for 153.8 KHz
ADCSRA |= (1 << ADATE); // enable auto trigger
ADCSRA |= (1 << ADIE); // enable interrupts when measurement complete
ADCSRA |= (1 << ADEN); // enable ADC
ADCSRA |= (1 << ADSC); // start ADC measurements
Falls ein Fehler vorliegt, wo finde ich ihn schneller?