mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 120ms "warten" msp430


Autor: Bergie B. (bergie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm einen Hardware-Timer und löse nach einer Zeit 'n' einen Interrupt 
aus. Den Controller nur warten zu lassen, ist Verschwendung von 
Material.

Autor: Bergie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
warte(120); // x ms warten


für mich in der schublade hat wäre ich überaus dankbar.

LG

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bau dir ne while Schleife die 1ms wartet. Die verpackst du dann in deine 
"warte()" Funktion und rufst die x-mal auf. Fertig!

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ö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. ;)

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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);

Autor: siegmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sollte ein

#include <util/delay.h>

werden

Autor: Bergie B. (bergie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bergie B. (bergie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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.