AVR-DOS

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Atesz
Tranzisztorgyógyász
Hozzászólások: 164
Csatlakozott: 2006. január 19. csütörtök, 7:00

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

Igazad van! Elnézést kérek minden érdeklődőtől!
Nem felejtettem el amit ígértem, csak összecsaptak a hullámok a fejem fölött . 8O

Még egy pár nap türelmet kérek!
Avatar
Atesz
Tranzisztorgyógyász
Hozzászólások: 164
Csatlakozott: 2006. január 19. csütörtök, 7:00

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

Í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.

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
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 :wink:
Remélem nem felejtettem el semmit.
Avatar
7kaz
Bitmanipulátor
Hozzászólások: 138
Csatlakozott: 2006. szeptember 26. kedd, 6:00

Hozzászólás Szerző: 7kaz »

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! :)
Avatar
7kaz
Bitmanipulátor
Hozzászólások: 138
Csatlakozott: 2006. szeptember 26. kedd, 6:00

Hozzászólás Szerző: 7kaz »

Atesz írta:Az MMC-t le kell formázni FAT32/512 -re kártyaolvasóban és a "temp.txt"-t létrehozni.
Ezt az M32 végzi, vagy a PC-n hozod létre (hogyan)?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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! :P
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...
Avatar
Atesz
Tranzisztorgyógyász
Hozzászólások: 164
Csatlakozott: 2006. január 19. csütörtök, 7:00

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

Nincs mit!
Néhány hét küzdemle. :D
Ezt az M32 végzi, vagy a PC-n hozod létre (hogyan)?
Természetesen a PC kell kátryaolvasóban formázni, és az üres file-t létrehozni.
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. 8) :D
Avatar
7kaz
Bitmanipulátor
Hozzászólások: 138
Csatlakozott: 2006. szeptember 26. kedd, 6:00

Hozzászólás Szerző: 7kaz »

Tehát, ha a 128MB-os SD-t a fényképezőgéppel formázom, akkor jó esélyem van rá, hogy az AVR-DOS nem "esik hasra" a kártyától? No, majd kipróbálom! :)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

Memória (SRAM) foglalás faragható lefelé, de az alsó határ ~1,2 kbyte:(. Még próbálkozom.

Direkt hozzáférés esetén (memóriaként kezelt SD kártya), az lefaragható kb. 600 byte-ra (azaz ATMega16-ba is mehet a vezérlés)!
Avatar
7kaz
Bitmanipulátor
Hozzászólások: 138
Csatlakozott: 2006. szeptember 26. kedd, 6:00

Hozzászólás Szerző: 7kaz »

Új fájl létrehozása:

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

Open "akármi" For Output As #1
Meglévő fájlhoz hozzáírás (új adatok):

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

Open "akármi" For Append As #1
Fájl meglétének ellenőrzése:

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

Filechk = Dir( "fájl.kit")
If Len(filechk) = 0 Then...
Filechk egy sztring típusú változó. Ha értéke 0, akkor nincs meg a fájl.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

SPI vezérlés, magasabb órajel esetén?

Nálam M128@14.7456MHz és a HWSPI nem megy, csak a Soft SPI.
Valaki futott már bele ilyenbe?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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....
Hooligan01

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

Hello!

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
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?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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 :P


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)!
Válasz küldése