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
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!)
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
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.