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> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > > > > Hallo zusammen, > > > > > bei meinen Aktivitäten zur Umsetzung meiner Programme von der CC1 auf die CC Pro > > > > > bin ich auf etwas gestoßen, was sehr fragwürdig ist: > > > > > Folgender Code lässt sich fehlerfrei compilieren. > > > > > Die Funktion liefert die Werte 0x0A für OK oder 01 - Fehler zurück. > > > > > Das Programm kommt aus der Schleife nicht mehr raus. > > > > > Der arithmetische Ausdruck wird anscheinend nicht korrekt > > > > > aufgelöst. Wird immer zu 1 berechnet. > > > > > > > > > > void DS2482WIRE_WAITIDLE(void) > > > > > { > > > > > DS2482WT: > > > > > if ((DS2482GET_STATUS() & 1) > 0) goto DS2482WT; > > > > > } > > > > > > > > > > > > > > > Der Code funktioniert, wenn man die Berechung aus der Klammer > > > > > herauslöst: > > > > > > > > > > void DS2482WIRE_WAITIDLE(void) > > > > > { > > > > > DS2482WT: > > > > > buffer=DS2482GET_STATUS() & 1; > > > > > if (buffer > 0) goto DS2482WT; > > > > > } > > > > > > > > > > Was Ist da los? Also der B++ Compiler vom Stefan Tapertzhofen kann so etwas > > > > > problemlos bearbeiten. > > > > > > > > > > mfg > > > > > Ellen > > > > > > > > Hallo Ellen, > > > > > > > > ich kann das nicht bestätigen. Bei mir funktionieren beide Ausdrücke. Bitte gib doch auch die > > > > Funktion DS2482GET_STATUS() an, vielleicht ist der Fehler da. > > > > > > > > Gruss Peter > > > > > > > > > Hallo Peter, > > > ok, hier der Code: > > > Die Inhalte aus dem Status Register kommen korrekt über den I2C Bus. > > > Das habe ich mittels LA überprüft Übrigens komme ich sehr gut voran > > > mit der Pro. Seit gestern laufen alle DS 1820 Kontrollroutinen. > > > Die CC Pro ist erheblich schneller als die CC1. Das äußerst sich darin dass > > > die I2C Datenpakete fast ohne Pause aufeinander folgen. Beim Lesen vom 1 Wire > > > Bus kann es deswegen zu Timingproblemen kommen, weil der 1 Wire Bus zu langsam > > > ist. An einigen Stellen muss man die CC Pro ausbremsen mit 50 us. > > > Dann läuft der Bus absolut stabil. > > > > > > Gruß > > > Ellen > > > > > > > > > //----------------------------------------------------- > > > //----------------- GET DS2482 STATUS ----------------- > > > //----------------------------------------------------- > > > byte DS2482GET_STATUS(void) > > > { > > > > > > I2C_Start(); > > > I2C_Write(ADDR); > > > I2C_Write(SET_READ_POINTER); > > > I2C_Write(STATUS_POINTER); > > > I2C_Stop(); > > > > > > I2C_Start(); > > > I2C_Write(ADDR+1); > > > DATA=I2C_Read_NACK(); > > > I2C_Stop(); > > > > > > return DATA; > > > } > > > > > > > Hmm, schick mir doch bitte das Projekt an ccpro@gmx.de, vielleicht ergibt sich das Problem nur im > > kompletten Programmcode. > > > > Ich habe folgendes getestet: > > > > byte DS2482GET_STATUS(void) > > { > > return(0x0A); > > } > > > > void DS2482WIRE_WAITIDLE(void) > > { > > DS2482WT: > > if ((DS2482GET_STATUS() & 1) > 0) goto DS2482WT; > > } > > > > Bei einem Aufruf von S2482WIRE_WAITIDLE() kommt die Funktion ohne Schleifendurchlauf direkt > > zurück. Es wird hier korrekt ausgewertet. > > > > Gruss Peter > > > > > Hallo Peter, > > Die Routine läuft jetzt auch bei mir. > Ich kann den Fehler nicht mehr reproduzieren. Leider habe auch ich das Bild vom > Logikanalysator nicht gespeichert. Ich vermute, dass der Compiler dieses ausgeführt hat: > 1 > 0 mit Ergebnis 1 und die Funktion ignoriert. (Aus welchen Gründen auch immer??) > Ich schlage vor, ich beobachte das weiter. Im Wiederholungsfall werde ich sofort alles speichern. > Vielen Dank für das Hilfeangebot. > > mfg > Ellen > >