Hallo mensen,
Ik heb even wat vragen over hoe een voorbeeld programma werkt, wat ik ergens heb opgevist.
Hij doet niet wat hij moet doen en ik ben het een beetje aan het ontleden.
Omdat alles in 1 topic vragen in de internationale sectie niet wordt gewaardeerd en omdat sommige problemen nou eenmaal beter uit te leggen zijn in "Native Tongue" hier even een stukje waar ik wat vragen over heb:
Ik laat even mijn opmerkingen ak reminders staan, zodat ik een beetje insights kan geven van mijn denkwijze en waar ik fout lijk te gaan.
//defines the writeEEPROM function
void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data ) {
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); //writes the MSB
Wire.write((int)(eeaddress & 0xFF)); //writes the LSB
Wire.write(data);
Wire.endTransmission();
}
//defines the readEEPROM function
byte readEEPROM(int deviceaddress, unsigned int eeaddress ) {
byte rdata = 0xFF;
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); //writes the MSB
Wire.write((int)(eeaddress & 0xFF)); //writes the LSB
Wire.endTransmission();
Wire.requestFrom(deviceaddress,1);
if (Wire.available()) //als er data is opgeslagen, dan rdata update doorzetten (in dit geval 88888)
//maar er lijkt geen data te zijn "wire is dus niet available" want ik krijg de oorspronkelijke data 0xFF terug.
//Misschien omdat de voorwaarde van de IF niet tussen {} staat??
//update: Als ik de wire.read en return rdata in de IF statement zet, komt er een andere waarde uit. Geen FFFFF
//of 255255255255255 maar 229229229229229 (AAAAA) maar ook 11111 decimaal of 5050505050(HEX)
//als ik de IF statement met return etc helemaal weglaat, krijg ik 00000 data
rdata = Wire.read();
return rdata;
}
Wat ik zo vreemd vind, is dat er in de laatste regels een IF statement staat, waarvan de voorwaarden niet tussen accolades staan. Hoe weet ik dan welke regels er worden uitgevoerd wanneer aan de IF voorwaarde wordt voldaan?
Ik heb wat gespeeld met die laatste regels, waarbij ik die IF statement heb weggelaten, of de return rdata ook binnen die IF statement heb gezet. Voor zover je er wat "in" kunt zetten. Er zijn geen accolades...
Een vervolgvraag daarop is wat er in die rdata hoort te zitten en waarom dit steeds het FF adres blijkt te zijn.
Ik zie ook dat hij geladen wordt met die byte rdata 0xFF.
Dat is een fixed data en als die niet veranderd wordt, blijft hij FF.
En ik zie hem niet veranderd worden. ![]()
Hoe zit dat nou?