Hallo zusammen, ich bin gerade dabei mich mit dem TMS320F2808 Controller von TI zu beschäftigen. Mir steht dafür ein TMS320C2000 digital Experiementer Kit (SPRUFR6A) mit einem einem JTAG USB Emulator XDS510LC von Spectrum digital und CCS 3.4 zur Verfügung. Jetzt bin ich schon seit über einer Woche dabei mich einzuarbeiten aber komme einfach nicht weiter - folgendes Problem: Wenn ich das "Musterprojekt", welches bei dem Evaluation Board dabei war kompiliere und auf den Controller übertrage (wird ins SARAM geschrieben) und danach mein eigenes Programm lade ohne die Spannungsversorgung vom Board zu nehmen (das bringt nur 2 LED's zum blinken), funktioniert mein selbstgemachtes Programm prima. Wenn ich allerdings nach einem Controllerreset direkt mein Programm lade, funktioniert gar nichts!! Im Debug tool kann ich zwar sehen wie die variablen hochgezählt werden, aber an den Controller LED's blinkt nichts!! Meine Vermutung ist, dass ich irgendwas mit einem headerfile, CMD file oder einer linker Einstellung falsch gemacht habe - aus diesem Grund hab ich versucht alle Einstellungen und files aus dem "Musterprojekt" von TI zu übernehmen aber es funktioniert einfach nicht!! Ich bin mittlerweile ziemlich verzweifelt, habe schon fast alle APPnotes über den Controller gelesen aber nach wie vor ohne Erfolg. Vielleicht hat jmd von euch einen Rat woran es liegen könnte?? Wäre wirklich super!! Viele Grüße und besten Dank fürs lesen!! Christian
Ein Reset ist eigentlich nur dafür da, dass definiert die Hardware resetet "Reset CPU", und definiert der Programmcode aus dem Flash geladen wird. Wenn nun dein Programm im SRAM ist und du resetest, dann ist es einfach nur Glück wenn das Programm noch läuft. Du könntest höchsten den Controller neu starten "Restart". Dies müsste eigentlich gehen. Ich persönlich würde aber schnellstmöglich den Programmcode so schreiben, dass er aus dem Flash geladen werden kann.
@Tim R.: Es soll ja offenbar kein Code ausgeführt werden, der vor einem Reset geladen worden ist. Das Problem ist (wie ich es verstehe), dass das Programm, das in das SARAM geladen wird, nur funktioniert, wenn vorher ein anderes Programm gelaufen ist. @Christian: Vielleicht macht das Beispielprogramm irgendeine Initialisierung, die einen Hardwareteil einschaltet (GPIO...) oder bestimmte Pins als Ausgang definiert, was in deinem Programm fehlt. Dadurch ist es möglich, dass dein Programm nur läuft, wenn zuvor das Beispielprogramm alle nötigen Initialisierungen durchgeführt hat. Das Problem ist, dass bei Verwendung des Debuggers verschiedene Programme ohne vorherigen Reset geladen und ausgeführt werden können, wodurch solche Effekte entstehen können, wie z.B., dass vom ersten Programm gesetzte Register noch so gesetzt sind, wenn das zweite Programm läuft. Prinzipiell ist es nicht falsch, bei der Entwicklung nach Möglichkeit alles aus dem RAM laufen zu lassen, das ist meist einfacher und spart Flash-Schreibzyklen. Vielleicht kannst du den Quellcode posten, dort sollte man den Fehler in der Initialisierung eigentlich schnell finden. Grüße, Peter
Hallo ihr beiden, vielen herzlichen Dank für eure Antworten!! @Tim mir ist bewusst dass das der SRAM Speicher leer ist wenn ich einen Reset durchgeführt habe - das Problem ist vielmehr dass das mein eigenes Programm nach dem Schreiben in den Controller nicht läuft, wenn nicht zuvor das Musterprogramm von TI lief! @Peter Vielen Dank auch nochmal für deinen Input! Du schreibst dass eventuell Initialisierungen vom "Beispielprogramm" in mein eigenes Programm übernommen werden obwohl ich den Speicher neu beschrieben habe? Werden die Registerwerte beim Schreiben nicht zurückgesetzt?? Wenn das so ist könnte es gut sein, dass ich die GPIO Register vielleicht noch nicht ordentlich initialisiert habe - werd ich gleich mal im Datenblatt nachlesen. Ich hab mein eigenes Programm beigefügt! Es orientiert sich von der Initialisierung her an einem Code den ich von der TI Seite habe - ich habe lediglich noch eine Pausenschleife eingefügt und greife auf die beiden GPIO Pins zu... Besten Dank nochmal für eure Unterstützung!! Viele Grüße!! Christian
>Werden die Registerwerte beim Schreiben nicht zurückgesetzt??
Nein, das werden sie nicht, denn du beschreibst mit dem Debugger beim
Hochladen des Codes das Programmspeicherram, nicht die Register.
Ein Controllerreset setzt die Register auf die default-Werte zurück.
In deinem Beispiel werden die Portpins nirgendwo als Ausgang definiert,
per default sind das Eingänge. Das zuvor verwendete Programm wird die
Pins wohl als Ausgang definiert haben.
Grüße,
Peter
stimmt - genau so isses :-) Ich ärger mich gerade tierisch dass ich sooo viel Zeit mit diesem ober dämlichen (Anfänger)fehler verbracht habe - ich hab das Problem immer in den Linker und CMD settings gesucht!!! Besten Dank für deine Hilfe!! Christian
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.