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)