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 Andrè, > > > > Noch ne Idee... ich gebe zu, ich kann sie erst morgen prüfen... aber ich meine, sowas gesehen zu haben. > > > > Meine "Zielvorstellung" eines Programmes mit eeprom-Funktion (ins Unreine geschrieben) ist etwa so: > > > > Ich weis nicht, wie ich auf das schmale Brett gekommen bin.... :-) > > Die funktionen sind tatsächlich gekapselt und "Wasserdicht"... Die Ausnutzung des Seiteneffekts > > wie früher unter C möglich und üblich geht nicht, weil eine Kopie des Wertes auf den Funktionsstack > > geschrieben wird und nicht der Wert selbst oder dessen Adresse.. ich dachte ich hätte sowas gesehen > > aber nach dem ich es mit einem kleinen Test ausprobiert habe, ist die Idee hinfällig.. zumindest was die > > "Autoaddressierung" angeht. > > Mir ist ein Licht aufgegangen... es wurde richtig hell :-) > Das mit dem Seiteneffekt ist doch möglich.. und ich habe es tatsächlich gesehen gehabt... allerdings mit > einem String und nicht mit einem Int wie ich es heute morgen ausprobierte. Hab doch keine Halluzi's.... > Ich habe auch die Stelle im CC2-Handbuch gefunden, die den Zusammenhang noch mal genau klärt. > S.68 Parameter und lokale Variablen > > So.. und jetzt kommt der Clou... definiert man für eeepromaddr und addr je einen eigenen Typ einer Variable > vom Typ INT, werden die Parameter nicht mehr als Stackwert sondern referenziert angesprochen. > Ausserdem lassen sich die beiden static Variablen in einem Typ zusammen fassen was weniger > Stackoperationen zur Folge hat. > Variante 1: > > type eeadress > { byte eepromaddr;} > > type myaddr > { int addr;} > > Dann klappt auch > eeadress=0 > myaddr=16384 > If writebyte(eeadress,myaddr,wert) doerror (geterr()) > If writebyte(eeadress,myaddr,wert) doerror (geterr()) > If writelong(eeadress,myaddr,wert) doerror (geterr()) > .... > > Variante 2: > > type eeadress > { > byte eepromaddr; > int addr; > } > > Dann klappt auch > eeadress.eepromaddr=0; > eeadress.myaddr=16384; > > If writebyte(eeadress,wert) doerror (geterr()) > If writebyte(eeadress,wert) doerror (geterr()) > If writelong(eeadress,wert) doerror (geterr()) > .... > mit automatischem hochzählen der Adressen. Variante 2 finde ich sogar noch eleganter weil wie gesagt > min. 1 Stackvariable entfällt (die Adresse für die Referenz zum neuen Typ muß ja immer übergeben werden. > Referenzen müsten aber weit schneller als Stackoperationen sein. Da winkt also auch ein Vorteil. > > > > So einfach machen wir es den Leuten nicht. :-) > > Mit der Idee kannst Du den Leuten ruhig etwas mehr Luxus gönnen... :-) > Trau Dich ! :-) > Die Angaben sind ja weiterhin jederzeit auch mit direkten Adressen zu machen und es würde sich eine > weitere Möglichkeit zur Prüfung von unvollständig geschriebenen Daten eröffnen. > > > > Man muß hier selbst mitzählen. Außerdem hätte dies nur Vorteile beim sequentiellen > > > Schreiben. (z.B. Datenlogger) > Wie gesagt..es ist nicht vorherzusehen, wo für die CC2 eingesetzt wird... und sei es "nur" als > Datenlogger... überleg mal... will ich ein Menue darstellen, das Texte auf ein LCD ausgibt, > muß ich die Texte sequentiell einlesen. Jede Stunde ein Meßwert schreiben... sequentiell... > Suchen in einem Datenfeld... sequentiell lesen und vergleichen... dieses "nur" bei Dir ist aus > meiner Sicht so nicht ok. > > Die Nachteile der Geschichte sind 2 zusätzliche statische Variablen für das eeprom und die Adresse. > Da Du aber schon eine eingeführt hast, macht mir das wenig bedeneken solange wir da nich mit aasen. > > Ok.. ich warte weiter auf Dein nächstes Posting... (und ggf. Mail mit Änderungen) > Beachte bitte mein letztes und dieses Posting im Zusammenhang. > > Gruß Rolf