nein, das war die erklärung, warum ich 100 und nicht 128 byte pro packet übertragen habe. die 28 byte könnten sich auf die übertragungsgeschwindigkeit auswirken, sind immerhin fast 1/3 mehr nutztdatenUnd das soll sich auf die Übertragungsgeschwindigkeit auswirken?
Und dabei bin ich dahinter gekommen das die Audioqualität dann am besten ist, wenn der Prescaler auf 16 steht einspricht ~38Khz, wird die Wandlung schneller rauscht es, ist es langsamer sind die Frequenzen verschoben . Ist der Prescaler auf 128(das langsamste) geht gar nix los.
keine ahnung wie groß deine cpu-freq. war. nicht jeder teiler macht da sinn. du hattest doch nur 8bit-auflösung? dann kannst du auch höher als 200kHz gehen - in grenzen.By default, the successive approximation circuitry requires an input clock frequency between 50 kHz and 200 kHz to get maximum resolution.
beim esp gibt es nur einen hw-timer, den darf man nicht ändern, weil der grundlage für alles ist, auch für die wlan übertragungHabe man eine frage zum Timer auf dem ESP. Timer0 und Timer1 sind Hardware Timer?
was heißt jetzt 51 µs? die auflösung ist immer in grenzen möglich, ob man überhaupt in die nähe von 51µs kommt wollten wir ganz am anfang mal testen, sind da aber abgestorben - es sah nicht so aus. timer 0/timer 1 ist was arduino spezifisches, das esp sdk hat nur ets_timer_arm_neWie bewege ich Timer 1 dazu alle 51microsec einen Interrupt zu feuern?
w mit parameter 4 0, dann sind es µs. mit parameter 4 = 1 ms. die entsprechenden defines sind
#define os_timer_arm_us(a, b, c) ets_timer_arm_new(a, b, c, 0) // µs
#define os_timer_arm(a, b, c) ets_timer_arm_new(a, b, c, 1) // ms
ob das mit µs überhaupt geht und wenn ja, mit welcher auflösung der timer selbst läuft war nicht klar.
50 µs klingt aber sehr knapp.
- - - Aktualisiert - - -
Zum timer beim esp:
das 1. ist schon mal
zur auflösung, die ist abhängig davon ob du µs-timing aktiviert hast oder nichtReoccurring timers should not be scheduled more often than every 5 ms.
das µs-timing selbst nach aktivierung:If system_timer_reinit has been called, the timer value allowed ranges from 100 to 0x689D0.
If system_timer_reinit has NOT been called, the timer value allowed ranges from 5 to 0x68D7A3.
unit: microsecond, the minimum value is 0x64, the maximum value allowed to input is 0xFFFFFFF.
beim HW-timer selbst ist erst mal nur die PWM erwähnt, die davon abhängig ist:
ob das wirklich nur die pwm betrifft???APIs in hw_timer.c can not be called when PWM APIs are in use, because they all use the same hardware timer.
zur auflösung:
probieren könntest du also mal• In autoload mode:
- For FRC1_SOURCE, range: 50 ~ 0x199999 µs;
- For NMI_SOURCE, range: 100 ~ 0x199999 µs.
• In non autoload mode, range: 10 ~ 0x199999 µs.
Code:
hw_timer_init(FRC1_SOURCE, 1);
hw_timer_set_func(hw_timer_cb);
hw_timer_arm(50);
ich bin mir nicht sicher, dachte aber bei arduino wird im gegensatz zum sdk erst mal alles in den flash gelegt und im iram-sagment landen nur mit "ICACHE_RAM_ATTR" oder ähnliches gekennzeichnete funktionen.The hardware timer callback function must NOT be defined with ICACHE_FLASH_ATTR.