Hilfe bei DCF Testprogramm Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
Hilfe bei DCF Testprogramm |
|
|
|
|
BID = 488317
elektroluchs Gesprächig
Beiträge: 194 Wohnort: Austria
|
|
Hallo!
Ich hab da ein DCF Testprogramm geschrieben für einen ATmega8. Die Funktion des Programms ist als Kommentar im Quellcode ersichtlich, ebenso Beschaltung, usw.
Das Problem ist, ich messe mit einem Timer, wie lange die DCF Perioden dauern und verschicke dazu die Timer Zählerstände über die RS232. Das schicken funktioniert soweit nur die Werte sind totaler Käse die können nicht passen, liegt wahrscheinlich an der Timereinstellung. Ich komm nicht weiter, schauts einmal drüber, vielleicht fällt euch ja was auf. Danke!
mfg
_________________
So einfach wie möglich, aber nicht einfacher! (Albert Einstein) |
|
BID = 488366
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
Ohne wirklich hineingeschaut zu haben,
aber die Werte kommen als Binärzahlen.
Wenn du also versuchst, sie auf einem gewöhnlichen Terminal anzuzeigen, geht das schief.
Abhilfe schafft hier ein Programm, dass die Daten hexadezimal oder gleich dezimal darstellt.
RealTerm kann das, unter linux kann man das auch mit Umlenken des Datenstroms auf einen Hexeditor, z.b. cat /dev/ttyS0 | hexdump -C
_________________
|
|
BID = 488375
elektroluchs Gesprächig
Beiträge: 194 Wohnort: Austria
|
Das anzeigen ist nicht das Problem, hab' ein Terminalprogramm das Dezimal, Hexadezimal, Binär und ANSI anzeigen kann, da bleibt kein Wunsch offen
Das Problem ist, dass die Zeiten nicht plausibel sind. Beim DCF Signal hab ich ja in meinem Fall für 0,1s od. 0,2s ein high Signal und dementsprechend 0,9s od. 0,8s ein low Signal bzw. einmal in der Minute ein 2s low Signal. Die Zeiten die mir der µC sendet sind aber weit davon entfernt und außerdem sind sie völlig unregelmäßig und ich kanns mir net erklären.
mfg
_________________
So einfach wie möglich, aber nicht einfacher! (Albert Einstein)
|
BID = 488391
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Dann wird der Timer überlaufen, wähle mal einen größeren Vorteiler, auch wenn das ein wenig auf die Genauigkeit geht.
Ich müsste es durchrechnen, ob der in diesen Zeiten überlaufen kann, aber ich vermute es.
_________________
|
BID = 488397
elektroluchs Gesprächig
Beiträge: 194 Wohnort: Austria
|
also im Programm ist er jetzt 64, am Anfang bin ich mit 256 gefahren, laut meinen Berechnungen hätte er mit 256 nicht überlaufen dürfen (@11.0592MHz) und mit 1024 gehts auch nicht.
Es ist so, dass das high-Zählregister immer 0 ist und im low-Zählregister pendeln die Werte zwischen 10 und 250 ohne erkennbares Muster!? das ist in etwa bei allen Prescaler-Einstellungen gleich!!!
_________________
So einfach wie möglich, aber nicht einfacher! (Albert Einstein)
|
BID = 488408
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Ist der Ausgang des DCF77-Demodulators/Empfängers denn überhaupt schön sauber?
Anscheinend scheinen ja Interrupts aufzutreten, bevor überhaupt bis 256 gezählt wurde. Und dann wird ja schon wieder der Timer zurückgesetzt.
Ich habe dein Programm leider nicht exakt durchsehen können (Zeitmangel geht wieder los... ), aber vllt. stimmen da ja Konstanten nicht? Aus Hexadezimalzahlen wird man nicht gleich schlau, wenn man das Programm nicht selbst geschrieben hat .
Es scheinen jedenfalls rein theoretisch Impulse zu kommen, die etwa alle 1,48ms auftreten müssen, damit der Zähler wieder gelöscht wird, bevor es zum Setzen des 1 Bits des High-Registers kommt.
Sind die Fuses denn auch gesetzt, also ist sicher, dass der richtige Takt anliegt? Vielleicht läuft er intern noch mit 1MHz und der Datensalat kommt vom falsch konfigurierten seriellen Interface... Ist aber blödsinn, wenn das /CR korrekt ankommt.
_________________
|
BID = 488432
elektroluchs Gesprächig
Beiträge: 194 Wohnort: Austria
|
ob das signal schön sauber ist weiß ich nicht genau, hab kein Oszilloskop
hab aber eine LED angeschlossen und die blinkt schön im Sekundentakt aber mit dem Terminalprogramm kann ich beobachten, dass pro Sekunde oft mehr als 6 bytes eintreffen (timer high, timer low, /cr und das halt zweimal schnell hintereinander macht 6 bytes die Sekunde) Also wirds ein unsauberes Signal sein, hab das Ding von C*rad. Wundern würds mich nicht, Sensibel ist für das Gerät ein Hilfsausdruck. Ich häng trotzdem einen Mitschnitt der Daten an.
Der Takt ist als Fehlerquelle auszuschließen, da bin ich mir sicher.
Der Mitschnitt ist mit den Einstellungen: F_CPU:11.0592MHz, prescaler:1024
_________________
So einfach wie möglich, aber nicht einfacher! (Albert Einstein)
[ Diese Nachricht wurde geändert von: elektroluchs am 6 Jan 2008 20:53 ]
|
BID = 488445
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Moin,
Du ließt und schreibst das 16-Bit-Register für den Timer, dabei hast du einen Fehler gemacht.
Beim Lesen muss zuerst das Low-Register, dann das High-Register gelesen werden.
Beim Schreiben muss zuerst auf das High-Byte, dann aufs Low-Byte zugegriffen werden,
siehe:
Zitat :
|
To do a 16-bit write, the High byte must be written before the Low byte. For a 16-bit
read, the Low byte must be read before the High byte.
|
(ATmega8-Datenblatt, Seite 77)
In deinem Programm:
Zitat :
|
ldi work, 0x00 ;rücksetzen des Zählregisters
out TCNT1L, work
out TCNT1H, work
|
und
Zitat :
|
in char, TCNT1H
rcall send_char
in char, TCNT1L
|
_________________
|
BID = 488483
elektroluchs Gesprächig
Beiträge: 194 Wohnort: Austria
|
jap, das wars!!!!!! jetzt ergeben die Werte Sinn, ein großes DANKE an dich DonComi, da wär ich nie draufgekommen.
mfg
_________________
So einfach wie möglich, aber nicht einfacher! (Albert Einstein)
|
BID = 488496
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Freut mich
_________________
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag heute wurden bisher 1 Beiträge verfasst © x sparkkelsputz Besucher : 182421424 Heute : 463 Gestern : 5459 Online : 389 29.11.2024 4:28 0 Besucher in den letzten 60 Sekunden ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0567479133606
|