Hallo Zusammen, ich hoffe, dass mir einer von euch bei meiner Frage weiterhelfen kann! Ich möchte mit einem MSP430F2012 (Entwicklungsumgebung IAR V3.42A, USB-Stick EZ430, spy-by-wire) eine Akkuladeschaltung realisieren. Dabei werden Akkuspannung, Akkutemperatur und Ladestrom zu bestimmten Zeiten gemessen (mit ADC10). Eine Zeitbasis ist auch vorhanden. In der Entwicklungsphase möchte ich nun überprüfen, ob das alles auch so funktioniert, wie ich mir das vorstelle und dazu will ich mir die gemessenen Größen mit Timestamp protokollieren. D.h. also der MSP läuft im Debug-Modus, lädt den Akku wie programmiert und z.B. jede Sekunde werden die gemessenen Größen in ein File gespeichert, ohne den Programmablauf zu unterbrechen. Eine Möglichkeit wäre natürlich, die Daten seriell an den PC zu übertragen und dort zu speichern. Bedeutet allerdings eine Software-UART im MSP zu implementieren, die ich nachher nicht mehr brauche. Jetzt die Frage: Ist es mit den C-Spy Macros auch möglich, alle erfassten Daten in ein File speichern zu lassen? Hat das schonmal jemand gemacht, ist das ein erfolgversprechender Ansatz? Wenn ja, ist der Macro-Overhead erträglich, d.h. kommt der MSP seiner eigentlichen Aufgabe noch nach oder bremst das zu sehr ein? Danke schonmal im Voraus, Stefan
Wo sind denn die C-Spy Macros dokumentiert? Bist du sicher, daß die auch mit dem EZ430 funktionieren?
>Wo sind denn die C-Spy Macros dokumentiert? Im IAR Embedded Workbench User-Guide... letztes Kapitel. >Bist du sicher, daß die auch mit dem EZ430 funktionieren? Nö, sicher bin ich nicht. Aber ich denke schon, da die Macros eine Sache von C-Spy sind und C-Spy wiederum mit'm EZ430 kann. Ich habe gestern ein wenig rumprobiert (allerdings mit dem Parallelport FET). Wenn man einen Log-Breakpoint setzt, dann erfüllt dieser meine Anforderungen... außer, daß sich die Daten nicht in ein File speichern lassen, sondern im Debug-Window geloggt werden. Zudem ist das ganze recht langsam. Eine andere Möglichkeit ist eben ein Macro zu verwenden und es mit einem 'normalen' Code-Breakpoint zu verbinden. Hat aber den Nachteil, daß der Programmablauf am Breakpoint natürlich anhält und nicht wie gewünscht weiterläuft! Außer es gibt ein Macro, welches den Ablauf automatisch wieder aufnimmt?! Hmm, da bislang anscheinend keiner sowas gemacht hat, muss ich wohl selbst den schwere Weg gehen... :-)
@Michael Danke für den Tip, aber IAR wäre als Gesprächspartner sicher besser geeignet. Hab mir auch die App-Notes von denen angeschaut, aber so recht schlau bin ich daraus auch noch nicht geworden.
Ne ne, es gibt von TI eine DLL zur Ansteuerung des Debuggers. Diese bindet IAR auch nur ein. Vor kurzem ist auch eine Application Note von TI veröffentlicht worden, wo der Zugriff auf die DLL beschrieben ist. Du müsstest also von deinem Programm auf diese DLL entsprechend zugreifen und hast dann alle Funktionen, die du im Debug-Modus auch hast.
Aha... nee die App-Note kenne ich nicht. Aber wenn da die DLL beschrieben ist, würde das ja bedeuten, dass ich einen eigenen Debugger schreiben müsste, um die DLL zu benutzen. Ich wollte aber eigentlich einfach C-SPY nutzen :-) Vielleicht habe ich mich oben auch nur zu kompliziert ausgedrückt? Was ich eigentlich möchte ist folgendes: Im µC (MSP430F2012) werden z.B. jede Sekunde mehrere ADC10 Kanäle gesampled. Diese Werte benutze ich, um die Akkuladung zu steuern. Da die Werte ja aber schon im µC vorliegen, möchte ich diese auch gleich auf den PC übertragen, um sie dort besser analysieren zu können! Allerdings ist dies nur in der Entwicklungsphase notwendig. Später läuft das Ding autark vor sich hin! Ich dachte jetzt nur, es gäbe vielleicht eine 'einfache' Lösung, an diese Werte zu kommen...
Okay. Mit dem C-SPY ist es glaube ich nicht möglich, dass zu automatisieren. Du müsstest dir ja keinen vollständigen Debugger schreiben. Im Prinzip reicht es ja, wenn du zunächst dir an eine bestimmte Adresse einen Breakpoint setzt, den Controller startest und wartest, bis er auf den Breakpoint trifft. Dann list du das die Speicheradresse, wo dein Wert gespeichert ist, aus und speicherst diesen Wert in einer Datei. Anschließend kannst du den Controller wieder starten und warten. Sollte eigentlich nicht so umfangreich werden.
Oh Gott, ich möchte diesen Text korrigieren :-) Ich hoffe, du weißt trotzdem, was ich meine.
> Oh Gott, ich möchte diesen Text korrigieren :-)
Wenn du dich registrierst und einloggst, ist das möglich. Da steht
nämlich für einige Zeit unter deinem Beitrag folgende Linkzeile:
1 | Beitrag melden | Bearbeiten | Löschen | Antwort | Antwort mit Zitat |
Jaja, ich verstehe schon, was Du meinst :-) >Im Prinzip reicht es ja, wenn du zunächst dir an eine bestimmte Adresse >einen Breakpoint setzt, den Controller startest und wartest, bis er auf >den Breakpoint trifft. Genau das kann ich ja in C-Spy machen. Dem Breakpoint wird ein Macro zugeordnet, welches dann ausgeführt wird (um z.B. Daten in ein File zu speichern. Dieses Macro existiert auch schon, wie ich mittlerweile herausgefunden habe: __writeFile oder __fmessage). Mein Problem ist nur, dass der Breakpoint das µC-Programm unterbricht und nicht mehr automatisch weiter ausführt. Außerdem bekomme ich wohl ein Timingproblem, weil der Filezugriff doch recht lange dauert und in der Zeit der µC gestoppt bleibt. Ich befürchte, dass ich mir doch eine UART-Schnittstelle in den µC programmieren muss. Dumm nur, dass der 2012 nun gerade eben 'nur' SPI und I2C hardwaremäßig unterstützt :-(
Stefan wrote: > Ich befürchte, dass ich mir doch eine UART-Schnittstelle in den µC > programmieren muss. Dumm nur, dass der 2012 nun gerade eben 'nur' SPI > und I2C hardwaremäßig unterstützt :-( Wäre zumindest ne sinnvolle Möglichkeit. Und die Software-UART per Timer gibts doch bei TI als Quellcode. Ist wirklich ziemlich einfach, vor allem, wenn du nur Senden willst. Ich hab die Soft-UART mit 6MHz SMCLK mit 57600 betreiben können, ohne Fehler.
Software-UART ist schon klar. Problem ist nur, dass ich den Timer schon anderweitig in Beschlag genommen habe und jetzt schauen muss, wie ich da die Ressourcen vernünftig verteile, ohne Chaos anzurichten :-) Deshalb wäre eine in HW gegossene UART besser gewesen... Trotzdem mal Danke an alle!
Du könntest einen zweiten 2012 per SPI ankoppeln und den die Weitergabe per USART machen lassen.
Hmm... ja könnte ich :-) Dann könnte ich mir aber auch eine SPI-zu-UART Bridge reinbasteln. Das ist aber dafür, dass es nur zum Testen gedacht ist, etwas zu übertrieben, finde ich. Ich probier's dann erst mal in Software.
Stefan wrote: > Hmm... ja könnte ich :-) > Dann könnte ich mir aber auch eine SPI-zu-UART Bridge reinbasteln. > Das ist aber dafür, dass es nur zum Testen gedacht ist, etwas zu > übertrieben, finde ich. Ich probier's dann erst mal in Software. Es reicht doch, wenn du den zweiten 2012 auf einem Steckbrett zusammenstoppelst und zum Test mit deiner Schaltung verbindest.
Schon, aber die Soft-UART muss ich auch dort implementieren. Falls ich bei 'nur' einem 2012 Ressourcenprobleme bekomme, dann werden ich's wohl so machen müssen! Schau'n mer mal, dann seh'n mer schon...
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.