Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Roman, > > > ich habe drei (byte,int,long) Hilfsfunktionen geschrieben, die das Addieren von > > werten ermöglichen, aber gerade die int funktioniert nicht: > > > > function addint (int addr, int data) { > > int value; > > value = readint(addr)* data; > > if (value < (0x8000)) { > > writeint(addr, value); > > } else { > > writeint(addr, 0x8000); > > } > > } > > Die IF-Abfrage kann nicht funzen, da 0x8000 als -32768 gelesen wird. > Es gibt jedoch keine kleinere Integerzahl als -32768. > Ich nehme an, daß Du so einen Überlauf abfangen willst und nur pos. Werte > zulassen willst, und im Fehlerfall -32768 ins EEProm geschrieben werden soll. > Die Abfrage kannst Du dann auf zwei Weisen durchführen: > 1. logisch: > if value and 0x8000 // Wenn Integerwert negativ > 2. Vergleich > if value < 0 // Wenn Integerwert negativ > > > > Ich habe bemerkt, dass der lesevorgang auch abgebrochen > > werden kann, falls das eeprom nicht antwortet: > > ... > > loop > > { > > if i2c.start(eepromaddr) break; > > if i>=100 return 0; > > i=i+1; > > sleep 1; > > } > > ... > > > > kann man das abstellen, oder ist das gerade der Fehler!? > > Bei meinem Programm greifen regelmäßig mehrere Threads > > auf das eeprom zu. > > Nein, das darf man nicht "abstellen", da sonst das Programm an diese > Stelle stehen bleiben kann. > Diese Schleife ist notwendig, da das EEProm eine gewisse Zeit benötigt, > um Daten zu schreiben und in dieser Zeit nicht reagiert. Dies kann einige ms dauern. > Wenn das EEProm nach 100 Durchläufen nicht mehr reagiert, kann es nur > defekt oder nicht angeschlossen sein. > Auch, wenn mehrere Threads auf das EEProm zugreifen, darf es durch das > Capture keine Probleme geben. > > MfG André H.