Re: zusammengesetzte arithmetische Ausdrücke Kategorie: Programmierung C (von ER - 27.08.2009 8:40) | ||
Als Antwort auf Re: zusammengesetzte arithmetische Ausdrücke von PeterS - 26.08.2009 17:43 | ||
| ||
> > 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; } | ||
Antwort schreiben Antworten: Re: zusammengesetzte arithmetische Ausdrücke (von PeterS - 27.08.2009 11:55) Re: zusammengesetzte arithmetische Ausdrücke (von ER - 28.08.2009 16:02) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum