Datum: 19.11.2008 17:51
Moin! Ich habe mal wieder eine Frage zu dem TMS320F2808... :-) Und zwar will ich das Register ST0 auslesen, um herauszufinden ob die Addition von zwei _iq (oder long) Werten einen Überlauf produziert oder nicht. Ich programmiere in C und meine Assembler Kenntnisse sind bescheiden. Anscheinend ist es in C nicht möglich auf das Register zuzugreifen (oder mir ist nur der name nicht bekannt). Wie sieht der assembler-Code in C aus, mit dem ich den Register-Wert in eine Variable schreiben kann? Gibt es vielleicht eine andere (bessere) Variante mit der ich bei einer Addition auf Überlauft Testen kann? MfG Alex
Datum: 21.11.2008 22:44
Ich kann dir leider nicht wirklich weiterhelfen. Es sieht so aus als sei kein "richtiger" Zugriff auf ST0 möglich. Es gibt in der TI-Knowledge-Base einen Artikel wie das beim C5000 mittels Pointer erledigt werden kann, dort ist ST0 memory mapped. Beim C2000 ist dies aber leider nicht der Fall...
Datum: 24.11.2008 08:55
Moin, Nachdem man nichts darüber findet hatte ich so etwas hatte schon befürchtet ;-). Ich bin in der Zwischenzeit auf das OVM bit gestoßen. Wenn man das setzt, dann passieren keine Überläufe bei Additionen, sondern das Ergebnis wird auf das Min/Maximum begrenzt. Code in C um das Bit zu setzten/löschen:
asm (" setc OVM") asm (" clrc OVM") |
MfG Alex
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel