Avrdos lezáratlan file probléma

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2005. április 22. péntek, 6:00

Avrdos lezáratlan file probléma

Hozzászólás Szerző: Csuhas »

Szervusztok! Belefutottam egy hibába:
Elég nagy programot írok xmega procira. A készülékben SD kártya tárolja az adatokat. Helytelen kezelés esetén ki lehet úgy kapcsolni az eszközt hogy lezáratlan file marad.
Ilyenkor a ott marad a kártyán egy 0 hosszú file, amivel nem tudok mit kezdeni. Nem lehet törölni, nem lehet, ezzel a névvel új fileot létrehozni. Kiemelve a kártyát persze PCn javítható. Kérdés hogyan tudnám a sérült fileot avrdos alatt törölni? ( Bascom 2.0.7.7 avrdos libver: 5.9 )
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Avrdos lezáratlan file probléma

Hozzászólás Szerző: kapu48 »

Esetleg egy újra lezárás nem segít?

Valami hasonló:

Kód: Egész kijelölése

Open Filename For Input As #10

Close #10
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2005. április 22. péntek, 6:00

Re: Avrdos lezáratlan file probléma

Hozzászólás Szerző: Csuhas »

kapu48 írta:Esetleg egy újra lezárás nem segít?
Sajnos nem segít. Az esetek nagy részében elszáll tőle a program.
A megnyitásra 70 hiba kód jön a lezárásra 67 míg a törlésre 71
Bármit próbálok ott a hibás file.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Avrdos lezáratlan file probléma

Hozzászólás Szerző: kapu48 »

Szerintem a legjobb védekezés a megelőzés!
Teszel 1 piros LED-et az SD nyílás fölé!
És jelzed a felhasználónak meddig foglalt a kártya.
Ezen kívül szigorúan lezárod minden írás után!

Valahogy így:

Kód: Egész kijelölése

LEDon
'open the file in BINARY mode
Open "test.bin" For Binary As #2
Put #2 , B                                         ' write a byte
Put #2 , W                                         ' write a word
Put #2 , L                                         ' write a long
Ltemp = Loc(#2) + 1                         ' get the position of the next byte
Print Ltemp ;" LOC"                        ' store the location of the file pointer
Print Lof(#2);" length of file"
Print Fileattr(#2);" file mode"        ' should be 32 for binary
Put #2 , Sn                                 ' write a single
Put #2 , Stxt                                 ' write a string
 
Flush #2                                         ' flush to disk
Close #2
LEDoff
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Avrdos lezáratlan file probléma

Hozzászólás Szerző: Robert »

1, Írás/olvasás után _azonnal_ lezárás.
2, File és FAT kezelés külön memóriaterületen (konfigurálás az avrdos-ban)
3, FAT1 és FAT2 szinkronizálás megengedése
4, SD foglalaton a kártya benn/kártya kinn érzékelő használata
5, Menüből kell a felhasználónak kiválasztani, hogy kártya kivétele (mint USBPen),
6, Ha a file errorra fut: filenév.xxx-re átnevez. Ez lehet futó sorszám.
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2005. április 22. péntek, 6:00

Re: Avrdos lezáratlan file probléma

Hozzászólás Szerző: Csuhas »

Írás után eddig is zártam, olvasásnál talán nem olyan fontos.
A készülékben belül fixen van a kártya. Viszont a készülék adatot gyűjt, hangot, és autokorrelációt számol, azaz nem sok szabadidő van menet közben csukogatni. Ezzel szemben a tápot ki lehet húzni. Sajnos ez tervezési hiba, elektronikusan kellene kikapcsolni a file lezárások után. Ez adottság ezzel kell valahogy együtt élnem. ( Egyébként kezdetben csak powersave állapotba vittem a procit, és lekapcsoltam a kijelzőt illetve az analóg részeket. Csak a watchdog ébresztgetett, és ilyenkor néztem hogy volt-e hosszú gombnyomás ami ébresztett. Ez után rákerült egy "rejtett" kapcsoló ami leválasztott mindent az akkuról a realtime óra kivételével, mert a dokik elfelejtették pár havonta tölteni a készüléket. Pedig csipogással jeleztem hogy ideje tölteni.
Erre letakarták egy textillel a szekrényben hogy ne zavarja őket a csipogás Grrrrr!!!!

A sérült file átnevezése egy számlálós filenévre remek ötlet, holnap ki is próbálom hogy átnevezni lehet-e ezt a sérült fileot. Eddig törölni akartam, de az nem megy.

A legjobb volna valami teszt rutin ami bekapcsoláskor átnézné az a tucatnyi fileot aminek a hibája bajt okoz. ( talán átnézni sem kell mert a nulla hossz jól mutatja hogy hol a baj ) Szóval a hiba detektálás úgy gondolom megy, javítani nem tudom az ilyen fileot.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Avrdos lezáratlan file probléma

Hozzászólás Szerző: Robert »

Sajna itt a file adattartalom írás után a FAT frissítés halt le. Alapban a FAT1 frissül csak, a FAT2 nem!
Én ezt mindig bekapcsolom.

A táp ha elmegy, nincs egy nagy pufferkondi, ami a vészüzemmódig kitart?
Hülye tipp:
5V ágba egy 1uF-s supercap. Az AVR szabad ADC-re a betápról (dióda előttről) feszültségosztó. És ha nincs táp a supercap bőven kitart... Lehet elég 0.1F-s supercap is...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Avrdos lezáratlan file probléma

Hozzászólás Szerző: Robert »

A powersave-ből ébresztés: INT. A fene kel fel körbenézni :), majd a gombnyomás ébreszt...
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2005. április 22. péntek, 6:00

Re: Avrdos lezáratlan file probléma

Hozzászólás Szerző: Csuhas »

Holnap megmérem hogy a bemenő táp elvesztésekor mennyi időm van a proci táp összeomlásáig. Lehet hogy elég a file lezárásra.
Periodikus ébresztgetés egyébként is kell, van pár időhöz kötött tevékenység, meg az akkut is mérni kell néha.
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2005. április 22. péntek, 6:00

Re: Avrdos lezáratlan file probléma

Hozzászólás Szerző: Csuhas »

Megoldódni látszik a gondom. A fő ok egy általam elkövetett banális hiba volt: Egy teszt rutint bennfelejtettem az it hurokban és ott használtam azt a változót amit file handlernek is használtam. No igen ha azt felülírom akkor teljesen jogosan kuszálta össze a fat táblát a lezárási kísérlet. Azért remélem a javasolt megoldások másoknak is hasznára válnak.
Válasz küldése