Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

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
Ich nutze:
C-Control Pro Mega32
> > 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)