Arduino UNO a EEPROM 24C01
Moderátor: Moderátoři
Arduino UNO a EEPROM 24C01
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.
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...
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
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ě
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