mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 positive Flanke messen


Autor: Stephan Plaschke (steph0815)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich versuche eine positive Flanke mit einem MSP430x169 zu messen. 
Ich kann dazu nur den PORT1 benutzen. Dazu initialisiere ich den PORT1 
Interrupt, starte in diesen den TimerA, stelle die Flanke auf 
high-to-low transition und im nächsten Interrupt lese ich den Wert aus. 
Hierzu mein Quellcode:
//TimerA Interrupt
TACTL |= MC_2;      // start TIMERA
  
if (position_MANCODE == 1) 
{
  timer_MANCODE = CCR2;   // Get current timer value
  TACTL = MC_0;      // stop TIMERA
  P1IE &= ~PORT1_IE;    // PORT1 interrupt disable      
}
P1IES ^= PORT1_IES;      // set interrupt on low-to-high transition  
P1IFG &= ~PORT1_IF;    // clear interrupt flag 
++position_MANCODE;



// hauptschleife
P1IE |= PORT1_IE;    // PORT1 interrupt enable  

while(!(position_MANCODE==2));    

position_MANCODE = 0;

// Timerinit
TACTL = TASSEL_2 + TACLR;     // SMCLK, clear TAR

CCTL0 &= ~CCIE;               // CCR0 interrupt disable      

Ich erhalte nun aber ein "willkürliches" Ergebnis. Das es nicht die 
beste Methode ist, weiß ich auch. Es sollte aber doch möglich sein ein 
kontinuierliches, ungefähres Ergebnis zu erhalten.
Für jeden Tipp bin ich dankbar
Mfg
Stephan

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was genau willst Du messen? Die Anstiegszeit der Flanke oder was 
beabsichtigst Du?

Autor: Stephan Plaschke (steph0815)
Datum:
Angehängte Dateien:
  • preview image for a.JPG
    a.JPG
    6,44 KB, 221 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Oh ok schlechte Beschreibung. Ich beabsichtige den High Pegel zu messen. 
D.h. die Zeit zwischen der steigenden und fallenden Flanke. Da dies 
nicht kontinuierlich ist und auch vom Low Pegel unterschiedlich, kommt 
eine Frequenzmessung nicht in Frage.

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutze doch das Capture-Modul des MSP430F169!

Autor: Ampfing (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stephan,

1. setzt Du Dein Timer-Register nirgends zurueck -> Der Timer faengt 
immer bei unterschiedlichen Werten an zu zaehlen (ausser Du merkst Dir 
den Anfangswert und bildest die Differenz).
2. Solltest Du den Timer anhalten, bevor Du seinen Wert in timer_MANCODE 
'speicherst'
3. Wieso startest Du den TimerA in der ISR des Timers? (zumindest lese 
ich Deinen Codeabschnitt mal so)
4. Wo wird position_MANCODE denn zu 1 gesetzt?

Autor: Stephan Plaschke (steph0815)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ampfing

1. nein ich setze es nicht zurück. Wusste nicht das er immer an 
verschiedenen Stellen anfängt zu zählen. Wenn ich debugge dann bekomme 
ich die selben Werte, daher dachte ich das er wenn man ihn ausschaltet 
dann beginnt er von 0. Werde ich aber im Code ändern.

2. Ich habe es schon getestet mit stoppen bevor ich den Wert auslese. 
Macht keinen Unterschied. Sollte auch ok sein da ich mit den SMCLCK 
arbeite und ein synchrones auslesen stattfindet.

3. Timer starte ich im Interrupt da ich ja auch die steigende Flanke 
warte. Mit dieser starte ich die Messung und beende diese mit der 
fallenden Flanke. So ist die Theorie. Ansonsten müsste ich den Timer 
starten, steigende Flanke auslesen, fallende Flanke auslesen und 
Differenz berechnen. Ist ein Ansatz werd ich gleich testern.

4. In der Interrupt Routine mit
++position_MANCODE;

@MSP_crew

Capture Modul wäre dann auch Timer im continous mode dann auslesen und 
noch mal auslesen, richtig? Kann ich denn auch die Flanke ändern? Und 
welchen Pin muss ich dann nehmen wird mir nicht ganz klar aus dem 
Manual.

mfg

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Stephan Plaschke (steph0815)

>Capture Modul wäre dann auch Timer im continous mode dann auslesen und
>noch mal auslesen, richtig? Kann ich denn auch die Flanke ändern?

Ja + Ja.

> Und welchen Pin muss ich dann nehmen wird mir nicht ganz klar aus dem
>Manual.

Na den, an dem der ICP dranhängt. Datenblatt Seite 7, überall wo Capture 
steht.

MfG
Falk

Autor: Stephan Plaschke (steph0815)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So vielen Dank nach etwas probieren mit den richtigen Pins klappt es 
jetzt!

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.