DCF-77-empfang mit AT90S8515...? Im Unterforum Microcontroller - Beschreibung: 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
|
|
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
|
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
|
|
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 20 Beiträge im Durchschnitt pro Tag heute wurden bisher 6 Beiträge verfasst © x sparkkelsputz Besucher : 182394493 Heute : 1689 Gestern : 7548 Online : 829 25.11.2024 10:32 4 Besucher in den letzten 60 Sekunden alle 15.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0379900932312
|