Bascom 2.0.5.0 és az új SD kártya / FAT kezelő

Bascom, Wiring és Arduino frissítések, hátterei esetleges hibái
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3212
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. október 31. szerda, 18:22

A FileDelete rutin az nincsen megírva sajnos!

De ha már úgyis körbeforgó adat tárolást akarsz megvalósítani, felülírhatod a már nem szükséges fájl adatait, az újabbal.

Nem ismerem a feladatot, de Pl.:
Havi bontásban lehetnének: Adatok1 -> Adatok31 nevű fájlok, és dátum szerint mindig az aktuálisat nyitod meg írásra.
:idea:

Eben csak az a bibi, ha nagyobb az új fájl mérete, mint a régi.
Mert nem tudom, ezt le tudja e kezelni a KokkeKat_FAT-free_SD_lib_code.bas.
Vagy felül írja az utána következő fájlt?
(Lehet, hogy nem véletlenül maradt ki a fájltörlés?)
:?:

Bár fájl hozzá írás parancs van, (Example_APPEND_TO_FILE.bas) akkor elvileg megkel keresnie a szabad szektort, ha töredezet lesz a helyfoglalás.

Tesztelni kel!

8)
A hozzászólást 2 alkalommal szerkesztették, utoljára kapu48 2012. október 31. szerda, 18:44-kor.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9768
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. október 31. szerda, 18:34

A FAT alatt a törlés nem azt jelenti, hogy az első karaktere szigma jel lesz?

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3212
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. október 31. szerda, 20:36

Azt hiszem átgondolatlan volt az előző javaslatom!

Mert nincsen ellenőrzés, hogy létezik már adott nevű fájl.
Így csak kapsz még 1 Directory bejegyzést ismétlődő névvel.
:?

(A DOS-os file kezelés minden Extra szolgáltatásai itt nem fértek bele a szűkös memóriába.) :(

Avatar
ekkold
DrótVégénSzéndarab
Hozzászólások: 16
Csatlakozott: 2012. szeptember 25. kedd, 6:00

HozzászólásSzerző: ekkold » 2012. november 6. kedd, 13:07

Ujabb problémába futottam bele. Amikor a log fájlba a következő bejegyzést írja a program (append) kb 0,5 másodpercig tat, azonban ha a file mérete 0,5M körüli akkor már 4...5 másodperc megy el vele, egy 6Mb-os fájlhoz hozzáírni pedig kb 1 percre lefoglalja a processzort.
Most ez egyszerűen ennyire lassú lenne , vagy valamit nem jól csinálok?

Írtam egy szubrutint ami megnézi, hogy létezik-e a file, ha nem akkor létrehozza, ha igen akkor hozzáfűz (mint a klasszikus dos-os megnyitás), majd a dátumból generált fájlnévvel hívom meg.

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

Sub Fileiras2(byref Filenme As String)                      'tempstr buffer kírása a fájlba (egymasra definialt string <-> byte tömb)
Local File_letezik As Byte                                  '1-ha a file létezik,  0-ha nem
Local I As Word                                             'lokális ciklusváltozó
File_letezik = 0                                            'ha a file már létezik akkor 1 lesz                                          '
I = 1                                                       'ciklusváltozó  kezdőérték

'megnezzük létezik-e már a file
Sdstatus = 0 : Sddirectorymode = 0 : Sdclusterd = 0 : Sdsecincluster = 1 : Sdbufferpos = 1
Sdentrynames = Filenme                                      ' File name, upper case only
If Sdc_fs_ok = 1 Then
Gosub Sdfindentryindirectory                                ' ha a filerendszer elérhető
If Sdstatus = 48 Then File_letezik = 1                      ' File found

'Fileírás adatai
Sdentrynames = Filenme
Sdyear = 2011 : Sdmonth = 2 : Sdday = 16 : Sdhours = 00 : Sdminutes = 30 : Sdseconds = 32 : Sdstatus = 0
    Gosub Sdreadfsinfo
    If Sdstatus = 0 Then

         If File_letezik = 0 Then                           'A file még nem létezik
            Sdcreatemode = 0 : Sdstartdirclusterd = 0       ' Create file
            Gosub Sdcreatefileordir                         ' Find free FAT entry, find free directory entry, and save the directory entry back to the SD card
            For I = 1 To 512                                'sdbuffer nullázása
                 Sdbuffer(sdtempw2) = 0
            Next I

         Else                                               'A file már létezik
            Gosub Sdpreparetoappend                         'folytatás előkészítése
         End If
                                                             'A file elérhető, írhato....
     If Sdstatus = 0 Then
           Sdclosefile = 0 : I = 1
           While Sdclosefile = 0 And I < Puffermeret1 And Tempbyte1(i) > 0       'Tempbyte puffer kiirása egyesével
               Sdbyterw = Tempbyte1(i)
               Gosub Sdwritebyte
               Incr I
           Wend
           Gosub Sdfinalizeafterwriting                     ' After writing the last byte, close the file
           Gosub Sdwritefsinfo                              ' Save the updated fsinfo variables back
           End If
   End If
End If
End Sub


Ez működik, de lassú, és ritkán filerendszer hiba keletkezik (win simán javítja).

Avatar
ekkold
DrótVégénSzéndarab
Hozzászólások: 16
Csatlakozott: 2012. szeptember 25. kedd, 6:00

HozzászólásSzerző: ekkold » 2012. november 8. csütörtök, 14:20

Kipróbáltam az AVRDOS-t. Sokkal gyorsabb! Azonban alapból az MMC.LIB-el csak a 2GB-os és kisebb SD kártyák működnek. Tud valaki segíteni az MMCSD_HC.LIB beszerzésében?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9768
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. november 8. csütörtök, 18:11

www.mcselec.com

De NEM támogatott a nagyobb kártya....
+ AVR-DOS: Not for businesss!

Avatar
ekkold
DrótVégénSzéndarab
Hozzászólások: 16
Csatlakozott: 2012. szeptember 25. kedd, 6:00

HozzászólásSzerző: ekkold » 2012. november 8. csütörtök, 18:15

Ugy tudtam hogy a 2Gb felettiek az SDHC kártyák, ha nem támogat nagyobbat akkor mire való az MMCSD_HC.LIB ? Miben tud többet, vagy miben más mint az amit eleve tartalmaz a bascom?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9768
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. november 8. csütörtök, 18:32

Crosspostért : :twisted:

A nagyobb kártyákhoz _utólag_ hackelték, de nem lett teljeskörűen tesztelve!

Avatar
ekkold
DrótVégénSzéndarab
Hozzászólások: 16
Csatlakozott: 2012. szeptember 25. kedd, 6:00

HozzászólásSzerző: ekkold » 2012. november 8. csütörtök, 19:52

Robert írta:....nem lett teljeskörűen tesztelve!
Nemsokára kiderül, (már ha sikerül beüzemelni) hogy jó-e arra amire nekem kellene. Igazából nincs szükségem 2Gb-nál több adat tárolására, csakhogy előbb-utóbb valószinüleg nem lehet majd kapni "ilyen kicsi kapacitású" SD kártyákat (mint ahogy pl. a 4GB altti pendrive már manapság is ritka) Még az is lehet, hogy több particióra osztom az SDHC-t, és az első partíció amire írok 2Gb alatti lesz....

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9768
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. november 8. csütörtök, 19:56

Csinálj teszteket. Fontos: a nagy spi sebességet nem bírja a sdhc köyvtár!
Így SW alapú, vagy clockrate=16 vagy ennél nagyobbat kell megadni!

Avatar
ekkold
DrótVégénSzéndarab
Hozzászólások: 16
Csatlakozott: 2012. szeptember 25. kedd, 6:00

HozzászólásSzerző: ekkold » 2012. november 8. csütörtök, 20:58

Használtad már ezt a könyvtárat? Mik a tapasztalataid ezzel?

Ha már nálam a HW SPI lábakon lóg az SD foglalat, akkor hardweresen használnám. Jelenleg 14,7xxxMHz-es a quartz és clockrate=4 beállításban teljesen jól működött az MMC könyvtárral. Ugyanilyen beállítás mellett a KokkeKat append-je (bár működött, de) használhatatlanul lassú volt.
Meglátjuk az SDHC-vel mire jutok.... Mindenesetre megfogadom a tanácsod.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9768
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. november 8. csütörtök, 21:33

HW lábakon van nálam is. Így akár HW, akár SW alapon is használhatod...
Nálam 16 MHz-n fut ált a chip.
Néha FAT hibára futottam clockrate=4 esetén... Clockrate=16 és megjavult...

Avatar
ekkold
DrótVégénSzéndarab
Hozzászólások: 16
Csatlakozott: 2012. szeptember 25. kedd, 6:00

HozzászólásSzerző: ekkold » 2012. november 8. csütörtök, 22:41

Robert írta:....Néha FAT hibára futottam clockrate=4 esetén... Clockrate=16 és megjavult...
Közbenső értékeket (5...15) nem próbáltál? Jó lenne tudni hol a határ, hogy ne menjen el a szükségesnél több idő az írásra.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9768
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. november 8. csütörtök, 22:53

Nono!
Nincs közbenső érték. Lsd bascom súgó.

Kettő kitüntetett hatványai: 1,8,16,64... (fejből írtam)

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3212
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. november 9. péntek, 12:32

Nem értem mért OF-oltok?

A dosnak van külön topikja!
Ez itt inkább a: KokkeKat-ről szólna!
:roll:


Vissza: “Bascom/Arduino/Wiring frissítések”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég