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, > > ich nutzt zur Zeit Beta 1.98 mit C-Compiler > Float-Variablen benenne ich zur Unterscheidung von Integers mit einem führenden "f" > > > Ich lasse in einer Interrupt-Routine jede Sekunde eine Regel-Routine laufen, die als Ergebnis in der > Float-Variablen "fDAC_neu" einen neuen Stellwert liefert, der (nach Begrenzung auf das Intervall > 0..65536) per SPI-Schnittstelle in einen externen 16-Bit-DAC geschrieben wird. Dazu kopiere ich > fDac_neu in die Integer-Vaiable "DAC_Wert"und schicke die per SPI raus - das funktioniert! > > Interrupt-Routine: > ... > fDAC_neu = MITTE + fProp +fInteg + fDblInteg; // Berechnung eines neuen Regel-Wertes > if (fDAC_neu>65535.0) fDAC_neu=65535.0; if (fDAC_neu<0.0) fDAC_neu=0.0; // Begrenzung > DAC_Wert = fDAC_neu; // Wandlung nach Int > > Port_WriteBit(SYNC, Low); // Selektieren des externen DAC > SPI_Write(DAC_Wert >> 8); // 2 Byte per SPI aussenden > SPI_Write(DAC_Wert & 0x00FF); > Port_WriteBit(SYNC, High); // De-selektieren des DAC > ... > > > Nun wollte ich optional den DAC auf einem vom Hauptprogramm vorzugebenden Wert einfrieren, der > in der Integer-Variable "man_DAC" abgelegt ist. > > Zu diesem Zweck habe ich eine Byte-Variable "Tune_Flag" eingeführt, die im Hauptprogramm auf > entweder "True" (->Regeln) oder "False" (-> Einfrieren) gesetzt werden kann, wobei definiert ist: > #define False 0 > #define True 1 > > In der Interrupt-Routine habe ich dann die Zuweisung > DAC_Wert = fDAC_neu; // Wandlung nach Int > > ersetzt durch > DAC_Wert = (Tune_Flag)? fDAC_neu : man_DAC; > > Falls Tune_Flag==True, so geht das falsch: die Regelschleife 'spinnt' - > es wird weder der Wert fDAC_neu noch der Wert man_DAC verwendet! > (bei Tune_Flag==False geht es richtig: man_DAC wird verwendet). > > Dasselbe gilt, wenn ich die Bedingung ausformuliere zu "(Tune_Flag==True)? > > Was ist falsch? >