Hilfe bei DCF Testprogramm

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 29 11 2024  04:28:58      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : 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

_________________


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


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