Forum: Mikrocontroller und Digitale Elektronik SSC Senden mit Infineon XE167, Funktion U2C1_SSC_ubTxDataReady()


von Holger B. (rst-el)


Lesenswert?

Hallo,
ich nutze beim Senden über U2C1 die Funktion U2C1_SSC_ubTxDataReady(), 
um festzustellen, ob die Daten versendet wurden. Die Funktion prüft den 
Status des Transmit Shift Indication-Flags. Anschließend nehme ich das 
CS-Signal für einen extern angeschlossenen Treiberbaustein weg.

Hierbei gibt es folgendes Problem: Die Funktion meldet bereits "Senden 
beendet", obwohl noch 1 Takt ausgegeben wird.  Das heißt, der Status des 
Flags wechselt bereits mit dem letzten Sendetakt. Die Funktion ist 
hierdurch nicht brauchbar für meine Zwecke.

Mit den Sende-Interrupt Bits scheint auch keine andere Möglichkeit zu 
bestehen, da hier ebenfalls die Flags als Grundlage dienen, nur nicht 
gepollt wie mit der o.g. Funktion.

Bleibt vermutlich nur eine kleine (ausgemessene) Zeitschleife  nach dem 
Sendebefehl, um das CS für den Treiber zu schalten

Hat jemand mit diesem Controller ähnliche Erfahrungen gemacht ?

Nachfolgend der Code-Auszug:

  OUTPT_CS_ELMOS_PIN = 0;

  U2C1_SSC_vSendData(ulSSIOutELMOSData);

  //warten, bis gesendet
  while(!U2C1_SSC_ubTxDataReady())
  {_nop();
  };

  OUTPT_CS_ELMOS_PIN = 1;

von Rothaus B. (tannenzaepfle)


Lesenswert?

Hallo Holger,

warum setzt du per Hand das _CS?
Usic generiert das doch schon automatisch.

von ron (Gast)


Lesenswert?

Hallo Holger,

ich würde ganz einfach den USIC das generieren lassen, über Word und 
Frame länge kannst du alles einstellen wie Du das /CS benötigts.

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
Noch kein Account? Hier anmelden.