 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
dkone Član

Pridružen-a: Sre 07 Mar 2007 18:53 Prispevkov: 2116 Aktiv.: 9.51 Kraj: Krško
|
Objavljeno: Pet Jan 06, 2012 10:58 pm Naslov sporočila: BASCOM AVR-EEPROM-8 BYTOV |
|
|
Pozdravljeni,
Delam si eno aplikacijo, kjer uporabljam notranji eeprom. Konkretno gre za branje addrese ds1820(4 senzorji), katera je 8bytna in bi jo rad shranil v eeprom, ki ima 8 bitne lokacije. Treba bo razbijat 8x8 bitov. Ima kdo kakšno drugo idejo od spodnje?
Prilagam kodo:
Koda: |
Dim Addressa(8) As Byte 'sprem za shranjevanje 8 bytov address-e
Beri:
Pom = Senzor_no - 1
Ee_adr = Pom * 8
1wreset 'procedura za branje iz ds1820 senzorja
1wwrite &H33
For I = 1 To 8
Addressa(i) = 1wread() 'addresso shranimo v Addressa(i)
Next
For I = 1 To 8 'procedura za shranjevanje address-e v eeprom
Writeeeprom Adressa(i) , Ee_adr
Waitms 10 'cas, ki ga EEPROM potrebuje za vpis
Ee_adr = Ee_adr + 1
Next |
Bascom mi erorje meče ven, da spremenljivka adressa(i) ni deklarirana kot array. Kako to narediti? _________________ Denis |
|
Nazaj na vrh |
|
 |
int47 Član


Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2104 Aktiv.: 8.88 Kraj: Ljubljana
|
Objavljeno: Pet Jan 06, 2012 11:58 pm Naslov sporočila: |
|
|
Poskusi tako:
Koda: |
Dim Addressa(8) As Eram Byte ' polje 8 bytov se nahaja v EEPROM-u
.
.
.
1wreset 'procedura za branje iz ds1820 senzorja
1wwrite &H33
For I = 1 To 8
'Addressa(i) = 1wread() ' če bascom ne bi bil četrt-izdelek, bi to šlo
Tmp = 1wread() ' preberi
Addressa(i) = Tmp ' vpiši
Next
|
|
|
Nazaj na vrh |
|
 |
red_mamba Član


Pridružen-a: Ned 20 Feb 2005 17:56 Prispevkov: 1486 Aktiv.: 6.27 Kraj: Yogyakarta
|
Objavljeno: Sob Jan 07, 2012 10:14 am Naslov sporočila: Re: BASCOM AVR-EEPROM-8 BYTOV |
|
|
dkone je napisal/a: |
Pozdravljeni,
Delam si eno aplikacijo, kjer uporabljam notranji eeprom. Konkretno gre za branje addrese ds1820(4 senzorji), katera je 8bytna in bi jo rad shranil v eeprom, ki ima 8 bitne lokacije. Treba bo razbijat 8x8 bitov. Ima kdo kakšno drugo idejo od spodnje?
Prilagam kodo:
Koda: |
Dim Addressa(8) As Byte 'sprem za shranjevanje 8 bytov address-e
Beri:
Pom = Senzor_no - 1
Ee_adr = Pom * 8
1wreset 'procedura za branje iz ds1820 senzorja
1wwrite &H33
For I = 1 To 8
Addressa(i) = 1wread() 'addresso shranimo v Addressa(i)
Next
For I = 1 To 8 'procedura za shranjevanje address-e v eeprom
Writeeeprom Adressa(i) , Ee_adr
Waitms 10 'cas, ki ga EEPROM potrebuje za vpis
Ee_adr = Ee_adr + 1
Next |
Bascom mi erorje meče ven, da spremenljivka adressa(i) ni deklarirana kot array. Kako to narediti? |
javlja ti zato ker si se zatipkal in ti en D manjka v adDressa  _________________ Bad things happen to good people all the time for no reason!
Blog |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3359 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Ned Jan 08, 2012 9:01 am Naslov sporočila: |
|
|
Kadar upoabljam eeprom v Bascomu, vedno definiram spremeneljivko že v eepromu in potem je branje in pisanje preprosto.
Koda: |
Dim eespremenljivka as eram byte
dim i as byte
eespremenljivka = i |
in potem se ne zafrkavam z računanjem naslovov. Eespremenljikva je lahko kateregakoli formata, byte, integer, itd _________________ Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart |
|
Nazaj na vrh |
|
 |
dkone Član

Pridružen-a: Sre 07 Mar 2007 18:53 Prispevkov: 2116 Aktiv.: 9.51 Kraj: Krško
|
Objavljeno: Ned Jan 08, 2012 10:59 am Naslov sporočila: |
|
|
vilko je napisal/a: |
Kadar upoabljam eeprom v Bascomu, vedno definiram spremeneljivko že v eepromu in potem je branje in pisanje preprosto.
Koda: |
Dim eespremenljivka as eram byte
dim i as byte
eespremenljivka = i |
in potem se ne zafrkavam z računanjem naslovov. Eespremenljikva je lahko kateregakoli formata, byte, integer, itd |
Hvala za odgovor! Vilko kaj pa če imam array? eespremenljivka(8) ? Če pogledaš moj primer imam 64 bitno kodo naslova ds1820 senzorja, ki bi jo rad shranil v eeprom. To pa zato, ker uporabljam 4 senzorje in vsak senzor ima drugo kodo. Mogoče ideja kako bi to naredil kako drugače ? _________________ Denis |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3359 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Ned Jan 08, 2012 11:13 am Naslov sporočila: |
|
|
Točno v ta namen uporabljam eeprom, seveda obvlada tudi array spremenljivk
Probaj!
Le nekaj je potrebno oporoziti:
Nekje sem bral, nisem preverjal, a sem upošteval nasvet:
Ker so imeli ali imajo nekateri atmeli napako in napačno obravnavajo eeprom naslov 0, je pametno, da ta naslov preskočiš tako, da na tem mestu definiraš nek bajt, ki ga ne uporabiš v programu.
Koda: |
dim preskoči as eram byte
dim ds1820id1(16) as eram byte 'prvi termometer
dim ds1820id2(16) as eram byte 'drugi termometer
|
_________________ Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart |
|
Nazaj na vrh |
|
 |
red_mamba Član


Pridružen-a: Ned 20 Feb 2005 17:56 Prispevkov: 1486 Aktiv.: 6.27 Kraj: Yogyakarta
|
Objavljeno: Pon Jan 09, 2012 12:56 pm Naslov sporočila: |
|
|
vilko je napisal/a: |
Točno v ta namen uporabljam eeprom, seveda obvlada tudi array spremenljivk
Probaj!
Le nekaj je potrebno oporoziti:
Nekje sem bral, nisem preverjal, a sem upošteval nasvet:
Ker so imeli ali imajo nekateri atmeli napako in napačno obravnavajo eeprom naslov 0, je pametno, da ta naslov preskočiš tako, da na tem mestu definiraš nek bajt, ki ga ne uporabiš v programu.
Koda: |
dim preskoči as eram byte
dim ds1820id1(16) as eram byte 'prvi termometer
dim ds1820id2(16) as eram byte 'drugi termometer
|
|
res je,
na nekaterih uC-jih se ti je lahko zgodilo da se je povozil 1. byte v eepromu
Glede tega je najbolje pogledati datasheet in errata data za tvoj uC ce slucajno rabis ves EEPROM. Drugace pa kot je Vilko rekel preskocis prvega _________________ Bad things happen to good people all the time for no reason!
Blog |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|