Arduino UNO a EEPROM 24C01

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Cowley
Příspěvky: 3557
Registrován: 04 úno 2005, 00:00

Arduino UNO a EEPROM 24C01

#1 Příspěvek 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.
Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 00:00

#2 Příspěvek 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...
Uživatelský avatar
Cowley
Příspěvky: 3557
Registrován: 04 úno 2005, 00:00

#3 Příspěvek od Cowley »

Vzdyt je to ten sketch v odkazu.
Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 00:00

#4 Příspěvek od frpr666 »

@Cowley
předpokládám, že chceš zapisovat/číst adresu 76? Originál sketch na adresu 76 nezapisuje a nečte.
Uživatelský avatar
Cowley
Příspěvky: 3557
Registrován: 04 úno 2005, 00:00

#5 Příspěvek 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....
Naposledy upravil(a) Cowley dne 10 kvě 2015, 13:10, celkem upraveno 1 x.
Uživatelský avatar
Cowley
Příspěvky: 3557
Registrován: 04 úno 2005, 00:00

#6 Příspěvek 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ě :)
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#7 Příspěvek 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 :)
Uživatelský avatar
Cowley
Příspěvky: 3557
Registrován: 04 úno 2005, 00:00

#8 Příspěvek od Cowley »

FHonza:

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

Díky...
Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“