Stránka 1 z 1

Arduino UNO a EEPROM 24C01

Napsal: 09 kvě 2015, 14:11
od Cowley
Ahoj. Potreboval jsem s Arduinem dostat na konkretni pozici v pameti 76 dostat hodnotu 10, podobne jako v tomto programu.

http://m.arduino8.webnode.cz/news/lekce ... -pres-i2c/

Ale pri zpetnem cteni tam vzdy bylo 8, tzn. o 2 mene. Tak jsem tam tedy zkusil poslat hodnotu 12 a ulozila se tam pozadovana 10.
Vic jsem to nezkoumal, ale je mi to zahadou.
Setkal jste se nekdo s necim podobnym?

Eepromka byla ze stareho telefonniho komunikatoru,kde se cisla v pameti pro volani nastavovala v programatoru.

Napsal: 09 kvě 2015, 16:01
od frpr666
@Cowley
Přidej k dotazu program kterým do 24C01 zapisuješ a program kterým čteš. Jak máš zapojený hw. piny A0,A1,A2. Kukni do DS:
...master then issues the device address byte which consists
of 1010 (A2) (A1) (A0) (R/W). The most significant bits (1010)
are a device type code signifying an EEPROM device. A0,
A1, and A2 are the device address select bits which has to
match the A0, A1, and A2 pin inputs on the device...

Napsal: 09 kvě 2015, 16:50
od Cowley
Vzdyt je to ten sketch v odkazu.

Napsal: 10 kvě 2015, 10:24
od frpr666
@Cowley
předpokládám, že chceš zapisovat/číst adresu 76? Originál sketch na adresu 76 nezapisuje a nečte.

Napsal: 10 kvě 2015, 10:33
od Cowley
Teď si ze mě děláš srandu, viď? Samozřejmě že jsem adresu a parametr nahradil tím svým.

EDIT: už to běhá, viz dole....

Napsal: 10 kvě 2015, 13:04
od Cowley
Záhada je objasněna :D

Nejprve chci říct, že to nebyla adresa 76, ale 67, ale to je jen detail...

Můžu za to já a taky knihovna Wire.

Dal jsem ve sketchi zápis:
Wire.write(67);
Wire.write(010);

ale takto je to prezentováno v knihovně Wire jako "osmičkový zápis" a uloží se proto hodnota 8.

Pokud zadám:
Wire.write(67);
Wire.write(10);

uloží se správně požadovaná 10.

proto se mi po zaslání:
Wire.write(67);
Wire.write(012);

uložila desítka, v osmičkovým zápisu je to 8+2 a to je 10.

Přišel jsem na to až náhodou, když jsem chtěl zapsat hodnotu 9 způsobem:
Wire.write(67);
Wire.write(009);

a ono mě to seřvalo, že to nejde kompilovat, že devítka není "osmičkové" číslo :D

No a u číslic 1-7 se mi to předtím se zápisem 001 až 007 nestalo, protože ta "osmičková" jsou a tak to proběhlo korektně.

Tak to mám pro příště :)

Napsal: 12 kvě 2015, 12:36
od FHonza
Není to knihovnou Wire, ale zápisem celočíselné konstanty:
Integer Constants

Číslo v osmičkové soustavě se zapisuje s nulou na začátku i v C, C++, PHP a kdoví kde ještě všude. Takže konstanty nepřikrášlovat :)

Napsal: 13 kvě 2015, 19:16
od Cowley
FHonza:

Hlavně že člověk hned ví, na čem je :)

Díky...