UniversalScientificTechnologies / LABDOS01

Laboratory semiconductor dosimeter-spectrometer with USB-C interface
https://docs.dos.ust.cz/labdos/LABDOS01
GNU General Public License v3.0
6 stars 1 forks source link

Dead time reduction #13

Open kaklik opened 1 year ago

kaklik commented 1 year ago

Aktuální implementace minimalizuje mrtvou měřící dobu tím způsobem, že hromadí co nejvíce dat v operační paměti a z nich pak vytvoří datovou zprávu kterou buď rychle odešle na UART, nebo uloží na SDkartu.

Takový přístup je do značné míry suboptimální, protože jednak neminimalizuje mrtvou dobu měření úplně a zároveň ji prodlužuje na těžko definovanou dobu, která závisí na měřených datech.

Navíc to komplikuje zacházení s formátem výstupních dat https://github.com/UniversalScientificTechnologies/LABDOS01/issues/12

Teoreticky by ale mrtvou dobu mělo jít výrazně omezit vhodnou obsluhou UART. Protože, jednak lze nastavit různou délku bufferu pro UART. Například bootloader pro mightycore má tyhle flagy, které tu velikost bufferu řídí. Velikost bufferu 128 bytes by měla stačit na většinu zpráv, kromě spektrogramů, které se posílají jen zřídka. Navíc u spektrogramů by možná bylo žádoucí, aby zprávy byly nějak komprimovány, protože zpráva spektrogramu obsahuje většinou samé nuly.

Zároveň by mělo být možné UART obsluhovat v časech, kdy probíhá ADC převod. Protože při vzorkování ADC 125 us má MCU při 8 MHz k dispozici 1000 instrukcí mezi každou hodnotou ADC. Za tu dobu může být odesláno celých 14 bitů na UART rychlostí 115200.