AVR-DOS
7.3728 MHz kaviccsal jár a mega, de ki fogom próbálni a dupla frekivel is. Jól megszivattam magam egyik nap, elfelejtettem a stack beállításokat beírni, és nagyon rejtélyes hibák léptek fel, megsérült a fájlrendszer, nem írt, stb. A soros port bufferelése még egy érdekes kérdés, néha hagyok el karaktereket, valószínűleg akkor amikor éppen írok, és a soros portot kiszolgáló rutin nem tud lefutni. De azért már egészen jól működik a dolog, és ha nem állandó az adatfolyam amit írni kell akkor abszolút hibátlan. Ha egy jó nagy txt fájlt küldök ki a soros portra akkor van hogy az első sor eltűnik. xon/xoff flow kontroll alkalmazásával több mint tökéletes persze, de egy kész modult nehéz rávenni ilyesmire. GPS loggernek tökéletes lesz, lassan tervezek neki nyákot.
Sziasztok! AVRDOS-al próbálok SD kártyát kezelni. Azonban a 2Gb feletti kártyákkal nem megy. Ha jól olvastam ahoz az MMC.lib helyett az MMCSD_HC.LIB-et kellene használnom. (és persze hozzá a config_MMCSD_HC. fájlt include-olni. Azonban ezek a fájlok nekem nincsenek benne a telepített BASCOM könyvtárában. Tud valaki segíteni ebben?
Esetleg ezt nézdmeg:
http://www.ribu.at/Software/Config_MMCSD_HC.bas
Vagy:
http://avrhelp.mcselec.com/index.html?a ... system.htm
AVR – DOS for BASCOM-AVR:
http://members.aon.at/voegel/index.html?Downloads.htm
http://www.ribu.at/Software/Config_MMCSD_HC.bas
Vagy:
http://avrhelp.mcselec.com/index.html?a ... system.htm
AVR – DOS for BASCOM-AVR:
http://members.aon.at/voegel/index.html?Downloads.htm
MMCSD_HC.zip
http://www.mcselec.com/index2.php?optio ... pic&t=7030
FileIOSpeedTest-SDHC1_Cloud9.zip
http://www.mcselec.com/index2.php?optio ... c&start=30
http://www.mcselec.com/index2.php?optio ... pic&t=7030
FileIOSpeedTest-SDHC1_Cloud9.zip
http://www.mcselec.com/index2.php?optio ... c&start=30
Ismét köszönöm szépen! Ma összedobtam egy kicsi programot, rendben működött a fájlba írás! 1Gb-os SD, és 4Gb-os SDHC kártyával próbáltam. Ez utóbbi lényegesen gyorsabb, de mindkettő jól működik! Meglepő módom, nem sikerült filerendszer hibát előidéznem, pedig többször is, szándékosan írás közben kihúztam a kártyát a foglalatból, vagy elvettem a tápot a kapcsolástól.
Közben rájöttem, hogy ha a write függvénnyel írok egy fájlba akkor kapásból az excel *.csv formátumában írja az adatokat - ez lehet, hogy még hasznos lesz később. (talán vissza is lehet hasonló egyszerű módon olvasni?)
Robert-nek is itt válaszolnék, hogy ne legyen OFF a másik témában:
Clockrate=16 -al és Clockrate=4 -el is próbáltam. Utóbbi esetben érezhetően gyorsabb, és egyelőre nem tudtam hibát előidézni (de majd még próbálkozok ) A quartz 14,7456MHz-es, mert később soros portot is szeretnék használni.
Felmerült egy újabb kérdés: a fájlok dátumát és idejét hogyan lehet megadni? Csak kiolvasó rutinokat találtam - rosszul kerestem? A teszt hardverbe tettem egy PCF8563 órachipet, ez szépen teszio a dolgát, tehát pontos idő akár lenne is, és a fájlbejegyzésekbe be is teszem, de legalább első megnyitáskor jó lenne a fájl dátumát is beállítani.
Közben rájöttem, hogy ha a write függvénnyel írok egy fájlba akkor kapásból az excel *.csv formátumában írja az adatokat - ez lehet, hogy még hasznos lesz később. (talán vissza is lehet hasonló egyszerű módon olvasni?)
Robert-nek is itt válaszolnék, hogy ne legyen OFF a másik témában:
Clockrate=16 -al és Clockrate=4 -el is próbáltam. Utóbbi esetben érezhetően gyorsabb, és egyelőre nem tudtam hibát előidézni (de majd még próbálkozok ) A quartz 14,7456MHz-es, mert később soros portot is szeretnék használni.
Felmerült egy újabb kérdés: a fájlok dátumát és idejét hogyan lehet megadni? Csak kiolvasó rutinokat találtam - rosszul kerestem? A teszt hardverbe tettem egy PCF8563 órachipet, ez szépen teszio a dolgát, tehát pontos idő akár lenne is, és a fájlbejegyzésekbe be is teszem, de legalább első megnyitáskor jó lenne a fájl dátumát is beállítani.
Sereintem veheted maxra a sebességet:
Feltéve, hogy jó a HW kiépítése!
Már létezik :
Comment = MMC/SD/SDHC Driver For Avr-dos Compiler Library
Libversion = 3.04 test release
Felraktam a file cserebere közé: mmcLIB.ZIP
Kód: Egész kijelölése
' HW-SPI is configured to highest Speed
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
Spiinit ' Init SPI
' miután sikeresen megvolt az MMC inicializálás ezt is veheted duplára
Spsr = 1 ' Double speed on ATMega128 default = commented changed by author
Már létezik :
Comment = MMC/SD/SDHC Driver For Avr-dos Compiler Library
Libversion = 3.04 test release
Felraktam a file cserebere közé: mmcLIB.ZIP
Ismét köszi! Az AVR-DOS.lbr most milyen verziószámnál tart? Nekem 5.5-ös van a fordító könyvtárában, esetleg létezik ebből is újab?
Az Spsr = 1 -et ki fogom próbálni! Ha másik kártyát teszek be akkor viszont gondolom a driveinit() előtt vissza kell állítani. De mire, mi az alapértelmezett értéke? Nullára kel állítani?
Az Spsr = 1 -et ki fogom próbálni! Ha másik kártyát teszek be akkor viszont gondolom a driveinit() előtt vissza kell állítani. De mire, mi az alapértelmezett értéke? Nullára kel állítani?
Igen!
spsr=0
Csakak a Bit0 irható
SPSR – SPI Status Register Bit 0 – SPI2X: Double SPI Speed Bit
When this bit is written logic one the SPI speed (SCK Frequency) will be doubled when the SPI
is in Master mode (see Table 15-5). This means that the minimum SCK period will be two CPU
clock periods. When the SPI is configured as Slave, the SPI is only guaranteed to work at fosc/4 or lower.
spsr=0
Csakak a Bit0 irható
SPSR – SPI Status Register Bit 0 – SPI2X: Double SPI Speed Bit
When this bit is written logic one the SPI speed (SCK Frequency) will be doubled when the SPI
is in Master mode (see Table 15-5). This means that the minimum SCK period will be two CPU
clock periods. When the SPI is configured as Slave, the SPI is only guaranteed to work at fosc/4 or lower.
Én ezt láttam:
comment = AVR-DOS compiler library
libversion = 5.8
date = 8 April 2011
Dátum probléma?
Létezik 1: FS_Interpeter.bas állomány.
Hogy honnan való ara sajnos már nem emlékszem. De azt hiszem szabadon terjeszthető.
Ott egyszerűen felül írták a (Date$,Time$) változók értékét.
Az egész 1900 sor, ezért csak a kérdéses részlet:
Valahogy így próbáld megoldani!
Bens:
http://members.home.nl/bzijlstra/softwa ... /basex.htm
Speicherkarten (SD) am AVR-Mikrokontroller
http://staff.ltam.lu/feljc/electronics/ ... _Level.pdf
comment = AVR-DOS compiler library
libversion = 5.8
date = 8 April 2011
Dátum probléma?
Létezik 1: FS_Interpeter.bas állomány.
Hogy honnan való ara sajnos már nem emlékszem. De azt hiszem szabadon terjeszthető.
Ott egyszerűen felül írták a (Date$,Time$) változók értékét.
Az egész 1900 sor, ezért csak a kérdéses részlet:
Kód: Egész kijelölése
Case "TIME"
If Gbcnttoken = 1 Then
Print #1 , Time$
Elseif Gbcnttoken = 2 Then
Time$ = Getnexttokenstr(8)
Else
Printparametercounterror "0 or 1"
End If
Case "DATE"
If Gbcnttoken = 1 Then
Print #1 , Date$
Elseif Gbcnttoken = 2 Then
Date$ = Getnexttokenstr(8)
End If
És a beolvasó rutin:
Function Getnexttokenstr(byval Pblen_max As Byte ) As String
' Returns next String-token from Input
' Parameter: pbLen_Max: Limit for string-length
Local Lbpos As Byte
Local Lblen As Byte
Incr Gbtoken_actual ' switch to new/next token
Lbpos = Gbposstrparts(gbtoken_actual) ' at which position in string
Lblen = Gblenstrparts(gbtoken_actual) ' how long
If Lblen > Pblen_max Then Lblen = Pblen_max ' to long?
Getnexttokenstr = Mid(gspcinput , Lbpos , Lblen) ' return string
End Function
Bens:
http://members.home.nl/bzijlstra/softwa ... /basex.htm
Speicherkarten (SD) am AVR-Mikrokontroller
http://staff.ltam.lu/feljc/electronics/ ... _Level.pdf
A fájl dátum, idő probléma megoldása:
Kezd összeállni az SD kártya kezelés, ugyan az mkdir(),chdir parancsokat nem sikerült működésre bírnom, de végülis enélkül is megy a dolog, legfeljebb az SD kártya főkönyvtárában lesznek a fájlok.
Soros port (RS232) kezeléssel kapcsolatban is lenne kérdésem, megkeresem a hozzá tartozó témát, de ha valaki belinkelné azt megköszönném!
Kód: Egész kijelölése
'Dátum és idő függvények használata,
'ez létrehozza a belső változókat is!
Config Date = Ymd , Separator = .
Config Clock = User
'--------------------------------------------------------
'A fenti config esetén az AVR-DOS automatikusan
' meghívja a címke utáni rutint, minden fájlművelet előtt!
Getdatetime:
_year = ... '!Itt kell értéket adni a változóknak
_month = ... 'Pl az órachip-ből olvasott adatok alapján
....
Return
Soros port (RS232) kezeléssel kapcsolatban is lenne kérdésem, megkeresem a hozzá tartozó témát, de ha valaki belinkelné azt megköszönném!
Hali,
Segítségeteket szeretném kérni.
Xmega + AVR DOS alapon írok SD kártyára.
Az olvasás minden esetben tökéletesen sikerül, viszont az írással problémák vannak.
A lényeg az, hogy reset után 15-30 sor kiírása mindig sikerül (percenként írok ki egy sort), utána viszont a többi már nem kerül kiírásra.
Olvasni azonban ekkor is tudok, de minden alkalommal ugyanazt látom.
Kártyaolvasóban is teszteltem, de ott csak az első 15-30 sor látszódik.
Jelenleg egyetlen megoldás a reset, utána ideiglenesen megint jó az írás.
Vajon mi lehet ennek az oka?
Segítségeteket szeretném kérni.
Xmega + AVR DOS alapon írok SD kártyára.
Az olvasás minden esetben tökéletesen sikerül, viszont az írással problémák vannak.
A lényeg az, hogy reset után 15-30 sor kiírása mindig sikerül (percenként írok ki egy sort), utána viszont a többi már nem kerül kiírásra.
Olvasni azonban ekkor is tudok, de minden alkalommal ugyanazt látom.
Kártyaolvasóban is teszteltem, de ott csak az első 15-30 sor látszódik.
Jelenleg egyetlen megoldás a reset, utána ideiglenesen megint jó az írás.
Kód: Egész kijelölése
Open Filename For Append As 10 '#file_handle ' open file for output with file_handle
Print #10 , Time$ ; " 123456789012345678901234567890123456789012345678901234567890"
Print #7 , "Write:" ; Spidatawrite
Print #7 , "Close..."
Close #10