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;
Hallo Holger, warum setzt du per Hand das _CS? Usic generiert das doch schon automatisch.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.