AVR-DOS
Ígéret szépszó:
ConfigMMC.bas bemásolni abba a könyvtárba, ahol a saját progink (xxxxxx.bas) található.
Ebben lehet beállítani, hogy soft vagy hard SPI-nk van.
Nekem a hardveres lábakon volt az MMC, de csak úgy működött, hogy SOFT SPI-állítottam.
MOSI MISO SCK és a CS kell pontosan megmondani, hogy hova tettük:
Az MMC.lib -et be kell másolni a c:\Program Files\MCS Electronics\BASCOM-AVR\LIB\ könyvtárba:
A Config_AVR-DOS.bas -t bemásolni abba a könyvtárba, ahol a saját progink (xxxxxx.bas) található.
Ha M32 procit használunk akkor ebben a fileban a követketőket át kell írni:
Const Cfilehandles = 1
Const Csepfathandle = 0
És máris elég az SRAM
Az MMC-t le kell formázni FAT32/512 -re kártyaolvasóban és a "temp.txt"-t
létrehozni.
Tapasztalat:
Csak addig érdemes nyitva hagyni a file-t a program futása közben
amíg írunk vagy olvasunk belőle.
Mert ha valami oknál fogva megáll a progam futása
pl: (áramszünet, fagyás, esetleg kivesszük az MMC-t)
akkor minden adat ami a file nyitás óta került a file-ba elveszik.
Én megcsináltam azt, hogy a készülékben HOT-SWAP MMC-t lehet cserélni.
Az MMC elmegy 3V-on is (nem kell pontosan 3.3V)
A hardveres rész fentebb kitárgyalva
Remélem nem felejtettem el semmit.
ConfigMMC.bas bemásolni abba a könyvtárba, ahol a saját progink (xxxxxx.bas) található.
Ebben lehet beállítani, hogy soft vagy hard SPI-nk van.
Nekem a hardveres lábakon volt az MMC, de csak úgy működött, hogy SOFT SPI-állítottam.
MOSI MISO SCK és a CS kell pontosan megmondani, hogy hova tettük:
Az MMC.lib -et be kell másolni a c:\Program Files\MCS Electronics\BASCOM-AVR\LIB\ könyvtárba:
A Config_AVR-DOS.bas -t bemásolni abba a könyvtárba, ahol a saját progink (xxxxxx.bas) található.
Ha M32 procit használunk akkor ebben a fileban a követketőket át kell írni:
Const Cfilehandles = 1
Const Csepfathandle = 0
És máris elég az SRAM
Az MMC-t le kell formázni FAT32/512 -re kártyaolvasóban és a "temp.txt"-t
létrehozni.
Kód: Egész kijelölése
$regfile = "M32def.dat"
$hwstack = 128
$swstack = 128
$framesize = 128
$prog &B00111111 , &B00111111 , &B11010001, '8Mhz Quartz, EEprom nem törlődik(FSB3) MEGA32
$crystal = 16000000
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portc.5 , Db7 = Portc.4 , E = Porta.6 , Rs = Porta.7
Config Lcd = 16 * 2 'LCD típusa
Config Clock = Soft
Config Porta = &B11011111 'Input=0 Output=1
Porta = &B11011111 'felhúzó ellenálással=1
Config Portc = &B11110000 'Input=0 Output=1
Portc = &B11111111 'felhúzó ellenálással=1
Config Portd = &B11111111 'Input=0 Output=1
Portd = &B01000000 'felhúzó ellenálással=1
Dim Mmc_stat As Bit
Dim Hibakod As Byte , Btemp1 As Byte
'Kártya init
$Include "Config_MMC.bas"
Mmc_stat = 0
Gbdriveerror = Driveinit()
Hibakod = Gbdriveerror
If Gbdriveerror = 0 Then
$Include "Config_AVR-DOS.BAS"
Btemp1 = Initfilesystem(1)
If Btemp1 = 0 Then
Mmc_stat = 1 'Kártya OK
End If
End If
Cls
Upperline
If Mmc_stat = 1 Then
Lcd " MMC rendben! "
Else
Lcd " MMC hiba!"
Lowerline
Lcd "Hibakod: " ; Hibakod
End If
Wait 3
Do
'osztunk, szorzunk, gyökötvonunk, kiszámoljuk ami kell
'és ha ez megvan akkor:
If Mmc_stat = 1 Then
Open "temp.txt" For Append As #1 'File nyitás
Print #1 , "Valami" 'Írás a file-ba
Close #1 'File lezárása
End If
Loop
Csak addig érdemes nyitva hagyni a file-t a program futása közben
amíg írunk vagy olvasunk belőle.
Mert ha valami oknál fogva megáll a progam futása
pl: (áramszünet, fagyás, esetleg kivesszük az MMC-t)
akkor minden adat ami a file nyitás óta került a file-ba elveszik.
Én megcsináltam azt, hogy a készülékben HOT-SWAP MMC-t lehet cserélni.
Az MMC elmegy 3V-on is (nem kell pontosan 3.3V)
A hardveres rész fentebb kitárgyalva
Remélem nem felejtettem el semmit.
Na, akkor már látom, hol buktam el annakidején a dolgot:
-Config Clock-ról sosem hallottam, így az kimaradt a programból.
-Nincs kártyaolvasóm, csak a fényképezőgép, de hogy az milyen FAT-et csinál formázáskor, arról fogalmam nincs (a user manual is mélyen elhallgatja ezt az infót). Valószínűleg itt is gond lehetett.
(Hogy ezt a FAT-es dolgot miért nem küszöbölték már ki, azt azért nem teljesen értem...)
Köszönet az összefoglalóért!
-Config Clock-ról sosem hallottam, így az kimaradt a programból.
-Nincs kártyaolvasóm, csak a fényképezőgép, de hogy az milyen FAT-et csinál formázáskor, arról fogalmam nincs (a user manual is mélyen elhallgatja ezt az infót). Valószínűleg itt is gond lehetett.
(Hogy ezt a FAT-es dolgot miért nem küszöbölték már ki, azt azért nem teljesen értem...)
Köszönet az összefoglalóért!
Köszönjük szépen!
A FATról:
Lehet ugye FAT32 illetve FAT16 (ill a FAT12 régebben). Mindnek megvan a maga korlátja.
FAT12: floppy méret, 16 MB-ig. DOS 3.3 használta.
FAT16: (most már)KisHdd méret 2 GB-ig, Win3.1 kora (Win95OSR1-ig)
FAT32: Univerzális tároló, minden oprendszer ismeri. Méret sok:).
Ha megoldható, akkor 512 byte legyen a cluster mérete (memóriafoglalás a szűkös SRAMból. A PC illetve a fényképezők FAT 16 vagy FAT32re formáznak (fényképező nálam FAT16-ra (2 GB-s memóriakártya limit)).
Kiküszöbölés: Itt mikrokontrollerről beszélünk, nem PC!
Azért itt a filmletöltés és egyebek nem létszükséglet. Azaz az adattárolást 2GB-s korlátja elég meredek már szerintem. Ennyi adatot átküldeni valamin (sorosport/USB, vagy ethernet is szép mennyiség....
Valamint programozásilag azért egy FAT az publikált és (viszonylag) egyszerű. Az NTFS írása Linux alapon (sokkal nagyobb fejlesztői kör, szükségesebb elvárás) is több évet vett igénybe - a dokumentáció hiányossága miatt...
A FATról:
Lehet ugye FAT32 illetve FAT16 (ill a FAT12 régebben). Mindnek megvan a maga korlátja.
FAT12: floppy méret, 16 MB-ig. DOS 3.3 használta.
FAT16: (most már)KisHdd méret 2 GB-ig, Win3.1 kora (Win95OSR1-ig)
FAT32: Univerzális tároló, minden oprendszer ismeri. Méret sok:).
Ha megoldható, akkor 512 byte legyen a cluster mérete (memóriafoglalás a szűkös SRAMból. A PC illetve a fényképezők FAT 16 vagy FAT32re formáznak (fényképező nálam FAT16-ra (2 GB-s memóriakártya limit)).
Kiküszöbölés: Itt mikrokontrollerről beszélünk, nem PC!
Azért itt a filmletöltés és egyebek nem létszükséglet. Azaz az adattárolást 2GB-s korlátja elég meredek már szerintem. Ennyi adatot átküldeni valamin (sorosport/USB, vagy ethernet is szép mennyiség....
Valamint programozásilag azért egy FAT az publikált és (viszonylag) egyszerű. Az NTFS írása Linux alapon (sokkal nagyobb fejlesztői kör, szükségesebb elvárás) is több évet vett igénybe - a dokumentáció hiányossága miatt...
Nincs mit!
Néhány hét küzdemle.
Biztos lehet az AVR-DOS- szal is létrehozni file-t de ezt nem feszegettem.
Azért FAT32 mert a windows csak FAT32 alatt engedi az 512 cluster méretet.
Ja az kihagytam a tapasztalatok közül, hogy -16C fokban is működött a cucc.
Néhány hét küzdemle.
Természetesen a PC kell kátryaolvasóban formázni, és az üres file-t létrehozni.Ezt az M32 végzi, vagy a PC-n hozod létre (hogyan)?
Biztos lehet az AVR-DOS- szal is létrehozni file-t de ezt nem feszegettem.
Azért FAT32 mert a windows csak FAT32 alatt engedi az 512 cluster méretet.
Ja az kihagytam a tapasztalatok közül, hogy -16C fokban is működött a cucc.
Némi teszt:
Háttér: M128 (5V) + SD kártya (3.3V TS2950 stabIC) + feszkonverter 3k3+2k2 ellenállásokkal.
Tapasztalat:
- 2 GB memóriakártyát nálam a fényképező úgy formázza, hogy egyből kezeli az AVR-DOS (nagyobb kártyám nincsen).
- a filekezelő és egyéb rutinok jól vannak megírva, néhány helyen config_flashcard_mmc.bas van a config_mmc.bas helyet.
- flashmemóriát eléggé rendesen foglalja...
Háttér: M128 (5V) + SD kártya (3.3V TS2950 stabIC) + feszkonverter 3k3+2k2 ellenállásokkal.
Tapasztalat:
- 2 GB memóriakártyát nálam a fényképező úgy formázza, hogy egyből kezeli az AVR-DOS (nagyobb kártyám nincsen).
- a filekezelő és egyéb rutinok jól vannak megírva, néhány helyen config_flashcard_mmc.bas van a config_mmc.bas helyet.
- flashmemóriát eléggé rendesen foglalja...
Filerendszer tesztek....
Környezet: M128+2GB SD (133x takeMS)+5V-s rendszer, ellenállásosztós illesztő+HW SPI; Bascom 1.11.9.1, beépített AVRDOS (lib. ver.: 55).
- A kártyán oldalt a Lock az csak a foglalatnak jelez vissza, a belső elektronikát nem hatja meg....
- NTFSre formázva : 20-as hiba (FileSystem error)
- FAT32-re formázva : működik, de elbaltázza a filebejegyzést; PC kártyaolvasó nem is látja
- FAT(FAT16): működik, file írás-olvasás megy.
Az AVR-DOS honlapon is a ver. 5.5 van a legfrisebbnek írva!
Nagy tesztre a fsinterpreter.bas a legjobb, ebben szinte minden filekezeléssel kapcsolatos dologra van belső utasítás. Lefordítva ~41 kbyte!
Környezet: M128+2GB SD (133x takeMS)+5V-s rendszer, ellenállásosztós illesztő+HW SPI; Bascom 1.11.9.1, beépített AVRDOS (lib. ver.: 55).
- A kártyán oldalt a Lock az csak a foglalatnak jelez vissza, a belső elektronikát nem hatja meg....
- NTFSre formázva : 20-as hiba (FileSystem error)
- FAT32-re formázva : működik, de elbaltázza a filebejegyzést; PC kártyaolvasó nem is látja
- FAT(FAT16): működik, file írás-olvasás megy.
Az AVR-DOS honlapon is a ver. 5.5 van a legfrisebbnek írva!
Nagy tesztre a fsinterpreter.bas a legjobb, ebben szinte minden filekezeléssel kapcsolatos dologra van belső utasítás. Lefordítva ~41 kbyte!
Új fájl létrehozása:
Meglévő fájlhoz hozzáírás (új adatok):
Fájl meglétének ellenőrzése:
Filechk egy sztring típusú változó. Ha értéke 0, akkor nincs meg a fájl.
Kód: Egész kijelölése
Open "akármi" For Output As #1
Kód: Egész kijelölése
Open "akármi" For Append As #1
Kód: Egész kijelölése
Filechk = Dir( "fájl.kit")
If Len(filechk) = 0 Then...
FAT16/32 kezelése során, ha a SD adatai sérülnek, akkor nem tud tovább írni. Még a Win chkdsk-ja sem rakja helyre....
A konfig állományokban érdemes bekapcsolni, hogy
- mindkét FAT-t frissítse
- Írás után a FAT frissítés blokkonként legyen.
Sebesség:
File olvasás INPUT #1-l: ~40k/sec, M128@14,7456 MHz, Soft SPI.
Azért nem olyan rossz....
A konfig állományokban érdemes bekapcsolni, hogy
- mindkét FAT-t frissítse
- Írás után a FAT frissítés blokkonként legyen.
Sebesség:
File olvasás INPUT #1-l: ~40k/sec, M128@14,7456 MHz, Soft SPI.
Azért nem olyan rossz....
Hello!
A következő problémába ütköztem:
16MB-os SD kártya, szépen leformázva FAT/512 -re.
A hibakód mégis 20, tehát nem támogatott szektorméret....
És ez játszik egészen 128MB-ig...
Persze nagyobb (128MB ->) kártyákkal gond nélkül működik, de jó lenne felhasználni az ilyen kis kacat régi kártyákat is, mert bőven elegendő lenne pár mega egy-egy alkalmazáshoz...
Lenne valakinek ötlete?
A következő problémába ütköztem:
16MB-os SD kártya, szépen leformázva FAT/512 -re.
Kód: Egész kijelölése
A formázás kész.
14 745 088 bájt teljes lemezterület
14 745 088 bájt használható lemezterület
512 bájt foglalási egységenként.
28 799 foglalási egység van a lemezen.
16 bit minden FAT-bejegyzésben.
A kötet sorozatszáma: B809-D19C
És ez játszik egészen 128MB-ig...
Persze nagyobb (128MB ->) kártyákkal gond nélkül működik, de jó lenne felhasználni az ilyen kis kacat régi kártyákat is, mert bőven elegendő lenne pár mega egy-egy alkalmazáshoz...
Lenne valakinek ötlete?
16-os az nem működik:(.
FAT12-re formázza valószínű (a WIN beépítettje legalábbis). Én a "HP USB Disk Storage Format Tool"-t használom vagy a Win beépített "diskmgmt.msc" alkalmazását.
A leírása szerint az AVR-DOS-nak min 32 MB-s kell..... én 8 MB-ssel küzdöttem egy ideig. SD MEM módban használtam:) parancskódokkal lehetett beszélgetni. Aztán az AVR-DOS-t mégse portoltam ilyenre....
Manapság az 1 GB-s ~900 Ft
Ja formázás után a foglalási egység a 128-as kártyán 1 vagy 2k!
Az 512 a _flashmemória fizikai_ blokkmérete, nem a filerendszeré (ez a AVR-DOS leírásban keveredik)!
FAT12-re formázza valószínű (a WIN beépítettje legalábbis). Én a "HP USB Disk Storage Format Tool"-t használom vagy a Win beépített "diskmgmt.msc" alkalmazását.
A leírása szerint az AVR-DOS-nak min 32 MB-s kell..... én 8 MB-ssel küzdöttem egy ideig. SD MEM módban használtam:) parancskódokkal lehetett beszélgetni. Aztán az AVR-DOS-t mégse portoltam ilyenre....
Manapság az 1 GB-s ~900 Ft
Ja formázás után a foglalási egység a 128-as kártyán 1 vagy 2k!
Az 512 a _flashmemória fizikai_ blokkmérete, nem a filerendszeré (ez a AVR-DOS leírásban keveredik)!