Forum: Digitale Signalverarbeitung / DSP / Machine Learning Interrupt Programmierung mit TI-DSP TMS320C64xx


von Patrick (Gast)


Lesenswert?

Hallo zusammen,

gerade tue ich mich etwas schwer mit der Interrupt Programmierung des 
TMS320C6416. Dieser Prozessor ist für mich noch Neuland und ich schlage 
mich mit der Fülle von App.notes und User's Guides herum. (Bin etwas von 
der übersichtlichen Dokumentation von Infineon verwöhnt!)
Was ich eigentlich suche, ist die Angabe, wo sich nun der 
Interrupt-Vector-Table befindet. Also Adresse, Länge, ... usw.
Ich würde gerne in "C" diesen Table als Pointer-Array ansprechen und 
befüllen. Geht das?

In der Dokumentation von TI finde ich entweder nur etwas über das 
DSP-BIOS, oder nur Sachen zur Interrupt-Source-Selection, nie aber die 
ersehnte Vektor-Tabelle. Vielleicht heißt die Tabelle auch nur anders, 
weswegen ich sie nicht finde! Wer kann mir hier eine Dokumentennummer 
empfehlen.

Danke für Eure Antworten,
Patrick

von Patrick (Gast)


Lesenswert?

Naja, ist wirklich ein schwieriges Thema.
Aber die Doku von TI ist extrem beschissen.
Ich meine jetzt das eine Problem gelöst zu haben, jetzt scheitere ich 
daran, daß ich das CSR nicht definieren kann, weil ich nicht weiß auf 
welcher Adresse es sich befindet.

Meine Frage:
Wer weiß, auf welcher Adresse ich beim TMS320C6416T das 
Control-Status-Register finde? - Besser noch, die Quelle, wo das steht.
(Oh, Infineon, was warst Du gut dokumentiert!)

von Peter Diener (Gast)


Lesenswert?

Hallo,

du musst das doch gar nicht definieren, du greifst einfach so drauf zu, 
es ist bereits definiert:

CSR = 0x00;    //schreibt da überall 0 rein

Oder möchtest du etwas anderes machen?

&CSR sollte dir die Adresse liefern.

Grüße,

Peter

von Peter Diener (Gast)


Lesenswert?

Ti Document spru732h.pdf Seite 325 Table 3-21 listet die Control 
Register auf.

Die Adressen beziehen sich wohl auf den Assemblerbefehl MVC (Move 
Between Control File and Register File), so genau hab ich das aber auch 
nicht verstanden, ich verwende es nur in C.

Peter

von Patrick (Gast)


Lesenswert?

Hallo Peter,

danke für Deine Antwort. Inzwischen hänge ich noch tiefer im Thema drin. 
Das CSR-Register ist tätsächlich nicht in den normalen Adressraum 
gemappt, sondern wird über spezielle Befehle angesprochen.
Die Interrupt-Programmierung selber ist hier noch schwieriger als 
erwartet: Man MUSS eine Assembler-Datei erstellen, in der die 
Interrupt-Vektoren liegen. Die einzelnen Vektor-"Zellen" muß in einer 
ganz bestimmten Weise aufgebaut sein. Von dort werden dann die 
eigentlichen Service-Routinen aufgerufen.
Soweit die Theorie. - In der Praxis klappt das nur leider immernoch 
nicht. - Mein Timer läuft, GIE ist an, entsprechender IE ist an, 
Interrupt-Request wird generiert, aber die Interruptroutine wird nicht 
aufgerufen!
Hätte nie gedacht, daß eine "einfache" Interrupt-Programmierung ohne das 
DSP-BIOS so ein Problem werden kann.
Wer kann mir helfen?

von Patrick G. (pattyman)


Lesenswert?

Hat sich erledigt:
Nach erneutem Nachlesen ist mir eine Passage ins Auge gefallen, in der 
steht, daß man auch den NMI-Interrupt aktivieren muß, damit es überhaupt 
funktioniert. - Naja, und jetzt funktioniert es!

Danke Dir Peter für Deine freundliche Mithilfe!

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.