www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP TI C2000 und MatLAB Target Link: Interruptproblem


Autor: Christian Nöding (phoenix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


ich muss mit dem C2000 von TI (genauer dem TMS320F28335) arbeiten. Dafür 
verwende ich das CodeComposerStudio v3.3 von TI zusammen mit 
MatLAB/Simulink und dem Target Link für den C2000.

Ein Projekt in reinem C-Code geschrieben und direkt im 
CodeComposerStudio kompiliert lief auf anhieb (einfach den PWM-Block, 
ADC-Block und GPIO-Ports angesteuert).

Jetzt wollte ich MatLAB/Simulink verwenden und konstruierte entsprechend 
die Blöcke. Kompiliert wird alles und es wird auch in den C2000 geladen 
und ausgeführt. Leider läuft das Programm nur wenige µs (PWM Blöcke 
laufen kurz an - sieht man am Oszi) und läuft sich dann in einem 
Interrupt fest (hab es durch Kommentierung der einzelnen Funktionen im 
erstellten C-Code herausgefunden). Der Interrupt kommt aber nicht von 
mir, da ich in dem einfachen Beispiel keine Interrupts verwenden wollte.
Selbst die mitgelieferten Demo-Beispiele zeigen das gleiche Verhalten. 
Muss man irgendwo noch Dateien im Simulink-Modell einbinden, dass die 
Interrupt-Vektoren anders initialisiert werden? Ich komme leider nicht 
weiter. Wäre nett, wenn hier jemand einen Tipp hätte. Auch einfache 
Modelle ohne Interrupts erzeugen diesen "Festlauf"-Interrupt.



Also nochmal kurz:

manueller C-Code: läuft

C-Code aus MatLAB/Simulink über TargetLink: startet und läuft in 
Interrupt fest - Kommentierung von "enable_interrupts();" in 
main-Funktion lässt Programm normal ausführen, allerdings brauche ich 
später die Interrupts (für PWM-gesteuerte ADC-Wandlung).


Warum erstellt Simulink diesen zusätzlichen Interrupt überhaupt 
automatisch?


Vielen Dank!

Autor: Christian Nöding (phoenix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs selber rausgefunden. War ein Bug in TargetLink für C2000 DSPs. Wer 
das gleiche Problem hat:

Die Datei 
"%MATLABINSTALLDIR%\R2009a\toolbox\rtw\targets\ccslink\ccslink\c2000\c28 
33xPeripherals.cmd"  öffnen und die Zeile "PieVectTableFile : > 
PIE_VECT,   PAGE = 1" als Zeile 79 einfügen. Danach kompiliert das 
Simulink- Modell und es wird hervorragend ausgeführt.

Naja, die Software kostet ja auch nix - da kann man ja schonmal so einen 
"kleinen" Bug erwarten.

ciao!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail ü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

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.