Single tárolása ?

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
glbtech
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2007. február 13. kedd, 7:00

Single tárolása ?

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

Sziasztok ! El tudná valaki magyarázni nekem érthetően ( nem vagyok programozó, csak hobbista :-) ), hogy hogyan kell értelmezni egy 4 byteon eltárolt single változót ? Vagyis van egy programom ami az eeprom-ba ír ki egy single változót kikapcsoláskor. A kimentett érték ellenőrzéséhez jó lenne ha tudnám, hogy hogyan kell értelmezni ( átszámítani decimálisba ) azt a négy byte-ot. Köszi előre is !

glb.
Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00

Re: Single tárolása ?

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

glbtech írta:Sziasztok ! El tudná valaki magyarázni nekem érthetően ( nem vagyok programozó, csak hobbista :-) ), hogy hogyan kell értelmezni egy 4 byteon eltárolt single változót ?
glb.
Mármint visszaalakitani single-re?

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

Dim Tarolt_single as single, temp as single
Dim single_n1 as byte, single_n2 as byte, single_n3 as byte, single_n4 as byte

Readeeprom single_n1 , 1  
Readeeprom single_n2 , 2  
Readeeprom single_n3 , 3  
Readeeprom single_n4 , 4 

Temp = single_n1 * 16777216
Tarolt_single = Tarolt_single + temp

Temp= single_n2 * 65536   
Tarolt_single = Tarolt_single + temp

Temp = single_n3 * 256
Tarolt_single = Tarolt_single + temp

Tarolt_single = Tarolt_single + single_n4 
A hozzászólást 2 alkalommal szerkesztették, utoljára SirLeslie 2007. június 1. péntek, 13:27-kor.
Avatar
glbtech
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2007. február 13. kedd, 7:00

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

Nem erre célzok. A single a leírás szerint "Singles are stored as signed 32 bit binary numbers." tehát 4 bájton tárolja. A lényeg hogy a szoftver fut az avr-en, és néha kiírja az eeprom-ba az aktuális értéket. Ezt szeretném ellenőrizni, de ezt csak úgy tudom csinálni, hogy kiolvasom az eeprom tartalmát. Itt a megfelelő címeken látom a 4 bájtot, de nem tudom hogyan kellene visszaszámolni decimális értékre.
Avatar
glbtech
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2007. február 13. kedd, 7:00

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

Senkinek nincs ötlete ? :(
Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00

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

glbtech írta:Senkinek nincs ötlete ? :(
Ötlet volt... csak rosszul írtam le (word-re írtam a mintát, ki van javítva single beolvasásra - végülis ugyanaz csak még két bájtnyi beolvasás és helyiérték felszorzás van plusszban)
Avatar
glbtech
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2007. február 13. kedd, 7:00

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

Erre természetesen én is gondoltam. De ez így nem jó. Hol jelölik az előjelet, és hol vannak a tizedesek ?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10214
Csatlakozott: 2005. december 9. péntek, 7:00

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

Én az overlay körül nézném a megoldást....

A WEBszerver leírásban járom - részben - körbe...
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Hali!
Bocsi, de ez most String tárolás téma! (Csak nem találtan neki jobb helyet.)

Áruljátok már el nekem így egyforma méretű lesz a két helyfoglalás?:

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

' 8+3 karakter hosszú file nevek tárolására (Pont nélkül)

Dim Sddirentrynameb(12) As Byte                             
Dim Sddirentrynames As String * 12 At Sddirentrynameb(1) Overlay

Én úgy tudtam, hogy az „As String * 12” valójában 13 Bytet foglal! 12 karakter + a String záró 0!
Viszont akkor a „(12) As Byte” hely kevés lesz!
Vagy ez most, hogyan működik?
:?: :?

Esetleg először lefoglal nekem 12 Bytes helyet, Aztán ugyan azon kezdő címtől 12+1 Bytet a stringnek?
Így tulajdonképpen jó lenne, mert nem lógna át a következő változóba!

:idea:
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Az este már fáradt lehettem, mert!
A FAT32 File név tárolása 8+3=11 karakter (Mind nagybetű, és csak Angol karakterek lehetnek)
Ehhez még hozzáadom a Stringvégi + 0 , hogy a Print tudja hól a String vége.
Szóval ez belefér a 12 Byte be.
A hibás működést a kicsi vermek okozták.

Azért még mindig kérdés: Hogyan kel a Stringet Overlay-al létrehozni?

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

' 8+3 filenevek tárolására
Dim Sddirentrynameb(13) As Byte
Dim Sddirentrynames As String * 12 At Sddirentrynameb(1) Overlay


' 8+3 filenevek tárolására
Dim Sddirentrynameb(12) As Byte
Dim Sddirentrynames As String * 12 At Sddirentrynameb(1) Overlay

'Vagy
' 8+3 filenevek tárolására
Dim Sddirentrynames As String * 12
Dim Sddirentrynameb(13) As Byte At Sddirentrynames Overlay

Melyik a jó? :?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10214
Csatlakozott: 2005. december 9. péntek, 7:00

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

Középső. A plusz 0-s lezárás a fordító feladata....
Válasz küldése