Go Down

Topic: Brauch hilfe bei Pointers und Struct (Read 1 time) previous topic - next topic

volvodani

So ich wollte bin ja bei meinem Nixie Project eine DCF77 steuerung mit integrieren . Und da ich  meine Uhr komplett selber machen will und  auch das Programm ohne Anleihen aus andern fertigen will brauche ich ein bischen Hilfe. Ja und so  lernt man dann aber an meisten.

Ich kann  mir mit Struct ein Datenwort basteln aus 58 Bits mit den entsprechenden Leerstellen für die Daten des DCF77-Signals

1.Wie kann ich jetzt dem Pointer beibringen wenn ich das Signal erfolgreich ausgewertet habe an die Entsprechenden Stellen meine Bits zu schreiben.

2.Kann ich einfach einen Zähler aufzählen lassen bei jedem Empfangegen Bit und dann auch so in das Struct schreiben wie bei einem Array (BeispelArray [Pos]) oder ist dies komplizierter?

Leider ist die Reference  da ein bisschen sehr schweigsam und die Programme mit den Struct Befehlen die ich bis jetzt gesehen habe sind so schlecht dokumentiert das es teilweise doch auch für mich extrem schwierig ist sie mit Logik zu kapieren wenn man das Struct nicht 100%ig versteht.

Kann mir das einer ein bisschen verständlicher machen evtl auch mit Pseudo- Code zum leichteren Verständnis.

Danke schonmal

"Komm wir essen Opa!" - Satzzeichen retten Leben!

Joghurt

#1
Sep 13, 2010, 08:11 pm Last Edit: Sep 13, 2010, 08:11 pm by Joghurt Reason: 1
Also ich würde da nicht mit Structs arbeiten, vielmehr mit einem byte[59]-Array, und einen Pointer-Reset, wenn das letzte Signal zwischen eineinhalb und zweieinhalb Sekunden her ist... :)

uwefed

Hallo
@Joghurt
"wenn das letzte Signal zwischen eineinhalb und zweieinhalb Sekunden her ist..."
Das stimmt nicht.
Das DCf77 Signal gibt alle secunde einen 100mS oder 200mS langen Lowimpuls der für ein LOW - bzw HIGH - Bit steht.
Der Impuls der 59. Sekunde fehlt damit der Anfang einer neun Bitfolge signalisiert wird.
Darum muß kontrolliert werden ob ein Impuls zwische 0,5 und 1,5 Sekunden nach dem letzten fehlt.

@ volvodani
Du mußt ja nicht gleich den ganzen Coder eines Beispiels nehmen, Du kannst aber schauen, wie die es realisiert haben damit Du eine Idee hast wie Du es machen möchtest.

Grüße Uwe

Grüße Uwe

udoklein

@volvodani: also ich würde immer alle bereits bekannten Beispiele anschauen und dann schauen ob man nicht noch einen draufsetzen kann.

Was mir da so einfallen würde:
- Uhrzeit selbst dann noch ermitteln wenn das Signal sehr schwach/stark verrauscht ist. Z.B. durch Korrelation der Signale mehrere Minuten.
- DCF77 benutzen um die Quarzdrift zu ermitteln und wegzurechnen (damit die Uhr supergenau weiterläuft wenn DCF77 gerade ausfällt)
- Obiges benutzen um nur noch einmal pro Stunde zu schauen
- Temperaturkompensation (d.h. erst einmal ermitteln wie der Quarz driftet und wie das mit der Temperatur zusammenhängt).
- Oder eine OXCO per DCF77 einregeln um ein Frequenznormal zu basteln
- OK, bei Ebay gibt's für 50-150 Euro schon unschlagbar gute gebrauchte Frequenznormale, vieleicht willst Du Deine Uhr ja mit einem Trimble Thunderbolt statt einem DCF77 Empfänger ausstatten. Dann hast Du eine super genaue Uhr ;)

Wenn Du alles selber machst kannst Du froh sein so weit zu kommen wie die Dinger die es schon gibt. Wenn Du bei anderen über die Schulter schaust kannst Du vieleicht ein bischen weiter kommen als man vor Dir schon war.

Gruß, Udo
Check out my experiments http://blog.blinkenlight.net

Joghurt

Quote
uwefed schrieb:
Darum muß kontrolliert werden ob ein Impuls zwische 0,5 und 1,5 Sekunden nach dem letzten fehlt.
...womit, wenn dann wieder ein Impuls kommt, der letzte valide Impuls zwischen 1,5 und 2,5 Sekunden her ist... ;)

uwefed

#5
Sep 14, 2010, 10:33 am Last Edit: Sep 14, 2010, 10:33 am by uwefed Reason: 1
Da hast Du auch recht; hatte den Satz anders interpretiert. :-?
Die Frage ist sucht man nach einem fehlenden Impuls oder sucht man nach Impulsen und danach kontrolliert man die Zeit dazwischen.  :)  8-)
Grüße Uwe

volvodani

Ich bin mittlerweile auch von einem Array überzeugt. Doch ich würde gerne die Befehle bzw Verwendungsweise des Struct und Pointers  verstehen und evtl bei Projekten nutzten da ich ja gerne auch ein Stück weiter kommen würde mit meinem "Latein". Um evtl zukünftige Projektz besser stemmen zu können.
Ich will auch gerne auf dem Arduino C-Dialekt firm werden. Weil für manche Sachen das Bascom doch mit Kanonen auf spatzen geschossen ist. Wobei das "Übersetzten" von bascom auf Aruino doch zimelich einfach ist.
"Komm wir essen Opa!" - Satzzeichen retten Leben!

Joghurt

Das Problem mit structs ist, dass man, wenn man unterschiedliche Datentypen reinstopft, Füllbytes verpasst bekommt, da die Ansprechadressen von "größeren" Datentypen (2-Bytig oder 4-Bytig) für ihren Datentyp "gerade" sein zu müssen scheint...

Go Up