AVR-DOS

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 9989
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2009. július 17. péntek, 12:25

Hány MHz-n jár a M32?

Nálam 14745600 Hz-n hibázott a HW-s SPI.
Alacsonyabb órajelen (7372800 Hz) jó volt....

Avatar
glbtech
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2007. február 13. kedd, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: glbtech » 2009. július 20. hétfő, 19:20

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.

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

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?

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

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


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, 17:31

Köszönöm! Nagyon hasznos volt, holnap nekiállok a programnak!

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3321
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, 13:41


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 9. péntek, 16:25

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.

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3321
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, 17:54

Sereintem veheted maxra a sebességet:

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


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

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 9. péntek, 20:52

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?

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3321
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, 21:13

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.

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

HozzászólásSzerző: Robert » 2012. november 10. szombat, 9:07

Amre vigyázz! - lehet nálam is ez volta hiba:
Ha a kábelezés hosszú, kapacitások vannak benne - akkor az SPI négyszögjelei inkább háromszög/szinusz lesz. És azért 4 MHz inkább RF jel, mint digitális :).

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

HozzászólásSzerző: kapu48 » 2012. november 10. szombat, 13:35

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

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



Valahogy így próbáld megoldani!

Bens:
http://members.home.nl/bzijlstra/softwa ... /basex.htm
:wink:

Speicherkarten (SD) am AVR-Mikrokontroller
http://staff.ltam.lu/feljc/electronics/ ... _Level.pdf

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 13. kedd, 15:55

A fájl dátum, idő probléma megoldása:

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

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!

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 13. kedd, 16:01

Kipróbáltam az
Spsr=0 és Spsr=1
beállítást is. Úgy tűnik hogy a fájlműveletekkel megy el a legtöbb idő, sok és/vagy nagy fájl esetén gyakorlatilag nem volt észrevehető sebességnövekedés, így maradt az spsr=0

Avatar
CsendesJ
Biztosítékgyilkos
Hozzászólások: 57
Csatlakozott: 2008. augusztus 31. vasárnap, 6:00

HozzászólásSzerző: CsendesJ » 2012. december 19. szerda, 11:16

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.

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


Vajon mi lehet ennek az oka?


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

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