Timer Reload und Alte Werte.

Gast #3996114
Lesenswert?
• ▲
▼
Hi!

Ich möchte auf meinem MSP Hall-Sensorwerte verarbeiten und habe 
folgendes Problem:

Ich möchte mit einem Freilauftimer bei jeder Sensorflanke den Aktuellen 
Timerwert nehmen und von dem anschließend den vorherigen Wert abziehen. 
Funktioniert ja bis auf den Fall des Reloads ganz gut. Nur sobald ich 
einen Wert von vor dem Reload und einer nach dem reload habe, ist mein 
Delta kaputt...

Hat da jemand eine elegante Lösung parat um das "Anfängerproblem" in den 
Griff zu bekommen?
Gast #3996321
Lesenswert?
• ▲
▼
Da ich 3 Sensoren habe und ich daher leider nicht für jeden Sensor 
einfach einen eigenen Timer verwenden kann, ist mir bisher leider noch 
keine schönere Idee eingefallen.
 Ich möchte damit ein Tachosignal für einen Motor generieren.
Gast #3997360
Lesenswert?
• ▲
▼
Den NSP 430 von TI meinte ich mit MSP ;-)


Ich habe ja den Timer mit Autoreload laufen aber wenn dieser wieder 
zurück auf Null geht und meine Alten Werte noch im oberen Zählerbereich 
des Timer sind und die neuen im unteren Zählerbereich, da kommt es zu 
Problemen da die neuen Werte ja kleiner als die alten sind....
#3997365
Lesenswert?
• ▲
▼
MaMü schrieb:
> Ich habe ja den Timer mit Autoreload laufen aber wenn dieser wieder
> zurück auf Null geht und meine Alten Werte noch im oberen Zählerbereich
> des Timer sind und die neuen im unteren Zählerbereich, da kommt es zu
> Problemen da die neuen Werte ja kleiner als die alten sind....

Das ist aber kein Problem. Wenn du sie subtrahierst, kommt trotzdem das 
richtige raus. Das gilt natürlich nur, solange der Timer zwischen den 
beiden Werten nicht mehr als einmal überläuft.

Beispiel in 8 Bit:

1. Messung: 200
2. Messung: 100
100 - 200 = -100 -> ist aber vorzeichenlos nicht darstellbar. Deshalb 
kommt in 8 Bit stattdessen 256 - 100 = 156 raus.
Von 200 bis zur 0 nach dem Überlauf braucht es 56 Zyklen, dann nochmal 
100 Zyklen bis zum 2. Messwert, ergibt 156 Zyklen, also genau das 
Ergebnis, das rausgekommen ist. Das kannst du mit jeder Kombinatin 
probieren, bei der das korrekte Endergebnis vom Wertebereich des 
Datentyps dargestellt werden kann, und es wird immer das richtige 
rauskommen.
Gast #3997387
Lesenswert?
• ▲
▼
Hi und danke für die ausführliche Antwort!

Wenn das so ist, muss ich wohl irgendwo anders einen Fehler haben :-(

Ich hab genau das Phänomen dass in zeitlicher Abhängigkeit der 
Umdrehungsgeschwindigkeit für eine Umdrehung meine ganzen Werte total 
von dem Rest abweichen. Diese sinken dann kurzzeitig total in den 
negativen Bereich( ist ein signed int) Daher hätte ich gedacht dass ich 
da den Reload sehe...
Gast #3997512
Lesenswert?
• ▲
▼
Achso sorry ja klar :-D es ging um dn MSP430FR5739!

btw das Problem hat sich gelöst! Hab die Routine einfach nochmal neu 
aufgesetzt und beachtet was geschrieben wurde und jetzt läufts ;-)

danke nochmal!

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.