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!
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!
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.