Zápis do EEPROM BASCOM

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
michalino
Příspěvky: 348
Registrován: 03 srp 2009, 00:00

Zápis do EEPROM BASCOM

#1 Příspěvek od michalino »

Dobrý den,

prosím Vás o radu,
pokud nějakou proměnnou ukládám do EEPROM způsobem:

nějakáproměnná je uložena do ERAM na ADRESE: &H01

jak prosím můžu uložit druhou proměnnou?
Můžu ji uložit do &H02?

třetí do &H03 ?

třicátou proměnnou do &H1E?

A kolik proměnných můžu takto uložit, respektive do jakého nejvyššího čísla &Hxxx můžu jít?

Jak to prosím chápat?

Děkuji,
hezký den všem
Uživatelský avatar
ZdenekHQ
Významný člen
Příspěvky: 25519
Registrován: 21 črc 2006, 00:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#2 Příspěvek od ZdenekHQ »

To asi tak stejná otázka, jako kdyby jsi se zeptal, kolik šatů se vleze do skříně.

Např. do 24C16 můžeš uložit 2048 čísel v rozsahu 0..255 (00h-0ffh) postupně na adresy 0..2047.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#3 Příspěvek od Andrea »

A dlouhých zimních kabátů se do skříně vejde míň než halenek :wink:
Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 00:00

#4 Příspěvek od AB1 »

ERAM je vnitřní eeprom v procesoru.
Např Atmega8 má 512 bajtů eeprom.
Takže do ní můžeš zapsat 512 jednobajtových proměnných
nebo 256 dvoubajtových (např typu INT nebo WORD)
nebo 8 proměnných typu string*64
atd.

Protože můžeme deklarovat proměnné přímo v oblasti EEPROM,
nemusí nás zajímat na jaké adrese budou umístěny.
Prostě je deklarujeme podobně jako proměnné v RAM.

Kód: Vybrat vše

Dim A as Eram Byte
Dim B as Eram Long
Dim C(20) as Eram Word
atd.

Když proměnné překročí velikost eeprom, překladač ohlásí chybu.

Je ale třeba si uvědomit, že různé funkce Bascomu (např PRINT, LCD) nemohou pracovat přímo s proměnnými v Eeprom. Je třeba je napřed zkopírovat do RAM.

Kód: Vybrat vše

Dim A as eram word          'proměnná v EEPROM
Dim Tempw as word             'proměnná v RAM
Print A      'toto nejde
Tempw = A
Print Tempw

A netrap se zbytečně s hexadecimálními čísly.
Když něco potřebuješ zapsat na adresu 30 tak to zapiš na adresu 30 a ne &H1E.
Mezi čísly &H1E a 30 není naprosto žádný rozdíl kromě způsobu zápisu.
Překladači je jedno jaký zápis použiješ, protože rozumí oběma.
Asi jako člověku který umí česky i německy je jedno jestli mu řekneš "dvacet" nebo "zwanzig".
Uživatelský avatar
nekmil
Příspěvky: 787
Registrován: 06 bře 2005, 00:00
Bydliště: Havířov

#5 Příspěvek od nekmil »

AB1 obdivuji Tvou trpělivost :D
Uživatelský avatar
michalino
Příspěvky: 348
Registrován: 03 srp 2009, 00:00

#6 Příspěvek od michalino »

Všem děkuji za příspěvky i vtipné připomínky....

zvláště pak AB1 za čas strávený při odpovědi a absolutně srozumitelný styl...samozřejmě také trpělivost, jak píše Nekmil.

Děkuji AB1, přeji vám hezký podvečer.

jdu hned vyzkoušet zápisy na čipu..

zeptal jsem se raději, protože nevím, jak můžu čip zničit a jestli můžu, proto novou věc třeba prostuduju na internetu a pak se Vás raději zeptám, přátelé...

díky ještě jednou
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“