Vaikuttaako dynon toimintaan jos nuo Arduinolta/ESP:ltä lähtevät datat puskuroidaan johonkin ja lähetetään siitä PC-softalle? Vaikka joku Raspberry tuohon väliin ja siihen FIFO. Siinä voi sitten tutkia tukehtuiko PC pullaan ja jos niin Heimlichin jälkeen työnnetään sama pulla uudelleen. Pysyy aikaleimat reerassa ja sarjaliikenne saa työntää torven täydeltä.
EDIT: Tai saa sen FIFO:n sinne ESP:llekin, mutta Arduino voi olla kovilla homman kanssa.
Niin vähän ihmetyttää, että mikä on tarve lähettää kaikki data samassa paketissa. AD-muunnin on usein kun tarkkuutta vaaditaan, hiukan hidas. Periaatteessa voisi olla niinkin että olisi eri prossu hoitamassa anturit tai esim. joka neljännessä viestissä anturitietojen lähetys (tietämättä lähestystaajuutta)
Edelleen penäisin sitä että käytetään hardwarelaskuria mikrokontrollerissa siihen taajuuslaskentaan, keskeytystä voi käyttää kun laskuri pyörästhää, laskuri sidottu kontrollerin kellotaajuuteen jonka lähde toivottavasti kide joka tarkka.
Jos mikrokontrolleri laskisi taajuudet niin viiden datakentän sijaan riittäisi laskettavaksi kaksi? Lienee koodillinen toteutus liian raskas, kyllähän luulisi että nuo hommat hoitais jo 4MHz prossun kellotaajuudella..
Täs on just teillä molemmilla paljon sitä mitä itellä. Eikä ole tarkoitus näitä toteutuksia vertailla/arvostella (ja alfredin aikaisempi keskeytyksien ulostaminen oli hyvä).
Mua edelleen haittaa isosti tuo keskeytyshässäkkä. Etenkin kun ajetaan keskeytyksiä aikaan ja oikeaan keskeytykseen. Näiden keskinäinen prioriteetti ja mahdolliset ulkopuoliset keskeytyksien kiellot?
Näihin sitten vaikuttaa sekin, että kuka ja mikä laskee ajat aikasuhteet, millä syklillä (nyt osin keskeytyksillä).
Sit tosiaan on tuo sarjaportti, mikä ainakin itselle on arduinossa/esp:ssä tuntematon rajapinta. Writeln ja flush. Jääkö nuo prossun hoidettaviksi? Esim. taas 8051 kanssa sarjaliikennepuskurista on huolehdittava koska sarjaliikenne on ajallisesti kallista (vaikka baudeja olisi).
Millä nuo (useamman coren) prossun ytimet synkkaa ja keskustelee keskenään? Mikä on järkevää tiedonvaihtoa ja mikä taas toisaalta ihan turha?
Jos SimpleDyno paketti-arkkitehtuurina voidaan unohtaa, niin mä edelleen painottaisin sitä, että lähtöpäästä (arduino/esp) ajetaan dataa sarjaporttiin mahdollisimman paljon ja tämän prosessointi tehdään sitten tietokoneella.
Keskeytyksien kautta laskeminen on muutenkin jo kallista, ja tuossa lasketaan aikaa keskeytyksien kautta, jonka lisäksi vielä sarjaportille keskeytyksiä, niin on tosiaan muutaman kymmenen rivin koodi aika keskeytyksissä aina. Pitäisi oikeasti muodostaa jotain järkevää eikä aikaleimaa ja aikaleimaeroja. En tiedä miten arduino/esp hoitaa sarjaportin keskeytykset, mutta yleensä etenkin sarjaporteilla ovat varsin kalliita.
Ja tuollaisessa staattisemmassa epä-multiprosessoinnissa pitäisi sen kuormittamattoman prossun/coren tietää mitä sillä kuormitetulla on menossa. Helposti ajaa tuossa tilanteessa toisen prossun/coren tappiin ja toisella ei ole kuormaa kun tämä kuormitettu prossu ei pysty sitä jakamaan.
(viittaukset arduino-softaan perustuu ihan netistä löytyneisiin koodeihin mitä oon yrittänyt ymmärtää)