Hi! Ein msp430 248 mit 8MHz (vieleicht schiebe ich ihn auch noch auf 16 hoch) Nun möchte ich zwischen 2 funktionen ca 120ms warten bevor die nächste funktion gestartet wird. hat vieleicht einer eine ferige funktion für mich zur Hand ? oder könnte ich das auch mit dem hoch zählen einer for schleife erreichen? LG Bergie
Nimm einen Hardware-Timer und löse nach einer Zeit 'n' einen Interrupt aus. Den Controller nur warten zu lassen, ist Verschwendung von Material.
Nun das mag stimmen, Aber an dieser stelle muss ich leider auf eine Externe messung warten. Ich würde das gerne ohne großen aufwan testen. Also wenn jeman eine fertige funktion im sinne von
1 | warte(120); // x ms warten |
für mich in der schublade hat wäre ich überaus dankbar. LG
Bau dir ne while Schleife die 1ms wartet. Die verpackst du dann in deine "warte()" Funktion und rufst die x-mal auf. Fertig!
Öhm..du wartest auf eine externe Messung? Gibts ein Signal, das dir zeigt, dass die Messung fertig ist? Dann würd ich das nehmen um zwischen den Funktionen zu warten. ;)
so eine programmierweise ist zum würgen aber da man mit dem delayzeug früher oder später eh auf die klappe fällt und dann lernt das es mit timer doch besser geht ... nim #include <util/dely.h> _delay_ms(120); oder for(char i=0 ; i<=120;i++) _delay_ms(1);
Hallo, wenn Du mit IAR Compiler arbeitest, gibt es "__delay_cycles" findest Du in "intrinsics.h" Deine ms Funktion könnte dann wie folgt aussehen : #include "intrinsics.h" void delay_ms(unsigned int zeit) { unsigned int i; for (i=0;i<zeit;i++) { __delay_cycles(1000*8); // 1 ms warten } } wobei natürlich eine Timer Int immer besser ist, denn dann könnte der MSP430 während dieser Zeit ein wenig ausschlafen !! Noch einen schönen Tag Gruß Siegmar
Danke euch. Ich habe das mit der abtastung des Signal versucht, aber dieses hat mir einige Probleme bereitet, msp430 vs AD7793. Um die Messung nun zum laufen zu bekommen möchte ich warten. Wenn das dann endlich mal hinhaut werde ich sicherlich noch meinen code anpassen. LG
dann würd eich dort gleich nocmal ansetzen im datenblatt steht welches bit man prüfen muss der sagt dir sogar welcher ADC wert fertig in register steht und beriet zum abholen wenn du dort probleme hast .. erschlage das nicht mit solchen kranken lösungen wie .. ich warte dann eben mal
Moin moin, ich freue mich das es funst ;) also zunächst habe ich einen EXTERNEN ADC benutzt welcher mir die Daten bereit gestellt. 2. ist die Messung nur ein Teil meines Codes welchen ich hier mit meinem "WARTEN" sehr genau seperat betrachten konnte. Das warten ist sicherlich keine schöner Code, aber zum Debugen mit Oska ist es eine gute möglichkeit Fehler zu finden. Nach dem ich nun meine Messung zufriedenstellen zum laufen bekommen habe, stehen mir die Optionen "timer interrupt " oder "interrupt pin" zur verwendendung Bereit. Ich habe mich nach den ersten Test mit dem Timer für den PIN interrupt endschieden. LG Bergie
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.