Forum: Mikrocontroller und Digitale Elektronik MSP430 Uhr für Zeitstempel


von Ginbak (Gast)


Lesenswert?

Hi,

ich hab noch nie vorher mit mikrokontrollern gearbeitet und soll jetzt 
rausfinden, wie man am besten zeitstempel erzeugt. es geht darum, dass 
ein smartphone mit dem MSP430 verbunden wird und der msp daten an das 
phone schickt. diese sollen jedoch mit einem zeitstempel versehen 
werden. es gibt, wie ich das verstanden habe, im msp mehrere uhren und 
man kann dafür den DCO verwenden, oder hab ich da was missverstanden? 
also müsste ich beim verbinden der geräte die zeit synchronisieren und 
dann mit der weiter arbeiten. gibt es noch einen anderen weg, eine 
persistente zeit zu erzeugen auf dem msp? das ziel ist, dass das phone 
nicht immer verbunden sein muss und der msp hin und wieder aus geht und 
wenn ich das nicht falsch verstanden habe, "stirbt" damit ja auch die 
uhr?

vielen dank im voraus
Ginbak

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ginbak schrieb:
> es gibt, wie ich das verstanden habe, im msp mehrere uhren und
> man kann dafür den DCO verwenden, oder hab ich da was missverstanden?

Da hast Du was missverstanden. Der englische Begriff "clock" steht 
nicht für Uhr, sondern für Takt, resp. Taktgenerator.

Das, was wir "Uhr" nennen, heißt im englischen "real-time clock" (RTC), 
und wird gerne (albernerweise) als "Echtzeituhr" übersetzt.

Eine RTC aber enthält ein msp430 nicht. So etwas kann man als Software 
implementieren (ein von einer der Taktquellen des MSP430 zyklisch 
ausgelöster Interrupt zählt einen Sekundenzähler hoch, aus dem beim 
Auslesen die Uhrzeit berechnet wird), oder als separaten 
Hardwarebaustein hinzufügen.

In beiden Fällen aber ist eine dauerhafte Stromversorgung erforderlich, 
entweder des MSP430, damit der seinen Sekundenzählerstand nicht verliert 
und beständig weiterzählt, oder der RTC, damit die ihre 
Zeitinformationen aktualisieren kann.

von Max G. (l0wside) Benutzerseite


Lesenswert?

Wobei die Spromversorgung auch eine Knopfzelle sein kann. So was füttert 
in einer änhlichen Anwendung hier einen MSP430F2012 seit mehreren 
Monaten.

"Ausgehen": der MSP430 geht dann in den Low Power Mode und braucht nur 
noch ein paar µA Strom. Ganz aus ist er aber da nicht.

Max

von Ginbak (Gast)


Lesenswert?

hey,

danke erstmal für die schnellen antworten.
ja, das mit der "clock" hatte ich schon richtig verstanden, hatte es nur 
nicht richtig ausgedrückt. kommt denn der klassische msp mit einer 
knopfzelle?
über die RTC programmierung habe ich schon ein paar foreneinträge 
gelesen, die aber mehr fragen aufgeworfen haben als sie beantwortet 
haben.
wenn ich es richtig versteh zähle ich ja einfach die takte hoch. dazu 
wurde oft der DCO verwendet und man hat zb. 1 signal jede sekunde 
gesendet. wenn ich aber genauer werden will, kamen diskussionen über 
delays usw auf, wenn ich da nicht was falsch verstanden habe. kann man 
so etwas irgendwie umgehen? ein Zeitstempel sollte ja schon recht 
akkurat sein. :/

von Max G. (l0wside) Benutzerseite


Lesenswert?

Ich mach hier eine kostenpflichtige Anfängerschulung auf...

- Der MSP430 hat keine Knopfzelle dabei. Die musst du schon selbst 
kaufen.
- Es gibt (ich hätte es nicht geglaubt) tatsächlich noch RTCs mit 
integrierter Batterie: DS12CR887
- Beschäftige dich mal mit dem Thema Interrupts und Low Power Mode beim 
MSP430 - steht im Family User´s Guide.
- Das ez430 ist nicht teuer und ermöglicht (auch dank Demos) einen 
relativ einfachen Start.

Max

von GB (Gast)


Lesenswert?

Wenn Du einen von diesen hier benutzt:

MSP430F665x, MSP430F645x, MSP430F565x, MSP430F535x Mixed Signal 
Microcontrollers

bekommst Du gleich einen mit Echtzeituhr und Batteriepufferung für die 
Uhr.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

GB schrieb:
> bekommst Du gleich einen mit Echtzeituhr und Batteriepufferung für die
> Uhr.

Aber ohne Batterie, und ohne Batteriehalter. Die müssen schon noch 
selbst drangebastelt werden.

von Gerrit B. (gbuhe)


Lesenswert?

Hi Ginbak,

für Deine Aufgabe ist es unerläßlich, daß Du Dich in die Thematik 
Mikrocontroller einarbeitest. Der kleinste MSP430 ist hervorragend für 
die genannte Aufgabe geeignet, sofern nicht noch Anforderungen unerwähnt 
blieben. Du solltest einen 32.768kHz-Quarz einsetzen und einen Timer 
programmieren, der - wie oben schon vorgeschlagen - jede Sekunde einen 
Interrupt erzeugt, der die Sekunden hochzählt und Überläufe abfragt. Der 
Strom beträgt dann für >=99,9% der Zeit weniger als 1uA(!). Nur zur 
vollen Sekunde wird für einige Mikrosekunden <100uA benötigt. Damit ist 
die Betriebszeit mit einer Knopfzelle schon sehr groß.

Eine Einführung in die MSP430-MCs findest Du hier:

http://unidsp56.de/misc/MC-KursH13_130623a.pdf

Im Workspace für die Entwicklungsumgebung (Code Composer Studio) zum 
Kurs findest Du u.a. eine funktionierende Uhr:

http://unidsp56.de/misc/workspaceMCcourseH13_130623.zip

Wenn Du nun noch eine UART einbindest (späteres Beispiel im Workspace) 
und da ein kleines Bluetooth-Modul (Ebay 7€) dranhängst, kannst Du sogar 
drahtlos mit dem Smartphone reden.

Viel Erfolg!

Gerrit, DL9GFA

: Bearbeitet durch User
von Ginbak (Gast)


Lesenswert?

Hallo,

vielen Dank für eure Antworten. Den Bedarf eines 32.768 kHz-Quarz hatte 
ich auch schon in bei meiner Recherche gefunden. Leider bin ich nicht in 
der Postion, mich intensiv in die Mikrokontroller-Programmierung 
einzuarbeiten, da es nur Teil eines größeren Projektes ist und ich nur 
wenig Zeit dafür erübrigen kann, daher auch so "dumme" Fragen wie "hat 
der MSP eine Knopfzelle". Auch bin ich mir nicht sicher, in wie fern es 
gewünscht ist, eine  große Menge an weiteren Peripherieteilen 
anzubringen. Als Alternative dazu steht, das Phone selbst die Timestamps 
erstellen zu lassen, was aber somit zu einem gewissen Delay führt 
(Übertragungszeit ans Phone, eventuelle Fehlübertragungen usw usf). 
Daher ging es darum, den Aufwand abzuwägen, den es benötigt, eine RTC zu 
programmieren oder anzubringen. Auch sollten die Timestamps nicht nur 
Sekunden-genau sondern auch Millisekunden-genau und schon da sehe ich 
schwierigkeiten. Gehen wir mal davon aus, dass wir nur die erste 
Kommastelle nach der Sekunde (also alle 100 ms senden) wollen, kostet da 
der Interrupt nicht recht hohe Rechenleistung?

Danke für eure Antworten

von Karl H. (kbuchegg)


Lesenswert?

Ginbak schrieb:

> Kommastelle nach der Sekunde (also alle 100 ms senden) wollen, kostet da
> der Interrupt nicht recht hohe Rechenleistung?

Mir ist nicht klar, was du exakt damit meinst.
Aber:
Der MSP macht problemlos mindestens 1 Million Befehle in der Sekunde. 
Was denkst du, wie Schwierig es für den ist, alle 0.1 Sekunde mal ein 
paar 100 Befehle (in Wirklichkeit sind es sogar weniger) zwischendurch 
einzuschieben.

Das viel größere Problem besteht darin, dass die Übertragung des 
Timestamps ja auch Zeit kostet. Das eigentliche Problem besteht in der 
exakten Synchronisierung eines Ereignisses mit der dann gültigen Zeit.

Was benötigt werden würde ist zum Beispiel ein Eingang am MSP, mit dem 
man dem MSP mitteilt: ich brauche die exakte Zeit genau zu diesem 
Zeitpunkt. Der MSP speichert die aus seiner intern geführten Uhr weg und 
danach kann man diesen Timestamp 'gemächlich' über die vorhandenen 
Kanäle auslesen.

Für den MSP ist das immer noch pipifax.

Mir scheint du hast da einen Trugschluss, den so viele haben. Nur weil 
dein Telephon einen Gigaherz getakteten Prozessor hat und sich trotzdem 
zäh anfühlt, bedeutet das nicht, dass der Computer im Telephon per se 
langsam wäre. Der hat einfach nur viel zu tun mit der ganzen 
Pixelschieberei und den zig anderen Dingen, die 'gleichzeitig' ablaufen 
sollen.
All das hat aber der MSP nicht. Seine einzige Aufgabe ist es in deinem 
Fall eine Uhr weiterzuählen - eine wahrlich triviale Aufgabe. Der MSP 
kann seine ganzen verfügbaren 1 Millionen Befehle pro Sekunde auf diese 
Aufgabe einsetzen, für die er gerade mal ein paar tausend braucht. Den 
Rest der Zeit kann er vor sich hindösen.

: Bearbeitet durch User
von Ginbak (Gast)


Lesenswert?

hey,

erstmal danke für die antwort.
ok, ich habe mich mal wieder nicht richtig ausgedrückt. nebenbei laufen 
noch weitere berechnungen auf dem msp. zb. werden messwerte empfangen 
für die ich eben diese timestamps brauche. das heißt nicht nur, dass er 
beschäftigt ist, messwerte zu empfangen, zu verarbeiten und diese dann 
noch an das phone zu senden, sondern dauernd noch die interrupts von der 
zeit bekommt und ich mich frage, wie hoch ich die kosten für diese 
ansetzen muss, wenn ich in den millisekundenbereich gehe. aber ich 
glaube ich bespreche erstmal mit meinem professor wie hoch die 
auslastung des msp mit den restlichen berechnungen ist, bevor ich mich 
frage, ob die rtc probleme macht. ich danke euch erst einmal.

lg
Gnibak

von Karl H. (kbuchegg)


Lesenswert?

Ginbak schrieb:

> zeit bekommt und ich mich frage, wie hoch ich die kosten für diese
> ansetzen muss, wenn ich in den millisekundenbereich gehe.

So ca. im zwei-stelligen Promille Bereich.

von Eumel (Gast)


Lesenswert?

Um das nochmal deutlich zu sagen: Der MSP430 lacht über diese Aufgabe, 
das ist nicht deine Baustelle der kann das locker und mit links.
Dein Problem wird folgendes sein:

Ginbak schrieb:
> ich hab noch nie vorher mit mikrokontrollern gearbeitet

Entweder du findest jemanden der das für dich macht oder du musst dich 
da einarbeiten. Die Zeit die du brauchst liegt je nach Motivation und 
Talent zwischen einem Wochenenden und ein paar Wochen.

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
Noch kein Account? Hier anmelden.