DCF-77-empfang mit AT90S8515...?

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  05:41:02      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
DCF-77-empfang mit AT90S8515...?

    







BID = 110876

balduin_x

Gerade angekommen


Beiträge: 4
 

  


hallo zusammen

ich möchte mit einem at90s8515 und dem funkuhr-modul von conrad-elektronik als "großes ziel" einen hifi-timer bauen, der mir zu bestimmten zeiten gezielt einzelne hifi-komponenten einschaltet.

ich habe keine große erfahrung mit der programmierung von mikrocontrollern und habe mich daher entschlossen, BASCOM-AVR zu benutzen.
um nun eine grundlage für mein projekt zu haben, möchte ich einfach nur mal die dcf-77-zeit auf einem display ausgeben, was bisher leider nicht funktioniert...

das dcf-77-programmbeispiel bei den application notes auf der bascom-internet-seite ist ziemlich lieblos von einem 8051-controller portiert und funktioniert einfach nicht.
falls jemand das so anpassen könnte, daß es läuft, wäre ich sehr dankbar. (zu finden unter http://www.mcselec.com/an_122.htm


außerdem habe ich noch folgendes (auch von einem 8051 portiertes) programm gefunden, welches ebenfalls nicht läuft. da ich leider nicht mehr weiß, wo ich das programm gefunden habe, poste ich einfach anschließend den quelltext und hoffe, daß mir jemand von euch weiterhelfen kann.


zu meiner ausstattung gibt's folgendes zu sagen:
- stk-500
- atmel 90s8515
- quarz 4 mhz
- display an port a (funktioniert)
- dcf-77-modul von conrad (invertierter ausgang des moduls
direkt angeschlossen an port d.3 - muß hier vielleicht ein pull-up- bzw. pull-down-widerstand dazu???)



und hier der programmtext, der auf dem display leider nur "Time Date" ausgibt, mehr nicht...





Code :


'*********************************************************************
*********
' DCF-77 decoder - LCD display 2x16 demo for 89C2051-89C52
' input - module DCF-77
'
'5V---------| |------| |--
' | | | |
' |_| |_|
'
' pulse 100ms log. L 200ms log. H
'
' info for DCF-77 : www.hw.cz/english/docs/dcf/dcf.html

' autor :     masnica äht taborak (automatisch editiert wegen spamgefahr)    cz web.redbox.cz/masnica
' 10.9.2001
'*********************************************************************
*********
'
'$crystal = 11059000
'$baud = 9600
'
'*********************************************************************
*********
'
Dim X As Byte
Dim C As Byte
Dim V As Byte
Dim H As Byte
Dim Eror As Byte
Dim Znak As Byte
'
Dim M1 As Byte
Dim M2 As Byte
Dim H1 As Byte
Dim H2 As Byte
Dim D1 As Byte
Dim D2 As Byte
Dim Me1 As Byte
Dim Me2 As Byte
Dim R1 As Byte
Dim R2 As Byte
'
Dim Dm1 As Byte
Dim Dm2 As Byte
Dim Dh1 As Byte
Dim Dh2 As Byte
Dim Dd1 As Byte
Dim Dd2 As Byte
Dim Dme1 As Byte
Dim Dme2 As Byte
Dim Dr1 As Byte
Dim Dr2 As Byte
'
'*********************************************************************
*********
'
' display 2x16
'Config Lcdpin = Pin , Db4 = P1.3 , Db5 = P1.2 , Db6 = P1.1 , Db7 =
P1.0 , E = P3.4 , Rs = P3.5
Config Lcd = 16 * 2
' input
Config Portd = Input
Dcf77 Alias Pind.3 'input
module DCF-77
'
'*********************************************************************
*********
'
Inic:
Eror = 0
Cls
Locate 1 , 1
Lcd "Time Date"


Cursor Off
'm1 = 0 : M2 = 0 : H1 = 0 : H2 = 0 : D1 = 0 : D2 = 0
'Me1 = 0 : Me2 = 0 : R1 = 0 : R2 = 0
Dm1 = 0 : Dm2 = 0 : Dh1 = 0 : Dh2 = 0 : Dd1 = 0 : Dd2 = 0
Dme1 = 0 : Dme2 = 0 : Dr1 = 0 : Dr2 = 0
C = 100
'
Zacatek:
D99:
X = 0
If Dcf77 = 1 Then Goto D0
GoTo D99
'
D0:
X = 0
If Dcf77 = 0 Then Goto D1
Goto D0
'
D1:
Waitms 10
X = X + 1
If Dcf77 = 1 Then Goto D2
Goto D1
'
D2:
If X < 12 Then Goto S0
If X > 12 Then Goto S1
Eror = 1
S0:
H = 0
X = 0
Goto Vypocet
S1:
H = 1
X = 0
Goto Vypocet
'
D3:
Waitms 10
X = X + 1
If Dcf77 = 0 Then Goto D4
Goto D3
'
D4:
If X > 150 Then Goto M9
X = 0
Goto D1
'
M9:
'
If H1 > 2 Then Eror = 1
If H2 > 9 Then Eror = 1
If M1 > 6 Then Eror = 1
If M2 > 9 Then Eror = 1
If Me1 > 1 Then Eror = 1
If Me2 > 9 Then Eror = 1
If R1 > 1 Then Eror = 1
If R2 > 9 Then Eror = 1
'
If Eror = 1 Then Goto Nodispl
'
Locate 2 , 1
X = H1 + 48
Dh1 = X
Lcd Chr(x);
X = H2 + 48
Dh2 = X
Lcd Chr(x);
Lcd ":";
X = M1 + 48
Dm1 = X
Lcd Chr(x);
X = M2 + 48
Dm2 = X
Lcd Chr(x);
Lcd " ";
X = D1 + 48
Dd1 = X
Lcd Chr(x);
X = D2 + 48
Dd2 = X
Lcd Chr(x);
Lcd ".";
X = Me1 + 48
Dme1 = X
Lcd Chr(x);
X = Me2 + 48
Dme2 = X
Lcd Chr(x);
Lcd ".20";
X = R1 + 48
Dr1 = X
Lcd Chr(x);
X = R2 + 48
Dr2 = X
Lcd Chr(x)
'
Nd1:
Eror = 1
'
Nodispl:
M1 = 0 : M2 = 0 : H1 = 0 : H2 = 0 : D1 = 0 : D2 = 0
Me1 = 0 : Me2 = 0 : R1 = 0 : R2 = 0
X = 0 : C = 1 : Eror = 0
Goto D1
'
Vypocet:
If C = 21 Then
If H = 0 Then Eror = 1
End If
If C = 22 Then M2 = M2 + H
If C = 23 Then
V = H * 2
M2 = M2 + V
End If
If C = 24 Then
V = H * 4
M2 = M2 + V
End If
If C = 25 Then
V = H * 8
M2 = M2 + V
End If
If C = 26 Then M1 = H
If C = 27 Then
V = H * 2
M1 = M1 + V
End If
If C = 28 Then
V = H * 4
M1 = M1 + V
End If
If C = 30 Then H2 = H
If C = 31 Then
V = H * 2
H2 = H2 + V
End If
If C = 32 Then
V = H * 4
H2 = H2 + V
End If
If C = 33 Then
V = H * 8
H2 = H2 + V
End If
If C = 34 Then H1 = H
If C = 35 Then
V = H * 2
H1 = H1 + V
End If
If C = 37 Then D2 = H
If C = 38 Then
V = H * 2
D2 = D2 + V
End If
If C = 39 Then
V = H * 4
D2 = D2 + V
End If
If C = 40 Then
V = H * 8
D2 = D2 + V
End If
If C = 41 Then D1 = H
If C = 42 Then
V = H * 2
D1 = D1 + V
End If
If C = 46 Then Me2 = H
If C = 47 Then
V = H * 2
Me2 = Me2 + V
End If
If C = 48 Then
V = H * 4
Me2 = Me2 + V
End If
If C = 49 Then
V = H * 8
Me2 = Me2 + V
End If
If C = 50 Then Me1 = H
If C = 51 Then R2 = H
If C = 52 Then
V = H * 2
R2 = R2 + V
End If
If C = 53 Then
V = H * 4
R2 = R2 + V
End If
If C = 54 Then
V = H * 8
R2 = R2 + V
End If
If C = 55 Then R1 = H
If C = 56 Then
V = H * 2
R1 = R1 + V
End If
If C = 57 Then
V = H * 4
R1 = R1 + V
End If
If C = 58 Then
V = H * 8
R1 = R1 + V
End If
C = C + 1
Goto D3
'
End



BID = 110908

ERDI-Soft

Stammposter



Beiträge: 200
Wohnort: Offenburg
Zur Homepage von ERDI-Soft ICQ Status  

 

  

Du sagst, dass du so gut wie keine Ahnung von µControllerprogrammierung hast?

Dan würde ich dir raten, zuerst mal ein paar Tutorials durchzuarbeiten, damit du zumindest die Grundlagen verstehst, warum dies so funktioniert und jenes eben anders.

Zudem wäre es wirklich hilfreich, wenn du wüßtest, wie DCF bzw. ein Display überhaupt funktioniert. Natürlich kann dir hier mit Sicherheit jemand die Codes so umschreiben, dass die funktionieren. Nur, was hast du davon? Du hast dann vielleicht ein funktionierendes System, weißt aber nicht, wie und warum es funktioniert. Und wenn du Änderungen an der Software machen willst, bist du aufgeschmissen.
Codes von anderen Programmierern zu verstehen ist nämlich nicht gerade einfach. Schon gar nicht, wenn er schlecht kommentiert ist.

Deshalb mein Tip: Fang klein an, arbeite dich hoch und versuche zu verstehen, wie etwas funktioniert und wie man das in Software umsetzen kann.

P.S.: Ich vergaß. Du kannst nicht einfach so ein Programm für die 8051-Architektur für einen Atmel AVR einsetzen. Schließlich gibt es viele Register und Funktionen, die der eine hat, der andere aber nicht oder die auf unterschiedlichen Adressen mit anderen Formaten angesprochen werden müssen.

_________________
Wie immer gilt: Erst googeln, dann fragen!

(Für ICQ bitte erst Anfrage per PM, da alles andere nicht angenommen wird.)

[ Diese Nachricht wurde geändert von: ERDI-Soft am  6 Okt 2004 16:28 ]

BID = 110912

balduin_x

Gerade angekommen


Beiträge: 4

hey, bleib mal ganz ruhig.

ich sagte, ich habe keine große erfahrung - ich sagte nicht, daß ich überhaupt keine erfahrung habe. ich habe schon den 68000er in assembler programmiert, den sharc-dsp in c, aber die avr-prozessoren sind eben noch nue für mich.
natürlich weiß ich auch, wie ein lcd funktioniert (4bit-modus/8bit-modus, ansteuerung per adress-bus usw.) und ich weiß auch THEORETISCH, wie das dcf-77-zeitzeichen-signal aufgebaut ist.

mein problem ist zur zeit nur, daß ich das dcf-modul nicht mit dem (für mich neuen) atmel und bascom einlesen kann und darum habe ich um hilfe gebeten.

über den "hallo welt"-status bin ich schon raus und wenn endlich diese verflixte dcf-uhrzeit in dem controller zur verfügung steht, dann weiß ich auch sehr gut, wie es weitergeht.

nur eben die uhrzeit in den avr reinkriegen schaff ich nicht.

also nochmal meine bitte: ich möchte kein fertiges programm von jemand kriegen (hmmm, warum eigentlich nicht?), sondern ich möchte nur ein bißchen hilfe, damit ich weiß, wie ich das dcf-77-modul an der controller anschließen muß und was ich tun muß, damit z.b. das oben stehende programm läuft.


BID = 110917

balduin_x

Gerade angekommen


Beiträge: 4

nochmal kurz...

daß ich ein 8051-programm nicht für einen avr benutzen kann ist mir ebenfalls klar. die beiden programme, von denen ich sprach, stehen auf der bascom-homepage bei den beispiel-programmen für AVR-PROZESSOREN!!!
leider sind es keine waschechten bascom-avr-programme, sondern ehemalige 8051-programme, die sehr lieblos und mit einigen fehlern (die mich im moment noch verzweifeln lassen) als avr-programme "übersetzt" wurden.


BID = 110918

ERDI-Soft

Stammposter



Beiträge: 200
Wohnort: Offenburg
Zur Homepage von ERDI-Soft ICQ Status  

Ich bin doch ganz ruhig.

Trotzdem belibt mein Tip bestehen, ganz von vorne zu beginnen. Du sagst, du hast den 68000 in Assembler programmiert? Dann guck dir mal den Unterschied im Aufbau an. Solange du den µController nicht grundlegend begreifst, wirst du auch nicht verstehen, was du machst.
In C ist das etwas anderes, da wird einem einiges abgenommen.

Wie du selbst schon bemerkt hast, braucht das DCF-Modul nen Pull-Up. Sollte aber im Datenblatt beschrieben sein, das eigentlich hätte beiliegen müssen.
Theoretisch müßte aber der Pull-Up im Atmel reichen, sofern er aktiviert ist.

Bist du in einem Funkloch? Empfängt ein Funkwecker an der Stelle ein Signal?

P.S.: Das sollte keineswegs ein Anschiss gewesen sein, sondern vielmehr nur ein Ratschlag. Was du daraus machst ist deine Sache.

P.P.S.: Programmiere die AVR derzeit nur in Assembler. Deshalb nur grundlegende Hilfe.

_________________
Wie immer gilt: Erst googeln, dann fragen!

(Für ICQ bitte erst Anfrage per PM, da alles andere nicht angenommen wird.)

[ Diese Nachricht wurde geändert von: ERDI-Soft am  6 Okt 2004 16:48 ]

BID = 110997

balduin_x

Gerade angekommen


Beiträge: 4

hallo ERDI-Soft

danke für deine "grundlegende" hilfe. ist schon mal besser als gar nichts. jetzt weiß ich z.b. daß man den internen pull-up-widerstand erst gezielt aktivieren muß. ich dachte bisher, das ginge automatisch... da muß ich doch gleich mal genau in der bascom-dokumentation nachlesen.

für weitere tips und hinweise bin ich immer dankbar.

gruß, balduin

BID = 130745

PeterK

Gerade angekommen


Beiträge: 1

Hi balduin_x oder irgendjemand anderes:
hat hier jemand schon mal mittels eines der neueren AVR Prozessoren DCF77 empfangen/dekodieren können?
Wie hier schon bemerkt wurde, stimmt der Code auf den Seiten von Bascom nicht und auch nach Anpassung tut sich bzgl. Dekodierung absolut nichts.
Mir würde erstmal reichen, wenn mir zur Motivation jemand mitteilen könnte, dass DCF77 und ein AVR Mega (o.ä.) Prozessor mittels Bascom Basic auf jeden Fall funktioniert.
Danke
Peter

BID = 131324

Ralph

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 200
Wohnort: Fürth

Servus zusammen,
ich kenne die Atmels nur vom "Hörensagen" und hab mich bisher nur mit 68000ern in Assembler beschäftigt. Allerdings verstehe ich nicht warum irgendein moderner uC Probleme mit der Dekodierung von DCF77 haben soll? Das Auszählen von 100ms bzw. 200ms breiten Impulsen sollten ja wohl alle schaffen,oder? Es gibt ja nur 3 gültige "Impulse": 100ms, 200ms oder keiner in der 59.sec. Danach noch ne Prüfung auf "sinnvolles" Ergebnis. Wenn man vorsichtiger ist, dann noch ne Prüfung ob 2 oder 3 aufeinanderfolgende Ergebnisse auch zusammenpassen.
Eine solche AUfgabe sollte ja wirklich jeder "einfache" Controller schaffen...
Viel Erfolg!
Ralph


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 3 Beiträge verfasst
© x sparkkelsputz        Besucher : 182421500   Heute : 539    Gestern : 5459    Online : 236        29.11.2024    5:41
3 Besucher in den letzten 60 Sekunden        alle 20.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0700941085815