Hallo alle zusammen,
habe wieder mal ein "kleines" problem.
die variablen Y_Temp und X_Temp wird initialisiert, aber die
variable int ergebnis nicht!!!! wenn ich es debugge, dann sprint der
cursor drüber, ohne den wert zu übernehmen!!!!
kann mir bitte jemand sagen, woran es liegen könnte? es kann sein,
dass ich in den settings vom compiler (verwende µVision 3 von Keil)
was verstellt habe, weiss es aber nicht genau. benutzt das keilboard
und den C167CS-LM)
hoffe es kann mir jemand helfen... bin für jede antwort dankbar!
danke
LG wolfgang
void auswertung (void)
{
  int Y_Temp = 0x0000;
  int X_Temp = 0x0000;
  int ergebnis = 0x0000;
  X_Temp |= (readback[1]<<8) & 0xff00;
  X_Temp |= (readback[0])& 0x00ff;
  Y_Temp |= (readback [3]<<8) & 0xff00;
  Y_Temp |= (readback [2]) & 0x00ff;
                  ergebnis = atan(Y_Temp/X_Temp)
}
  Also ich hätte die Zuweisung int ergebnis = 0x0000 wegoptimiert, weil man sie nicht braucht. Vielleicht macht Dein Compiler das ja auch?. Viele Grüsse Harry
Mich wunderts ja schon, dass der compiler nicht meckert, da bei der letzten Zeile (ergebnis = .....) das Semikolon fehlt. Zudem ist eine Initialisierung der Variablen auf 0 wirklich nicht notwendig. Auch der X und Y Variablen nicht, da da ja gleich was reingeschrieben wird. Übrigens: Wor wird dein Array readback[] initialisiert?
hallo erdi,
das readback feld ist global und hier werden die werte reingeschrieben,
die ich zur auswertung benötige. ja das intialisieren ist nicht
notwendig, aber warum macht er es trotzdem nicht wenn ich es debugge.
hab da noch eine funktion, wo er es nicht macht aber es wichtig ist.
wenn  in der Variable  ucTemp = 0x80 steht dann soll gelesen werden und
wenn   ucTemp = 0x00. aber beim debuggen springt der cursor immer
drüber, ohne es zu initialisieren!!!!!!!
danke für deine bzw. eure hilfe.
mfg wolfgnang
void SSC_read (int iAdresse, int iNumber_of_data)
{
   unsigned char ucTemp;
   ucTemp = 0x80;  // uctemp = 1000 0000   -> hier wird festgelegt, dass
gelesen wird,
             // da in RW command 1 steht (siehe Spec)
   ucTemp |= ((iAdresse<<3) & 0x78); // hier wird der Parameter
iAdresse (Start der Adresse) der ucTemp-
                      // Variable übergeben. Zuvor wird iAdresse um 3 
Stellen
nach rechts verschoben
                   // und mit 0x78 (1111 000) UND- Verknüpft. Die OODER-
Verknüpfung ist deshalb
                   // notwendig, damit die Bits mit 1 gesetzt werden.
   ucTemp |= (iNumber_of_data & 0x07); // hier wird der Parameter
iNumber_of_data (wieviele Adressen ab der
                        // Startadresse gelesen werden sollen) UND 
verknüft mit
0x07 (111).
   SSCTB = ucTemp;             // Übergabe der ucTemp Variable an das 
SCCTB
(SSC transmit buffer) Register,
                     // welche über die SSC clock an den TLE 5010 getakt 
wird.
                     // Die OODER- Verknüpfung ist deshalbnotwendig, 
damit die
Bits mit
                     // 1 gesetzt werden.
   while (SSCBSY == 1);
 }
  Ich kenne das Problem: Es liegt wahrscheinlich an deinen Makros. Ich versuche gerade, Makros zu generieren, mit denen ich einzelne Bits in Chars setzen bzw. löschen kann. Mein Aufbau entspricht deiner Funktion Auswertung, und nachdem ich die Makros umgeschrieben habe, wurde auch der letzte Wert vor dem ersten Makroaufruf initialisiert. Guck mal nach deinen Makros. Ach ja... kann mir jemand funktionierende Makros für die Bitmanipulationen geben? Meine funktionieren trotz intensivem "Probieren" immer noch nicht, und ich weiss nicht, woran es liegt heul Gruß Ralf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
  
  Bestehender Account
  
  
  
  Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
  Noch kein Account? Hier anmelden.
 Thread beobachten
 Thread beobachten Seitenaufteilung abschalten
 Seitenaufteilung abschalten