Ukládání dat na SD kartu

Odpovědět
ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Ukládání dat na SD kartu

Příspěvek od ohruska » 27 bře 2021, 23:06

Již delší dobu používám pro měření teplot na strojích DS18B20. Naměřené teploty průběžně ve smyčce zobrazuji na displeji. Jednou za 1 minutu otevřu soubor na SD kartě, potom provedu měření teplot jednotlivých čidel a jejich hodnoty zapíšu na SD kartu a zápis ukončím. Takto mě to fungovalo několik let. Nyní jsem potřeboval přidat ještě hodnotu osvitu, z čidla přes I2C.
Vypadalo to že všechno funguje, ale na kartu se zapsalo jen asi 300 hodnot a potom systém zatuhl.
Vyměnil jsem všechny komponenty za nové, ale nikam to nevedlo.
Diagnostikou jsem zjistil, že nelze zapisovat na SD kartu. Nepomohl ani reset arduina.
Pomohlo jen vytáhnout USB konektor a znovu ho zastrčit.
Pokud systém zatuhl, do arduina jsem nahrál program "SdFat info" výsledek byl, že kartu nelze přečíst.
Pomohlo opět jen vytažení a znovu zasunutí USB konektoru.
Domněnka byla, že zaseknutí muže způsobit komunikace přes serial monitor. To se ale nepotvrdilo.
Spíš to vypadá na nějaký konflikt na sběrnici SCI. při čtení teplot z čidel DS18B20.
Udělal jsem to, že všechny změřené teploty nejdříve načtu do řetězce, Potom otevřu soubor, řetězec do souboru zapíšu a soubor uzavřu.
Zatím to vypadá, že takto to funguje.
Setkal se někdo s podobným chování?
Děkuji Ota

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Ukládání dat na SD kartu

Příspěvek od ondraN » 28 bře 2021, 07:58

Při obsluze OW se zakazují přerušení, protože se musí práce se zběrnicí přesně časovat. Jsou to sice krátké úseky, ale mohou ovlivnit práci jiných zařízení, které používají přerušení. Při dlouhém provozu je pak jen otázka času, kdy dojde ke vzájemné interakci a ve většině případů k záseku programu. Jediná možnost je pak činnost obou zařízení důsledně oddělit, což je právě ta část s načtením do proměnných a potom, po skončení měření, jejich zapsání na SD. Vzájemná interakce je dost nevypočitatelná, pokud se v knihovnách používají call back, a ty se používají právě při operacích, kde se něco zapíše a pak se delší dobu čeká na nějaká výsledná data. To je případ jak SD karty, tak i OW sběrnice.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 12 hostů