Forum: Mikrocontroller und Digitale Elektronik kann keine Uhrzeit automatisch einstellen


von Alex (Gast)


Lesenswert?

Hallo!
Habe nun endlich meinen DCF77-Empfänder zum Laufen gebracht.
er hat immer 2,7V im Sekundentakt geschaltet.
nun habe ich eine Treiberstufe gebaut. einen BC547 in der 
Emitterschaltung.
33k also basisvorwiderstand.
es funktioniert. jetzt schaltet er GND im sekundentakt.
Das signal geht an pind.6 von einem AtTiny2313.
da kann ich ihn auch noch verfolgen.
Der Zähler läuft.
der lcd zeigt erst 00.00.00 dann 00.00.01 u.s.w. an.
die Zeit wird aber nicht eingestellt.
die sol sich ja automatisch einstellen, oder?
hier ist mein Quellcode( aus AVR-Help kopiert an angepasst)

1
$regfile = "2313def.dat"
2
$crystal = 1000000
3
4
 Config Lcd = 16 * 2
5
 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4
6
7
  Cls
8
  cursor off
9
Config Dcf77 = Pind.6 , Timer = 1 , Timer1sec = 1 , Debug = 1
10
11
Enable Interrupts
12
13
Config Date = Dmy , Separator = .
14
15
Dim I As Integer
16
17
Dim Sec_old As Byte , Dcfsec_old As Byte
18
19
Sec_old = 99 : Dcfsec_old = 99
20
21
22
Do
23
24
For I = 1 To 78
25
26
Waitms 10
27
28
If Sec_old <> _sec Then
29
30
Exit For
31
32
End If
33
34
If Dcfsec_old <> Dcf_sec Then
35
36
Exit For
37
38
End If
39
40
Next
41
42
Waitms 220
43
44
Sec_old = _sec
45
46
Dcfsec_old = Dcf_sec
47
48
Locate 1 , 5
49
Lcd Time$ ; " "
50
Locate 2 , 5
51
Lcd Date$ ; " "
52
53
54
Loop
55
56
End

weiss einer warum das nicht läuft?
bitte, helft mir.
MfG Alexander

von Dennis N. (nilpferd)


Lesenswert?

Moin,

sehe ich das richtig, daß die einzige Verbindung zwischen DCF-Empfänger 
und ATTiny aus dem Sekundensignal besteht? Dann kann er die korrekte 
Uhrzeit nicht einstellen, woher soll er die auch bekommen. Der 
DCF-Empfänger müßte normalerweise an irgendeinem Anschluß die Uhrzeit 
ausgeben (meist seriell). Die mußt Du auswerten. Sonst kriegst Du nur 
eine Uhr, die zwar exakt die Sekunden zählt, aber immer von 00:00 an.

Grüße, Dennis

von Alex (Gast)


Lesenswert?

das teil hat ja nur so zu sagen 3 Anschlüsse.
VCC, GND, TOC (dcf77signal) und PON (der ist aber nur zum einschalten.
was er ganue liefert kann ich nicht sagen, ich weiss nur, dass es sich 
immer was ändert. und zwar im Sekudentakt.
der Wecker hat damit ja auch die Uhrzeit eingestellt.

von Boxi B. (boxi)


Lesenswert?

das ist natürlich Käse, was Dennis hier erzählt, da die 
Zeitinformationen ja in der Impulslänge der Sekundenimpulse enthalten 
ist.

ob der Code oben das leistet, kann ich nur erahnen, da es mir 
schleierhaft ist, wie man einen Mikrocontroller mit Basic programmieren 
kann...

von Peter D. (peda)


Lesenswert?

Sehr schönes Beispiel, wie ein gut kommentierter Code auszusehen hat.

Daß man ihn dann selber nicht versteht und auch andere kaum helfen 
werden können, ist normal.


Peter

von Alex (Gast)


Lesenswert?

@Peter
kannst du noch was zum Thema sagen?
Wäre ganz nett! ^^

Alex

von Dennis N. (nilpferd)


Lesenswert?

Boxi Boxitec wrote:
> das ist natürlich Käse, was Dennis hier erzählt, da die
> Zeitinformationen ja in der Impulslänge der Sekundenimpulse enthalten
> ist.

Ist klar, aber erstens gibt es durchaus DCF-Empfänger, die ein serielles 
Signal ausgeben (einer hängt grad ca. 0,75m vor mir an der Wand), 
zweitens hat Alex was von nem Sekundensignal erzählt, daß er sich aus 
seinem Modul holt und über nen Transi verstärkt. Daher bin ich davon 
ausgegangen, daß er tatsächlich ein reines Sekundensignal meint.

@Alex
Wenn Dein Sekundensignal die Zeitinfo enthält, bist Du sicher, daß der 
BC547 das nicht wieder verfälscht, weil er einen kleinen Moment braucht, 
um durchzusteuern?

von Alex (Gast)


Lesenswert?

>Wenn Dein Sekundensignal die Zeitinfo enthält, bist Du sicher, daß der
>BC547 das nicht wieder verfälscht, weil er einen kleinen Moment braucht,
>um durchzusteuern?

was kann denn die Abhilfe sein?
wie soll ich denn überhaupt weiter vorgehen?

von Paul Baumann (Gast)


Lesenswert?

Ich glaube, so einfach wie Du denkst, geht das nicht.
Hier ist ein Link:
http://www.roboternetz.de/wissen/index.php/DCF77-Decoder_als_Bascom-Library

So wie das oben aussieht, zählst Du einfach nur die "rohen" 
Sekundenimpulse hoch.

Welche Version von Bascom hast Du im Gange?

MfG Paul

von Alex (Gast)


Lesenswert?

1.11.8.7 ist die Bascom Version.

den Beispielcode habe ich hier geholt.
ich glaube der soll doch stimmen, oder?
ganz unten.

http://avrhelp.mcselec.com/configdcf77.htm?zoom_highlightsub=DCF77

von Dennis N. (nilpferd)


Lesenswert?

Paul Baumann wrote:
> So wie das oben aussieht, zählst Du einfach nur die "rohen"
> Sekundenimpulse hoch.

Dachte ich im ersten Moment nämlich auch. Ich nutze Bascom nicht, aber 
ich denke, das es eine eingebaute Routine für DCF haben wird und weiß, 
was mit den Sekundensignalen anzufangen ist.

@Alex
Hast Du mal hier reingeguckt?
http://www.mikrocontroller.net/articles/DCF77-Funkwecker_mit_AVR
Das mit dem BC547 scheint so erstmal richtig zu sein. Möglicherweise 
hast Du ein Timingproblem, also daß die Impulslänge nicht richtig 
gemessen wird. Evtl. die Waitms mal versuchen anzupassen.

von Peter D. (peda)


Lesenswert?

Alex wrote:
> @Peter
> kannst du noch was zum Thema sagen?

Nö, jetzt mußt Du erstmal wieder was sagen, und zwar, was Du Dir bei dem 
Programm gedacht hast, eben als Kommentar hinter die Zeilen.

Fängt schon mal damit an, woher diese ominöse 78 kommt.

Wenn Du Dir garnichts dabei gedacht hast, ganz schlecht


Peter

P.S.:
Je weniger Mühe Du Dir gibst, umso weniger sind auch andere bereit zu 
helfen.

von Alex (Gast)


Lesenswert?

>Hast Du mal hier reingeguckt?
>http://www.mikrocontroller.net/articles/DCF77-Funk...
>Das mit dem BC547 scheint so erstmal richtig zu sein.

ich habe das anders.
der interne pull-up scheint aktiviert zu sein, und ich habe an dem 
Pind.6
immer 4V(wenn kein Empfänger da ist).
ich habe es so gebaut, dass der Transistor immer GND schaltet.
in deinem link ist das aber umgekehrt.
wie ist das denn richtig?

von Niels H. (monarch35)


Lesenswert?

Dennis Nitschke wrote:

> @Alex
> Wenn Dein Sekundensignal die Zeitinfo enthält, bist Du sicher, daß der
> BC547 das nicht wieder verfälscht, weil er einen kleinen Moment braucht,
> um durchzusteuern?

Deine Kommentare dürften den OP nur verwirren. Bei der 
Pulsbreitenmodulation der Zeitinformation gehts um 100ms differenz 
zwischen den Informationen Hi und Low.

Ein BC547 hat Latenzzeiten, die irgendwo im Nanosekundenbereich liegen 
und sind somit absolut vernachlässigbar...

von Alex (Gast)


Lesenswert?

>Je weniger Mühe Du Dir gibst, umso weniger sind auch andere bereit zu
>helfen.

ich kann mir schon Mühe geben. dazu muss ich aber wissen, WAS falsch 
ist.
wonach ich suchen muss.

von Boxi B. (boxi)


Lesenswert?

Ich verfolge das hier schon ne Weile und mir drängt sich der Eindruck 
auf, du müßtest dir vielleicht erstmal überlegen, was du überhaupt tun 
willst und auf dieser Basis ein Konzept erstellen.

von Alex (Gast)


Lesenswert?

@Boxi Boxitec

sag mal, prüfst du eigentlich alle angaben, die du im Dattenblatt liest?
Wenn im Datenblatt steht, dass pin 40 vom mega 16 als ADC pin werwendet 
werden kann, dann wird das wohl auch so stimmen, oder?
genau so ist das auch hier.
wenn im "datenblatt" von Bascom was steht, dann ist das schon so 
richtig.
ich finde man MUSS sich da nicht soooo rief reinsteigern.
man kann es so übernehmen, oder bei bedarf bearbeiten.
so habe ich das gemacht.
es werden Jahre vergehen, bis ich da alles durchgelesen und verstanden 
habe, denn es hängt alles miteinander zusammen.
und jetzt soll ich diese löde Uhr zur Seite legen, und Bascom studieren?
ich finde man kann es am besten lernen, indem man an fertigen Beispielen 
arbeitet.
IMHO.

von Boxi B. (boxi)


Lesenswert?

Weiß zwar nicht, was das mit meinem Post zu tun hat, aber wenn du nicht 
weißt, was du tust und aufgrund von Annahmen so drauf los wurschtelst, 
wirst du regelmäßig auf die Schnauze fallen. Is aber deine Entscheidung.

von Alex (Gast)


Lesenswert?

@Boxi Boxitec
danke für deine hilfreichen posts!

von Peter D. (peda)


Lesenswert?

Alex wrote:

> ich kann mir schon Mühe geben. dazu muss ich aber wissen, WAS falsch
> ist.

Woher soll ein anderer wissen, was an Deinem Code falsch ist, wenn Du 
nicht erklärst, was Du Dir dabei gedacht hast?

In Deinen Kopf schauen kann ich nicht.


Ich kann Dir höchstens funktionierenden Code zeigen (Codesammlung), ist 
aber in Assembler bzw. C.

Ich könnte jetzt ganz profan erklären, alles was anders als mein Code 
aussieht, ist falsch.
Aber es gibt viele verschiedene Ansätze eine Aufgabe in Software zu 
lösen, d.h. was anderes muß nicht automatisch falsch sein.

Aber ohne Kommentierung kann das eben keiner sagen.


Peter

von peter-neu-ulm (Gast)


Lesenswert?

Nehmen wir an, das Programm würde so laufen, dass es 150 ms nach einer 
steigenden Flanke, dem Beginn des Sekundenimpulses misst, ob eine 1 oder 
eine 0 anliegen.
Wenn jetzt ein Inverter in den Signalweg geschaltet wird, liegt die 
Steigende Flanke am Ende des Sekundenimpulses und die Messung nach 150 
ms fällt dann in die Zeit nach dem Sekundenimpuls, ist also immer 1 oder 
0, je nach Programm.

von Alex (Gast)


Lesenswert?

@ Peter Dannegger
wenn es dir nichts ausmacht, dann bitte eine .hex - datei.
AtTiny2313 ; interner oszillator. 1Mhz
DCF am PD6
LCD im 4-bit modus ohne Busy am port B

danke

von Oliver (Gast)


Lesenswert?

>ich habe es so gebaut, dass der Transistor immer GND schaltet.
>in deinem link ist das aber umgekehrt.
>wie ist das denn richtig?

Preisfrage: Wo könnte man das denn nachschauen?
Und als Super-Sonder-Bonusfrage: Unter welchen Stichwort, damit man 
nicht das ganze Manual lesen muß, weil, das dauert ja Jahre...

(Ab hier nicht weiterlesen, wenn du selber raten möchtest)
RTFM
XXXXX (Die Antworten zu Bonusfragen werden nicht verraten)

Oliver

von Alex (Gast)


Lesenswert?

RTFM hat nichts mit Bascom zu tun, oder?

von Alex (Gast)


Lesenswert?

an Oliver:
sorry, ich verstehe dich nicht!

von Oliver (Gast)


Lesenswert?

arrgh:-)

Also dann: RTFM heisst read the friendly manual (ok, eigentlich heisst 
es nicht friendly, somdern fuxxing)

Du benutzt in dem Progamm eine Bascom-Funktion, die irgend etwas tun 
soll. Dann schau doch mal ins manual, was denn da zu dieser Funktion 
steht. Der einzige Nachteil ist halt, daß die frei verfügbare 
Bascom-Doku Englisch ist.

Also
http://avrhelp.mcselec.com/

auf search drücken

Das Zauberwort, in userem Fall "DCF77" eingeben.

Da kommt dann ein Eintrag zu CONFIG DCF77 - hallo, das steht ja auch 
oben im Programm !!

Also draufklicken, und lesen. Wenn du was nicht verstehst, hier wieder 
fragen.

Oliver

von Alex (Gast)


Lesenswert?

@ Oliver

du hast nicht alles in diesem Theard gelesen!

Das programm habe ich von http://avrhelp.mcselec.com/  !!!!



>den Beispielcode habe ich hier geholt.
>ich glaube der soll doch stimmen, oder?
>ganz unten.  http://avrhelp.mcselec.com/configdcf77.htm?zoom_hi...

von Oliver (Gast)


Lesenswert?

Wennn das hier noch irgendwas werden soll, schau doch einfach mal in die 
Doku. Wenn du alle Parameter zu dcf77 verstanden hast, und sicher bist, 
das die alle richtig für DEINE Schaltung eingestellt sind, und dann noch 
Fragen vorliegen, oder es immer noch nicht geht, dann frag halt nach. 
Vorher nicht.

Oliver

von Karl H. (kbuchegg)


Lesenswert?

Alex wrote:
> @ Oliver
>
> du hast nicht alles in diesem Theard gelesen!
>
> Das programm habe ich von http://avrhelp.mcselec.com/  !!!!

Und?

Was hindert dich daran, dort mal die Doku zu lesen.
Insbesondere hat der Config Parameter INVERTED meine
Aufmerksamkeit erregt.

von Oliver (Gast)


Lesenswert?

Un ob Timer1sec = 1 das tut, was du erwartest, ist auch fraglich.

Nochmehr Hilfe gibt es jetzt aber wirklich nicht.

Oliver

von Alex (Gast)


Lesenswert?

es gibt also keine lösung..
ok.

von Oliver (Gast)


Lesenswert?

Verstehst du kein Deutsch, oder kein Englisch?

Oliver

von Alex (Gast)


Lesenswert?

sind beides Fremdsprachen.
komme nicht aus Deutschland

von Oliver (Gast)


Lesenswert?

>sind beides Fremdsprachen.
>komme nicht aus Deutschland

Na, dann Glückwunsch zu dem hervorragend funktionierenden 
Übersetzungsprogramm, mit dem du hier deine Beiträge übersetzen lässt. 
Da das anscheinend kein Bascom beherrscht, lass es dann lieber.

Oliver

von Karl H. (kbuchegg)


Lesenswert?

Alex wrote:
> es gibt also keine lösung..
> ok.


Doch. Es gibt mit Sicherheit eine Lösung.
Aber dir ist nicht geholfen, wenn hier jemand die Lösung
auf einem Silbertablett präsentiert. Du musst lernen
dir aus Dokus die notwendigen Informationen zusammenzusuchen.
µC Programmierung ist nun mal etwas anspruchsvoller als einen
MP3 Player einschalten. Da müssen alle durch. Sei froh, dass
es die dann doch relativ ausführliche BASCOM Hilfe gibt und
lerne sie zu benutzen. In weiterer Folge wirst du in nicht
allzulanger Zeit auf Probleme stossen, bei denen du völlig
alleine (also ohne irgendeine Hilfe) dastehst.

von Paul Baumann (Gast)


Lesenswert?

Stell Dich doch mal mit dem Cursor auf den Befehl "Config DCF 77" und 
drücke F1, um zur Hilfe für diesen Befehl zu gelangen.

Was passiert zum Bleistift, wenn Du den Parameter "Timer1sec" auf Null 
setzt?!......

Man kann nicht von den Entwicklern erwarten, daß jedes Codebeispiel 
genau
mundgerecht ist.

Bedenke: Es könnte noch schlimmer kommen, wenn Du selbst eine Routine
für die Auswertung schreiben müßtest. Den Befehl "Config DCF77" gibt es
nämlich noch gar nicht so lange. Manch einer wäre in einer anderen 
Programmiersprache froh, wenn er es so schön vorbereitet bekommen würde.

;-)

MfG Paul

von Niels H. (monarch35)


Lesenswert?

Das ist der Grund, warum ich immer sage: Programmieren lernt man nicht. 
Endweder man hat einen Hang zum Autodidaktismus oder man hat ihn nicht. 
Im letzteren Fall sollte man es besser bleiben lassen.

Schliesslich bringt man einem völlig unmuskalischen Menschen auch nicht 
das Klavierspielen bei.

von Alex (Gast)


Lesenswert?

>Na, dann Glückwunsch zu dem hervorragend funktionierenden
>Übersetzungsprogramm

ich meinte, dass ich in Deutschland noch gar nicht so lange wohne.
ich benutze kein Programm zum Übersetzen

von Alex (Gast)


Lesenswert?

>Was passiert zum Bleistift, wenn Du den Parameter "Timer1sec" auf Null
>setzt?!......
schon probiert.
ob du es glaubst, oder nicht, aber es ändert sich NICHTS.
was macht dieser Parameter eigentlich?
bin aus der AVR-Hilfe nicht viel schlauer geworden, da ich nicht sehr 
gut englisch kann.

von Alex (Gast)


Lesenswert?

guten morgen!
wie kann ich den Internen pull-up abschalten?
Danke

von Boxi B. (boxi)


Lesenswert?

RTFM

von Alex (Gast)


Lesenswert?

Portd = 0 ?

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

also es ist noch was komisches..
habe mal ein Bild gezeichnet.
warum funktioniert das so nicht?
ich sollte ja 5V am Ausgang haben, oder?

von Niels H. (monarch35)


Lesenswert?

Alex wrote:
> also es ist noch was komisches..
> habe mal ein Bild gezeichnet.
> warum funktioniert das so nicht?
> ich sollte ja 5V am Ausgang haben, oder?

Nein, das ist eine Collectorschaltung. Ein sogenannter Impendanzwandler 
bzw Spannungsfolger.

Wenn du eine Verstärkung haben möchtest, setzt zu den Widerstand 
zwischen Collector und +5V. Der Emitter kommt direkt an GND.

von Alex (Gast)


Lesenswert?

>Wenn du eine Verstärkung haben möchtest, setzt zu den Widerstand
>zwischen Collector und +5V.
aber ich möchte ja 5V schalten und nicht gnd.

von Niels H. (monarch35)


Lesenswert?

Die Signalinvertierung, die eine Emitterschaltung mit sich bringt, 
kannst du problemlos softwaretechnisch ausgleichen.

von Alex (Gast)


Lesenswert?

>kannst du problemlos softwaretechnisch ausgleichen.

mit dem bascom-befehl "Config Dcf77 = Pind.6" ist schon alles "fest" 
eingestellt, oder?

von Niels H. (monarch35)


Lesenswert?

Bitte überflieg wenigstens die DCF-Doku von Bascom. Die Antwort springt 
dich an. 100%ig.

von Alex (Gast)


Lesenswert?

den Artikel schon x mal durchgelesen...
ich sehe es einfach nicht! :(

von Niels H. (monarch35)


Lesenswert?

> http://avrhelp.mcselec.com/index.html?configdcf77.htm

Wenn du tatsächlich das "Inverted"-Flag nicht siehst, bist du blind.

von Alex (Gast)


Lesenswert?

entschuldigung, ich meinte es anders.
im Programm selbst (unten) steht ja nirgendwo "INVERTED = 0" oder so, wo 
ich statt 0 eine 1 reinmachen kann.
das meinte ich

von Niels H. (monarch35)


Lesenswert?

Alex wrote:
> im Programm selbst (unten) steht ja nirgendwo "INVERTED = 0" oder so, wo
> ich statt 0 eine 1 reinmachen kann.

Und wo ist jetzt das Problem? Traust du dir nicht zu die paar Zeichen 
einzufügen?

von Karl H. (kbuchegg)


Lesenswert?

Alex wrote:
> entschuldigung, ich meinte es anders.
> im Programm selbst (unten) steht ja nirgendwo "INVERTED = 0" oder so, wo
> ich statt 0 eine 1 reinmachen kann.
> das meinte ich


Wie wäre es, wenn du dein Augenmerk einfach mal auf die Beschreibung
der einzelnen Möglichkeiten dieses Config Befehls richten würdest
und nicht nur auf das angegebene Programm. Das angegebene Programm
ist nämlich genau das: Ein Beispiel, wie man in einer speziellen
Konfiguration diesen Befehl benutzen kann. Nicht mehr und nicht
weniger. Es ist keinesfalls dazu gedacht alle Möglichkeiten
und alle Varianten aufzuzeigen.
So ist das generell mit Beispielprogrammen: Sie illustrieren
eine Möglichkeit! Will man wissen, was sonst noch so alles geht,
dann gilt der Erklärungstext eines Kommandos.

Und komm mir jetzt nicht mit: Ich kann kein Englisch.
So viel Englisch kannst du allemal und wenn wirklich nicht,
dann nimm den Text und steck ihn in eine Übersetzungsmaschine
hinein und denk darüber nach, was das Kauderwelsch welches die
Maschine ausspuckt wohl im Zusammenhang mit der Konfiguration
eines DCF Eingangs bedeuten könnte. So schwer ist das nicht.

von Alex (Gast)


Lesenswert?

ich habe das schon so erweitert:
1
Config Dcf77 = Pind.6 , INVERTED = 1 , UPDATE = 0 ,  Timer = 1 , Timer1sec = 0 , Debug = 1
2
3
4
Enable Interrupts
5
6
Config Date = Dmy , Separator = .
7
8
Dim I As Integer
9
10
Dim Sec_old As Byte , Dcfsec_old As Byte
11
12
Sec_old = 99 : Dcfsec_old = 99

er will einfach nicht.
ich weiss auch nicht wo das Problem genau liegt. entweder am Programm, 
oder am Empfänger.
Habe jetzt den OP zur Verstärkung genommen.
SIEHT ok aus.
aber tuts noch nicht.

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

ich habe jetzt noch paar bilder von der Schaltung gemacht.

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

und Empfänder

von Niels H. (monarch35)


Lesenswert?

Alex wrote:
> ich habe das schon so erweitert:
>
>
1
> Config Dcf77 = Pind.6 , INVERTED = 1 , UPDATE = 0 ,  Timer = 1 ,
2
> Timer1sec = 0 , Debug = 1
3
4
Und warum Gross? Warum schreibst du es nicht so, wie es in der Doku beschrieben steht?
5
6
[c]
7
' Config Dcf77 = Pind.2 , Debug = 1 , Inverted = 0 , Check = 2 , Update = 0 , Updatetime = 30 , Switchpower = 0 , Secondticks = 50 , Timer1sec = 1 , Powerlevel = 1 , Timer = 1

Ich hab zwar keine Ahnung, ob bascom case-sensitiv arbeitet, aber im 
Zweifelsfalle würde ich mich da immer an die Vorgabe halten.

> Habe jetzt den OP zur Verstärkung genommen.

Welchen OP? Wie sieht die Schaltung aus? Invertiert der das Signal?

> SIEHT ok aus.
> aber tuts noch nicht.

Du hattest schonmal in einem anderen Posting beschrieben, das dein 
Wecker 1-2Stunden braucht, bis die Zeit stimmt. In diesem Fall ist das 
ein Zeichen, das der Empfang nicht optimal ist. Der Empfang muss für 
eine Erfolgreiche synchronisierung für mindestens 2-5Minuten absolut 
fehlerfrei sein. In der Regel reichen 3Minuten.

Damit der Empfang optimal ist, legt man dem Empfänger weit von der CPU 
weg oder anderen Störquellen (rechner, bohrmaschine, waschtrockner, 
umluftbackofen usw).

von Alex (Gast)


Lesenswert?

es ist ja nicht so, dass ich mir keine Mühe geben will.
ich habe noch kein Gefühl für sowas. und nur darum bitte ich euch um 
Hilfe.
aber die meisten Beiträge sehen ungefäht so aus " kannst du nicht lesen, 
oder was?"
leider :(

von Niels H. (monarch35)


Lesenswert?

Alex wrote:

> und Empfänder

Seh ich da einen halben Faradayscher Käfig im Hintergrund (fliegennetz 
aus Metall?)

von Alex (Gast)


Lesenswert?

>Welchen OP? Wie sieht die Schaltung aus? Invertiert der das Signal?
LM324N  ist nicht invertiert.
schaltet von 0.1V bis auf 4.3V. ich finde das müsste reichen, um die 
Flanken zu merken.

dass der Wecker 2 Stunden gebrauch hat, muss glaube ich am Wecker ligen.
Der Empfänger ist ca.2m vom PC entfernt. klebt auf der Scheibe.
Empfang hat er jede sekunde.

von Alex (Gast)


Lesenswert?

>fliegennetz aus Metall?

das ist kein Fliegennetz. :) und nicht aus metall

von Niels H. (monarch35)


Lesenswert?

Alex wrote:

> Empfang hat er jede sekunde.

Dir ist offensichtlich nicht ganz klar, wie das DCF-Signal funktioniert. 
Eine Sekunde hält nur ein 59tel der Information, die es braucht um die 
Uhrzeit und Datum zu dekodieren. Es braucht also 59 sekunden, bis einmal 
die komplette Zeit dekodiert werden kann. Dazu kommt der Sync mit der 
59' sekunde und eine Referenzeit zum Verifizieren.

Ich sagte bereits: um zu Syncen braucht eine DCF-Uhr mindestens 2 
Minuten. Mindestens. Eher drei.

Ich frage nochmal: wie sieht die OP-Schaltung aus? Wenn sie nicht 
Invertiert, brauchst du natürlich auch die Inverted-configuration nicht.

von Karl H. (kbuchegg)


Lesenswert?

Alex wrote:
>>Welchen OP? Wie sieht die Schaltung aus? Invertiert der das Signal?
> LM324N  ist nicht invertiert.
> schaltet von 0.1V bis auf 4.3V.

Das sollte allerdings reichen.
Hast du auch kontrolliert, ob das genau so am µC Pin
PD6 ankommt?

von Alex (Gast)


Lesenswert?

>wie sieht die OP-Schaltung aus?
http://www.stegem.de/Elektronik/OP2/op.jpg
ganau so.

und "Inv = 0".

also ich warte schon immer 5-6 minuten, bevor und sage, dass es nicht 
geht.

von Alex (Gast)


Lesenswert?

>Hast du auch kontrolliert, ob das genau so am µC Pin PD6 ankommt?
natürlich.
kommt alles an.

von Alex (Gast)


Lesenswert?

fuf, es läuft jetzt endlich..
durch wildes Ausprobieren.

von Karl H. (kbuchegg)


Lesenswert?

Alex wrote:
> fuf, es läuft jetzt endlich..
> durch wildes Ausprobieren.

Ausprobieren ist nicht weiter schlimm.
Was jetzt aber wichtig ist: Das jetzige mit
deiner Urversion vergleichen und verstehen was die
Änderungen waren und was sie bewirkt haben.

von Niels H. (monarch35)


Lesenswert?

Alex wrote:
> fuf, es läuft jetzt endlich..
> durch wildes Ausprobieren.

Ja? Metallfliegengitter abgehangen? :)

von Alex (Gast)


Lesenswert?

lag an dieser Zeile:
Config Dcf77 = Pind.6 , Inv = 0 , Upd = 0 , Timer = 1 , Timer1sec = 0 , 
Debug = 1 , Check = 2 , Switchpower = 0 , Secondticks = 50 , Powerlevel 
= 1

von Simon K. (simon) Benutzerseite


Lesenswert?

[OT]
Also das fand ich mit Abstand am besten:

Peter Dannegger wrote:
> Ich kann Dir höchstens funktionierenden Code zeigen (Codesammlung), ist
> aber in Assembler bzw. C.

Alex wrote:
> @ Peter Dannegger
> wenn es dir nichts ausmacht, dann bitte eine .hex - datei.
> AtTiny2313 ; interner oszillator. 1Mhz
> DCF am PD6
> LCD im 4-bit modus ohne Busy am port B

Aber ein Versuch wars wert! ;)
[/OT]

von Alex (Gast)


Lesenswert?

>Also das fand ich mit Abstand am besten:

jo, das fand ich auch lustig! :)))


kann man den Empfang noch etwas verstärken? ;)

von Niels H. (monarch35)


Lesenswert?

Du kannst den Empfang optimieren, in dem du vom einen Pol der 
Feritantenne an Erde (zb. Heizkörper) anschliesst und an dem anderen Pol 
der Feritantenne eine Wurfantenne sprich ein langes stück Litze zum 
Fenster raushängst.

Eine Verstärkung ist in der Regel nicht möglich: wer ein schlechtes 
Signal verstärkt, erhält ein verstärktes schlechtes Signal.

von Alex (Gast)


Lesenswert?

>Eine Verstärkung ist in der Regel nicht möglich: wer ein schlechtes
>Signal verstärkt, erhält ein verstärktes schlechtes Signal.

hast natürlich recht.
danke

von Alex (Gast)


Lesenswert?

also ich habe das ding jetzt nach hause mitgenommen ;)
jetzt versucht er schon seit 30 minuten die Zeit zu sync. , klappt aber 
nicht.
ich habe noch eine LED zur Kontrolle. die blinkt auch ganz brav mit.
Empfang sollte gut sein, weil das ding auf der Fenstebrank steht.
auf der Arbiet hat es so ca. 7 minuten gedauert.

von Alex (Gast)


Lesenswert?

schon fast 40 minuten..
ist das nicht schon zuuuu lange?

von Alex (Gast)


Lesenswert?

eine Frage habe ich noch.
konnte es nicht komplett verstehen.
wie kann man das übersetzen?
es dauert immer min. 15min. bis er die Zeit syncr. hat. ist mir etwas zu 
lange, und ich suche noch auf irgendwas, womit ich diese Fehlerfreie 
durchläufe beeinflussen kann. also nicht 5 z.b. , sondern nur 2.
werde aber nicht fundig.


The number of times that the DCF signal state is read. This is the 
number of times per second that the interrupt is executed. This value is 
calculated by the compiler. The highest possible timer pre scale value 
is used and the lowest possible number of times that the interrupt is 
executed. This gives least impact on your main application.

You can override the value by defining your own value. For example when 
you want to run some own code in the interrupt and need it to execute 
more often.

von Alex (Gast)


Lesenswert?

ok, ist auch egal.. dann nehme ich das so an ;)
mir ist aber noch was aufgefallen.
mein alter funkwecker..
In jeder Position in der Wohnung und in jeder Lage konnte er noch die 
Zeit einstellen.
jetzt habe ich nur noch auf der Fensterbank einen richtigen, sauberen 
Empfang, und nur Wagerecht in Richtung Frankfurt ausgerichtet.
kann mir einer erklären wie das angehen kann?
Danke

von Boxi B. (boxi)


Lesenswert?

Erzähl doch mal, was das projekt an dem du da arbeitest für einen rahmen 
hat. Das würde mich langsam schon mal interessieren.

von Alex (Gast)


Lesenswert?

>Erzähl doch mal, was das projekt an dem du da arbeitest für einen rahmen
>hat.
ich mache die ganzen Sachen nur so, zur Übung. Macht schon ´ne Menge 
Spass.
Mit den Fusebits habe ich das nicht verstanden. Sind schon bestimmt x0 
µC draufgegangen. :(

von Alex (Gast)


Lesenswert?

so, ich möchte es noch mal versuchen mit den Fusebits.
und zwar möchte ich einen Quarz crystal mit 4Mhz verwenden.
habe das Datebblatt gerage vor mir.
Könnt ihr mir, dem blöden Menshen sagen, wo das steht, wie ich die 
Häckchen setzen muss? Ich sehe es einfach nicht.

http://pdf1.alldatasheet.com/datasheet-pdf/view/80317/ATMEL/ATTINY2313.html

ich bin auf der seite 23...

Device Clocking Option CKSEL3..0
External Clock 0000 - 0001
Calibrated Internal RC Oscillator 4MHz 0010 - 0011
Calibrated internal RC Oscillator 8MHz 0100 - 0101
Watchdog Oscillator 128kHz 0110 - 0111
External Crystal/Ceramic Resonator 1000 - 1111
ok, so weit, so gut.

weiter...

CKSEL3..1 Frequency Range(1) (MHz)
Recommended Range for Capacitors C1
and C2 for Use with Crystals (pF)
100(2) 0.4 - 0.9 –
101 0.9 - 3.0 12 - 22
110 3.0 - 8.0 12 - 22
111 8.0 - 12 - 22

auch klar...


Table 5. Start-up Times for the Crystal Oscillator Clock Selection
CKSEL0 SUT1..0
Start-up Time from
Power-down and
Power-save
Additional Delay
from Reset
(VCC = 5.0V) Recommended Usage
0 00 258 CK(1) 14CK + 4.1 ms Ceramic resonator, fast
rising power
0 01 258 CK(1) 14CK + 65 ms Ceramic resonator,
slowly rising power
0 10 1K CK(2) 14CK Ceramic resonator,
BOD enabled
0 11 1K CK(2) 14CK + 4.1 ms Ceramic resonator, fast
rising power
1 00 1K CK(2) 14CK + 65 ms Ceramic resonator,
slowly rising power
1
01 16K CK 14CK Crystal Oscillator, BOD
enabled
1
10 16K CK 14CK + 4.1 ms Crystal Oscillator, fast
rising power
1
11 16K CK 14CK + 65 ms Crystal Oscillator,
slowly rising power


nichts mehr klar. :(

von Thomas (Gast)


Lesenswert?


von Niels H. (monarch35)


Lesenswert?

Um dich mit dem Fusebits auseinanderzusetzen, solltest du erstmal 
halbwegs die Zahlensystem beherrschen (dez, hex, binär)....

Das fände ich ziemlich Elementar.

von Alex (Gast)


Lesenswert?

@Thomas
WO ist mein 4Mhz ext. Crystal? ich sehe nur 3.0Mhz bis 8.0MHz.
erklär es mit bitte ein für alle mal.
danke

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

anhang vergessen

von Alex (Gast)


Lesenswert?

und was bedeuten 14CK + xms???
was ist das alles???????

von Karl H. (kbuchegg)


Lesenswert?

> es dauert immer min. 15min. bis er die Zeit syncr. hat. ist mir
> etwas zu lange, und ich suche noch auf irgendwas, womit ich diese
> Fehlerfreie durchläufe beeinflussen kann. also nicht 5 z.b. ,
> sondern nur 2. werde aber nicht fundig.

Hiermit hast du rausgefunden, warum das BASCOM-Modul System hier
in diesem Forum nicht sonderlich beliebt ist.

Die Bausteine die du mit BASCOM mitbekommst sind super, solange
sie genau das tun was du möchtest, bzw. sich darauf konfigurieren
lassen. Aber wehe, wenn nicht! Dann stehst du da und hast
keinerlei Einflussmöglichkeiten mehr.

von Alex (Gast)


Lesenswert?

>solltest du erstmal halbwegs die Zahlensystem beherrschen (dez, hex, binär)....

kann ich. ausser hex. dafür aber gray

von Niels H. (monarch35)


Lesenswert?

Die Startuptime und der ganze Fusebitskram ist alles im Datenblatt vom 
Atmel beschrieben.

von Karl H. (kbuchegg)


Lesenswert?

Alex wrote:
> @Thomas
> WO ist mein 4Mhz ext. Crystal? ich sehe nur 3.0Mhz bis 8.0MHz.
> erklär es mit bitte ein für alle mal.

4 liegt doch im Bereich 3 bis 8 drinnen.

Diese Einstellun der Fuse Bits bedeutet:
Wenn du einen Quarz im Bereich 3 bis 8 Mhz hast, dann
musst du diese Einstellung nehmen. Es ist nicht so, dass
du mit den Fuse Bits die Quarzfrequenz einstellst. Sondern
du konfigurierst den internen Schwingkreis so, dass er mit
dem externen Quarz klarkommt. Und je nachdem in welchem
Bereich dieser Quarz schwingt, muss der interne Schwingkreis
etwas anders abgestimmt werden.

von Alex (Gast)


Lesenswert?

>Aber wehe, wenn nicht! Dann stehst du da und hast keinerlei Einflussmöglichkeiten 
mehr.

man kann Check = 0 setzen. dann übernimmt er die Zeit, ohne sie zu 
vergleichen.. kommt soooo ein Müll raus. z.B. 23.15.07 (für heute)
u.s.w.
Bei Check = 1 vergleicht er zwar die Zeit, aber irgendwie hatte ich vor 
30 minuten auf einmal 23:45:10 also statt 08:45:10.
mit Check = 2 funktionier alles soweit gut. aber ich nutze den int. Rc 
osc.  und er geht immer 3-4 sekunden pro minute zu schnell.
also auch für´n Arsch. und bis er die Zeit abgeglichen hat ( bei check=2 
), ich schon min. eine Stunde um, weil der Empfang offensichtlich nicht 
sehr gut ist.
den ext. Crystal kann ich nicht verwenden.

von Thomas (Gast)


Lesenswert?

Also den 4MHz-Quarz zu finden ist doch wirklich kein Problem.

In deinem Datenblattauszug stehen die CKSEL-Einstellungen für 4MHz. Das 
ist für Bit 3 bis Bit 1 110, da sich 4MHz meistens zwischen 3 und 8 MHz 
befinden. In dem Tool ist das also "medium frequency" für einen externen 
Crystal/Resonator.

Die Startup-Clocks sind im Datenblatt beschrieben, wie mein Vorredner 
bereits erwähnt hat. Bei deiner Anwendung kannst du da reinschreiben was 
du willst. Ist nicht sonderlich relevant.

von Alex (Gast)


Lesenswert?

>In dem Tool ist das also "medium frequency" für einen externen Crystal/Resonator.

ich sehe beim besten Willen nichts mit "medium frequency" in diesem 
Tool.
also wenn ich das richtig verstehe, ich das ein Bonärcode. also 100 für 
1, 010 für 2, 110 für 3, u.s.w.
oder?

von Unbekannter (Gast)


Lesenswert?

>Bei deiner Anwendung kannst du da reinschreiben was
>du willst.

Das brauchst du nicht erwähnen, er schreibt sowieso irgendetwas rein ;-)

von Niels H. (monarch35)


Lesenswert?

Unbekannter wrote:

> Das brauchst du nicht erwähnen, er schreibt sowieso irgendetwas rein ;-)

Könntest du bitte deinen Müll, den wirklich niemand lesen möchte, im 
Heiseforum ablassen und nicht hier. Danke!

von Alex (Gast)


Lesenswert?

> Das brauchst du nicht erwähnen, er schreibt sowieso irgendetwas rein ;-)

ich freue mich für dich, dass du so schlu bist und alles kanst!

von Thomas (Gast)


Lesenswert?

Also normalerweise nummeriert man die Bits von rechts nach links. 
Weiterhin habe ich geschrieben, dass im Datenblatt CKSEL 3 bis 1 
angegeben sind. Also insgesamt 4 Bits mit in deinem Fall 110X. Das 0. 
(nullte) Bit wählt zusammen mit den SUT-Bits die Startup-Clocks.

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

also ich habe die fuses jetzt eingelesen.
so sieht es jetzt aus: Anhang
 wenn ich das jetzt richtig verstanden habe, muss ich CKSEL0 wegmachen, 
und dafür CKSEL2 reinsetzen, oder?

von Martin K. (maart)


Lesenswert?

>Also normalerweise nummeriert man die Bits von rechts nach links.
Da hast du Recht, beim AVR bedeutet aber eine logische 1 dass diese Bit 
nicht programmiert ist.

Alex: Meiner Meinung nach, den Haken bei CKSEL3 weg, der Rest bleibt so.

von Alex (Gast)


Lesenswert?

>Meiner Meinung nach, den Haken bei CKSEL3 weg, der Rest bleibt so.

aber ich muss ja noch ein Häckchen setzen, bzw. wegmachen, damit er mit 
ext. Crystal läuft, oder?
sonst ist er ja bei 4Mhz intern RC.

von Martin K. (maart)


Lesenswert?

Alex wrote:
>>Meiner Meinung nach, den Haken bei CKSEL3 weg, der Rest bleibt so.
>
> aber ich muss ja noch ein Häckchen setzen, bzw. wegmachen, damit er mit
> ext. Crystal läuft, oder?
> sonst ist er ja bei 4Mhz intern RC.

Hm, ich habe jetzt einfach dieses Tool benutzt und
"Externer Kristall, Frequenz 3 bis 8 Mhz, Start-Up 14 CK + 4.1 ms" 
ausgewählt. Bei SUT1 und SUT0 muss also ein Haken hin, sowie bei CKSEL1 
und CKSEL0

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

und bei CKSEL3 dann weg, oder?
so?
soll ich auf Write klicken?

von Alex (Gast)


Lesenswert?

soll ich auf Write klicken??

von Martin K. (maart)


Lesenswert?

Soll der Takt intern wirklich durch 8 geteilt werden? (Der Haken bei 
CKDIV8 ist noch gesetzt)
Noch etwas: Ich habe jetzt nicht den kompletten Thread gelesen, in 
deinem 1. Beitrag steht aber "$crystal = 1000000" Hast du einen 1Mhz 
Kristall?
Wenn ja, dann müssen die Fuses natürlich anders gesetzt werden.
Eine Möglichkeit wäre: Kein Haken bei SUT1, SUT0, CKSEL3, CKSEL1, 
CKSEL0. Nur ein Haken bei CKSEL2.

von Alex (Gast)


Lesenswert?

>Beitrag steht aber "$crystal = 1000000" Hast du einen 1Mhz Kristall?
nein, 4 MHz. Quellcode auch schon geändert.
also CKDIV8 weg und write?

von Martin K. (maart)


Lesenswert?

>also CKDIV8 weg und write?

Ja.

von Alex (Gast)


Lesenswert?

so, danke! jetzt hat es geklappt :)

von Martin K. (maart)


Lesenswert?

>so, danke! jetzt hat es geklappt :)

Nur der Schreibvorgang oder funktioniert jetzt auch das Programm so wie 
es soll?

von Alex (Gast)


Lesenswert?

>Nur der Schreibvorgang oder funktioniert jetzt auch das Programm so wie
es soll?

auf dem ersten blick beides.

muss jetzt nur noch die Zeit stoppen, und gucken wie genau meine Uhr 
jetzt nun läuft.
wenn die immernoch nicht genau ist, woran kann es liegen?

von Alex (Gast)


Lesenswert?

also die ist jetzt zu langsam.
ca. 1 sek. pro minute verspätung :(

von Alex (Gast)


Lesenswert?

bei mir om code sind volgenden Zeilen:

Waitms 10
und
Waitms 220

ist sowas überhaupt zulässig, wenn man eine Uhr baut?
also wait- befehl und eine Uhr... finde ich etwas komisch.

von Niels H. (monarch35)


Lesenswert?

Nein, das deine Uhr zu langsam ist hängt einzig und alleine mit dem 
Systemtakt zusammen. Offensichtlich schwingt das Quarz langsamer als 
erwartet.

von Alex (Gast)


Lesenswert?

>Offensichtlich schwingt das Quarz langsamer als erwartet.
werde sofort mal den 1.6GHz Counter anschliessen ;)

von Alex (Gast)


Lesenswert?

mein schöner Frequence counter von HAmeg sagt 4.00009MHz

von Martin K. (maart)


Lesenswert?

>werde sofort mal den 1.6GHz Counter anschliessen ;)

Das wäre keine schlechte Idee! Wenn bei Fusebit "CKOUT" ein Haken 
gesetzt ist, kannst du an PORTD2 den Clock-Takt ausgeben lassen. Dort 
sollten dann 4Mhz rauskommen.

von Niels H. (monarch35)


Lesenswert?

mich beschleicht das gefühl, daß deine Fuse-einstellung nicht 
geschrieben wurden und dein mega8 immernoch vom Internen RC auf 1MHz 
schwingt. Setz mal $crystal=1000000 und überprüf dann nochmal die 
zeit....

ich wette ich habe recht!

von Martin K. (maart)


Lesenswert?

>also die ist jetzt zu langsam.
>ca. 1 sek. pro minute verspätung :(

Wie kannst du das bereits nach einer Minute Laufzeit beurteilen?

von Martin K. (maart)


Lesenswert?

>mich beschleicht das gefühl, daß deine Fuse-einstellung nicht
>geschrieben wurden und dein mega8 immernoch vom Internen RC auf 1MHz
>schwingt. Setz mal $crystal=1000000 und überprüf dann nochmal die
>zeit....

Dann sollte er mal besser die Einstellungen mit Ponprog auslesen und 
nachsehen, ob sie wirklich geschrieben worden sind.

von Alex (Gast)


Lesenswert?

habe ich schon.. da zählt er die sunkunden wie verrückt ;)

also ich habe jetzt im Quellcode die beiden Waitms auf 0 gesetzt.
läuft schon seit 5 minuten. kann bis jetzt keine abweichung feststellen 
:)

von Martin K. (maart)


Lesenswert?

>also ich habe jetzt im Quellcode die beiden Waitms auf 0 gesetzt.
>läuft schon seit 5 minuten. kann bis jetzt keine abweichung feststellen
>:)

Du könntest auch das Programm durch
1
Do
2
3
4
5
6
Loop

ersetzen!

Die wait-Anweisungen werden schon ihren Sinn haben, dein Quellcode im 1. 
Beitrag kann doch aber nicht das komplette Programm sein. Irgendwo muss 
ja auch z.B. die Variable "_sec" definiert worden sein und irgendwie 
durch das Programm verändert werden.

von Niels H. (monarch35)


Lesenswert?

Die Wait-anweisungen haben keinen Einfluss auf die Uhr. Lediglich das 
Display wird jetzt laufend aktualisiert.

von Alex (Gast)


Lesenswert?

das programm läuft jetzt so:

[c]

$regfile = "2313def.dat"
$crystal = 4000000

 Config Lcd = 16 * 2
 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , 
Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4

  Cls
  Cursor Off
Config Dcf77 = Pind.6 , Inv = 0 , Upd = 0 , Timer = 1 , Timer1sec = 0 , 
Debug = 1 , Check = 2 , Switchpower = 0 , Secondticks = 50 , Powerlevel 
= 1


Enable Interrupts

Config Date = Dmy , Separator = .

Dim I As Integer

Dim Sec_old As Byte , Dcfsec_old As Byte

Sec_old = 99 : Dcfsec_old = 99


Do

For I = 1 To 78

Waitms 0

If Sec_old <> _sec Then

Exit For

End If

If Dcfsec_old <> Dcf_sec Then

Exit For

End If

Next

Waitms 0





Sec_old = _sec

Dcfsec_old = Dcf_sec

Locate 1 , 5
Lcd Time$ ; " "
Locate 2 , 5
Lcd Date$ ; " "
Locate 4 , 5
Lcd Bin(dcf_bits) ; " "
Locate 2 , 15
Lcd Bdcf_impuls ; " "


Loop

End
[c/]

hat aber immer noch verspätung. ca. 3 sekunden in 20 minuten

von Niels H. (monarch35)


Lesenswert?

Mach mal nen Foto von der Beschlatung des Schwingkreises...hab da so 
eine vermutung.

von Alex (Gast)


Lesenswert?

jop, sofort :)

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

num. 1

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

num. 2

von Martin K. (maart)


Lesenswert?

AHAHAHAHAH!

Eine deine Kamera keinen Makromodus?

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

und das letzte.
habe die C´s auf verschiedenen Seiten, weil die nicht anders gepasst 
haben :)

von Alex (Gast)


Lesenswert?

nein, wenn ich die Kamera dichter ran stelle, dann ist alles 
verschwommen

von Martin K. (maart)


Lesenswert?

>nein, wenn ich die Kamera dichter ran stelle, dann ist alles
>verschwommen

Nein, nicht noch näher ran. Versuche es mal mit WEITER WEG.

von Alex (Gast)


Lesenswert?

>Versuche es mal mit WEITER WEG.
jetzt im Erns?

von Martin K. (maart)


Lesenswert?

>jetzt im Erns?

Probier es doch einfach mal aus. Jede Kamera kann nur bis zu einem 
gewissen Mindestabstand zum Objekt scharfstellen, bei besseren Kameras 
kann das durchaus weniger als 10cm sein, bei Kameras ohne Makrofunktion 
leider nicht.

von Alex (Gast)


Lesenswert?

ich habe da mal so eine Idee.
die Uhr läuft ja etwas langsamer.
was passiert, wenn ich den compiler anlüge und $crystal = 3999998
schreibe?
dann soll sie ja schneller laufen, oder?
ist das nicht die Lösung dann?

von Niels H. (monarch35)


Lesenswert?

Sehe ich das Richtig?! Keine Kondensatoren???!!!

von Alex (Gast)


Lesenswert?

> Keine Kondensatoren???!!!
doch, sind da.
22p
ein oben, ein unten. gegen GND geschaltet.

von Alex (Gast)


Lesenswert?

also meine geile Uhr geht 10 sekunden pro Stunde zu langsam.
am Quarz ist 4.00009MHz. (gemessen).
waran kann es liegen?
also wenn mal ganzen Tag kein Empfang habe, dann ist die ganz toll 
verstellt :(
hat jemand einen Tipp?

von nummernschalter (Gast)


Lesenswert?

Gratulation ! 10 Sekunden pro Tag ist ein guter Wert. I.d.R. weichen µP 
gesteuerte Uhren immer etwas ab. Das kann man aber durch geschickte 
Auswahl des Quarzes beeinflussen. Da die Abweichung bekannt und immer 
gleich ist, kannst Du eine Korrektur einbauen, z.B. alle 144 Minuten 
eine Sekunde dazurechnen.

von Alex (Gast)


Lesenswert?

>10 Sekunden pro Tag ist ein guter Wert.
natürlich!
und ich habe 10 sekunden pro STUNDE! :(((
was mache ich denn nun?

von nummernschalter (Gast)


Lesenswert?

Das liegt vermutlich an der Verwendung von BASCOM AVR. Am Besten Du 
programmierst den Zeitgeber für Deinen 1/100 Sekunden-Takt in Assembler.

Ich habe zwar auch eine DCF77-gesteuerte Uhr in BASCOM AVR programmiert, 
jedopch gänzlich auf das "Selberzählen" verzichtet. Das übernimmt eine 
I2C-Echtzeituhr. Die ist auch unabgeglichen relativ genau und läßt sich 
durch einen Goldcap 2-3 Tage puffern. Das hat den Vorteil, daß sofort 
nach einem Stromausfall die aktuelle Uhrzeit zur Verfügung steht.

von Alex (Gast)


Lesenswert?

@ nummernschalter

noch eine Möglichkein gibt es nicht?
was ist damit?

ich habe da mal so eine Idee.
die Uhr läuft ja etwas langsamer.
was passiert, wenn ich den compiler anlüge und $crystal = 3999998
schreibe?
dann soll sie ja schneller laufen, oder?
ist das nicht die Lösung dann?

von Niels H. (monarch35)


Lesenswert?

Wenn du bei dir auf der Firma irgendwo einen Frequenzähler rumstehen 
hast, könntest du nachmessen, ob der Schwingkreis tatsächlich mit 4Mhz 
schwingt.

von nummernschalter (Gast)


Lesenswert?

Ich glaube das bringt im konkreten Fall nichts, da Du die Zeitgeber ja 
selber Einstellen (Vorteiler) mußt. Abgesehen davon werden alle 
Komponenten, die der Kompiler mit seinen errechneten Werten "versorgt" 
nicht mehr richtig funktionieren. z.B. "wait", serielle Schnittstelle 
usw.

von Karl H. (kbuchegg)


Lesenswert?

Alex wrote:

> was passiert, wenn ich den compiler anlüge und $crystal = 3999998
> schreibe?

Wenn schon, dann würde ich da auch das Ergebnis deines
Frequenzmessers reinschreiben.

Also:

$crystal = 4000090

Dann lügst du auch nicht, denn dein Quarz macht ja wirklich
diese Frequenz.

> dann soll sie ja schneller laufen, oder?

Kommt drauf an, was BASCOM mit dieser Angabe macht.

von Karl H. (kbuchegg)


Lesenswert?

PS:
Wenn du die Abweichung deines Quarzes von 4000090 hz mal
in Bezug auf die SollFrequenz von 4000000 Hz setzt und das
ganze auf 1 Stunde umlegst, dann kommst du drauf, dass du dann
bei 3600 Sekunden (=1 Stunde) rund 8 Sekunden Abweichung haben
wirst. Deine 10 Sekunden sind also realistisch. Wenn du
die Abweichung mal über einen Tag feststellst, dann kannst du
die tatsächliche Quarzfrequenz noch wesentlich genauer errechnen.
(Aber dazu musst du den Quarz dann temperieren. Der ändert seine
Frequenz auch mit der Temperatur).

von Paul Baumann (Gast)


Lesenswert?

Ich würde den Parameter "Secondtics=50" mal weglassen. In der Hilfe 
steht, daß der Compiler diesen Wert selbst errechnet. Nur wenn man 
selbst festlegt, daß man im Interrupt mehr Zeit braucht, sollte man den 
Wert von Hand verändern.

Ich habe hier übrigens eine Uhr mit Attiny 2313, die nur mit einem 4Mhz-
Quarz betrieben wird (ohne DCF). Die läuft seit 2 Jahren mit einer so 
geringen Abweichung, daß ich sie nur mal bei Sommer/Winterzeitwechsel 
stellen muß. Link: http://www.lexatronic.de/

MfG Paul

von Karl H. (kbuchegg)


Lesenswert?

Karl heinz Buchegger wrote:

> bei 3600 Sekunden (=1 Stunde) rund 8 Sekunden Abweichung haben
> wirst.

Oops. Da ist mir wohl am Taschenrechner irgendwo eine oder 2 Nullen
zuviel reingerutscht. Es sind 0.08 Sekunden. Erklärt also deine
Abweichung nicht. Kam mir irgendwie seltsam viel vor, dafür dass
der Quarz nur um 90 Hz danebenliegt.

von Alex (Gast)


Lesenswert?

>Ich würde den Parameter "Secondtics=50" mal weglassen.
ganz weglassen, oder auf 0 setzen?

von Paul Baumann (Gast)


Lesenswert?

Ganz weg.
MfG Paul

von Alex (Gast)


Lesenswert?

ok, danke! werde ich mal morgen versuchen

von Spess53 (Gast)


Lesenswert?

Hi

Selbst bei einem 100% genauen 4MHz Quarz kannst du keine genaue Sekunde 
erzeugen. Der minimale Fehler beträgt 0,006%. Besser wäre ein 4,096MHz 
Quarz.

MfG Spess

von Alex (Gast)


Lesenswert?

>Besser wäre ein 4,096MHz Quarz.
kann mir jemand meine 2 Fragen beantworten?
1. Warum ist dieses Quarz besser? Kann man ein Quarz aus alten 
Funkwecker nehmen?
2. dann stehe ich wieder vor dem Problem mit den Fusebits.
gerabe Zahlen, könnte ist mit 3-bin BCD code noch darstellen, aber wie 
mache ich nun 4,096?

von Spess53 (Gast)


Lesenswert?

Hi

1.Die Vorteiler der Timer sind 2er-Potenzen. Z.B. 1024.
  4000000 / 1024 = 3906,25
  4096000 / 1024 = 4000

2. Kommt auf den Quarz an.

Was hat das mit den Fusebits zu tun ????

MfG Spess

von Niels H. (monarch35)


Lesenswert?

Das Problem ist, das dir die Grundlagen fehlen. Solange du die nicht 
lernst, wirds du immer wieder auf neue Fragen stossen, die du dir selber 
beantworten könntest, würdest du dich mit den Grundlagen E-Technik und 
Digitaltechnik befassen.

von Paul Baumann (Gast)


Angehängte Dateien:

Lesenswert?

@Spess 53
Ich habe mal ein Programm angehangen, was mir wunderschön 1Hz aus 4Mhz
erzeugt. Mit Timer 1 ginge das sogar noch einfacher, aber den hatte ich 
schon "besetzt". ;-)

MfG Paul

von Tobias P. (hubertus)


Lesenswert?

Hm,
soweit ich mich erinnere liefert DCF77 die Zeitinformation über die 
Impulsdauer.
Jede Sekunde kommt ein Low-Impuls (Signal ist low-aktiv). Je nach dauer 
des Low-Impulses (100 oder 200 ms) wird ein 0- oder 1-Bit repräsentiert. 
Du brauchst jetzt nur 59 Bits abzuwarten, dann hast du eine komplette 
DCF77-Sequenz empfangen. natürlich musst du noch wissen, ab wann du die 
Bits zählen musst. Nun, immer der Minutenanfang wird durch einen etwas 
längeren low-Impuls gekennzeichnet, sofern ich das noch richtig im Kopf 
habe.
also - langen low-Impuls abwarten und danach alle Bits merken, je nach 
dem ob der Impuls 100 oder 200 ms dauerte. Die Bits nachher gemäss 
Wikipedia decodieren und gewünschte Bits ausgeben - fertig.
Wahrscheinlich hat weiter obe das schon jemand beschrieben, aber wenn 
nicht hast dus hier nochmal ;) ansonsten ist eine sehr gute Beschreibung 
von DCF77 auf Wikipedia.

von Spess53 (Gast)


Lesenswert?

Hi

@Paul Entschuldige, ein solcher Aufwand zur Erzeugung eines 
Sekundensignals lag bisher ausserhalb meines Vorstellungsvermögens. In 
Assembler brauche ich dafür ca. 10 Befehle. Mit geeigneter 
Hardwareauswahl kann man sich eine Menge Stress ersparen.

MfG Spess

von Niels H. (monarch35)


Lesenswert?

Brrr...also ich bin ja selber Assembler- und GCC-Coder aber dieses 
Pseudo-elitäre "in assembler ist kürzer und schneller" gequatsche geht 
mir auf den Sack weils einfach nicht wahr ist!

Assembler hat den Nachteil, das der Code schwerer zu lesen ist und die 
Sprache einen überhauptnicht bei seiner Arbeit unterstüzt, strukturiert 
an eine Problemlösung ranzugehen. Man ist ständig auf seine eigne 
Disziplin angewiesen den Stack und den Code selbst aufgeräumt zu halten. 
C und Bascom nehmen da einem sehr viel arbeit ab und der Code ist für 
jedermann auf Anhieb verständlich.

Um zu verdeutlichen was ich meine:
Setz dich mal vor einen Assemblerprogrammcode den du vor 2-3 Jahren 
geschrieben hast und versuche nur anhand des Programmcodes zu erkennen, 
um welches Programm es sich handelt. Das geht mit C deutlich einfacher.

Assembler hat ganz klar auch seine Vorteile, aber der Aussage "in 
assembler gehts schneller" ist nur äusserst bedingt richtig. Vor allem 
was die Laufzeitgeschwindigkeit betrifft stimmts nur in den wenigsten 
Fällen, da hier Erfahrung mit Hardware und Plattform des Programmierers 
gefragt ist. Häufig kann ein C-Compiler Optimierungen fahren, wo nahezu 
jeder Hobbyprogrammierer nicht drankommt.

Schon gewusst: nur die wenigstens Berufsprogrammierer suchen sich ihre 
Plattform selber aus sondern müssen sich an ein Team anpassen. 
Professionalität bedeutet also, sich anpassen zu können und andere 
Plattformen zu respektieren.

von Paul Baumann (Gast)


Angehängte Dateien:

Lesenswert?

@Spess53

Nun gut, Du hast gewonnen. ;-) ...aber ein klein weing kürzer geht es 
schon noch - mit dem Timer 1.

MfG Paul

von Simon K. (simon) Benutzerseite


Lesenswert?

Ich hab jetzt nicht in euren Code hineingeschaut (Omg. bas Dateien muss 
ich erst speichern und dann öffnen!), aber warum lasst ihr den Timer 
nicht einfach im CTC Modus laufen?

Vorteiler 64 und 62500 ins jeweilige CTC-Register und fertig.
4000000/64/62500 = 1Hz

von Alex (Gast)


Lesenswert?

wie kann man eigentlich Quarzfrequenz ermitteln?
also auf dem quarz stehen ganz viele Zahlen. z.B.
98-21
51116.60
08tq89 K
was ist das für ein Quarz?

von Alex (Gast)


Lesenswert?

ich habe jetzt ein 6.40040 MHz Quarz gefunden.
wie muss man ist dem Fall die Fusebits setzen?
also bei 1MHz - 001, bei 2MHz - 010, bei 3Mhz - 011, bei 4Mhz - 100, 
5Mhz - 101 u.s.w.
und wie macht man das bei 6.40040? Einfach fusebits für 6Mhz setzen, und 
den Compiler 6.40040 Mhz erzählen?
Also bei 6Mhz is das ja 110. Richtig so?

von Max Schradin (Gast)


Lesenswert?

Ne Alex, langsam macht das echt keine Spass mehr dir zu helfen. Willst 
du die Gedult des Forums testen oder bist du wirklich so unselbständig 
und überhaupt nicht lernfähig/lernwillig?

von Niels H. (monarch35)


Lesenswert?

Max Schradin wrote:

> Ne Alex, langsam macht das echt keine Spass mehr dir zu helfen.

??? Wenn ich das richtig sehe ist das dein erster Post in diesem Thread.

von tex (Gast)


Lesenswert?

>??? Wenn ich das richtig sehe ist das dein erster Post in diesem Thread.
Das Feld "Name" ist geduldig....

von Alex (Gast)


Lesenswert?

>Ne Alex, langsam macht das echt keine Spass mehr dir zu helfen.

brauchst du nicht! ;)

die Uhr ist fertig! :)
läuft NOCH 2 sek /2 Stunden zu schnell jetzt, aber ich krige das schon 
besser hin! ;)
Danke, dass du mir geholfen hast!

von Martin K. (maart)


Lesenswert?

>die Uhr ist fertig! :)

Glückwunsch, war ja auch eine schwere Geburt ;-)

von Boxi B. (boxi)


Lesenswert?

in der zeit hättest du fast schon ne vernünftige programmiersprache 
lernen können!

von Alex (Gast)


Lesenswert?

>in der zeit hättest du fast schon ne vernünftige programmiersprache
>lernen können!
ich habe mir Assembler angeguckt.
ALLES dichter Wald ;)

von Martin K. (maart)


Lesenswert?

Neben Assembler gibt es ja auch z.B. noch C

von Niels H. (monarch35)


Lesenswert?

zuviele voids.. :)

von Alex (Gast)


Lesenswert?

> Neben Assembler gibt es ja auch z.B. noch C

finde ich noch unverständlicher ;)

von Martin K. (maart)


Lesenswert?

>>in der zeit hättest du fast schon ne vernünftige programmiersprache
>>lernen können!
>ich habe mir Assembler angeguckt.
>ALLES dichter Wald ;)

BASCOM wahr jetzt aber auch nicht gerade eine einzelne Fichte ;-)

von Alex (Gast)


Lesenswert?

>BASCOM wahr jetzt aber auch nicht gerade eine einzelne Fichte

im Bascom sind die Befehle LESBAR :)))

von gast (Gast)


Lesenswert?

> finde ich noch unverständlicher ;)
?!?
wie es Niels Hüsken schon zuvor geschrieben hat: Assembler und 
Lesbarkeit bzw. Verständlichkeit nach einiger Zeit... naja...
Es mag sicher C-Programme geben, die schwer zu lesen sind; aber ich 
glaube in asm sind die noch schwieriger zu lesen.
Trotzdem: jedem das Seine!

von Oliver (Gast)


Lesenswert?

>die Uhr ist fertig! :)
>läuft NOCH 2 sek /2 Stunden zu schnell jetzt, aber ich krige das schon
>besser hin! ;)

2 sek /2 Stunden Abweichung bei einer DCF77-FUNKUHR ist allerdings eine 
einmalige Leistung. Das dürfte vor dir noch keiner hinbekommen haben.

Oliver

von Niels H. (monarch35)


Lesenswert?

Oliver wrote:

> 2 sek /2 Stunden Abweichung bei einer DCF77-FUNKUHR ist allerdings eine
> einmalige Leistung. Das dürfte vor dir noch keiner hinbekommen haben.

Naja, für jemanden, der keinen blassen Schimmer hat von dem was er tut 
ist das schon nicht schlecht. Aber sowenig aus so einem Projekt 
mitzunehmen ist tatsächlich ne Leistung.

von Karl H. (kbuchegg)


Lesenswert?

Na ja.
Jemand der einen Videorekorder 'programmieren' kann
ist deshalb auch noch lange kein Programmierer.

von Alex (Gast)


Lesenswert?

>2 sek /2 Stunden Abweichung bei einer DCF77-FUNKUHR ist allerdings eine
>einmalige Leistung.
wie wäre es mal mit ALLES lesen, und dann posten?
weiter ober steht noch in dem Fall, wenn KEIN DCF signal da ist!

von Karl H. (kbuchegg)


Lesenswert?

Alex wrote:
>>BASCOM wahr jetzt aber auch nicht gerade eine einzelne Fichte
>
> im Bascom sind die Befehle LESBAR :)))

Falsch.
In Bascom gibt es eine Menge fertiger Bausteine, die
dem Unbedarften suggerieren, dass er ein Programm
progammiert hat, wenn er in Wirklichkeit nur ein paar
vorgefertigte Bausteine mit etwas verbindendem Kit
zu einer ausführbaren Einheit kombiniert hat.

In Wirklichkiet hast ja nicht du den DCF Empfänger
programmiert. In Wirklichkeit hast ja nicht du die
Uhr programmiert. All das hat schon jemand vorgefertigt.
Du schaltest es nur noch ein und holst die Ergebnisse ab.
Dagegen ist auch nicht unbedingt etwas einzuwenden.
Solange man versteht was man da eigentlich tut.

Nichts gegen Lego bauen. Aber Modellbau ist was anderes :-)

von Boxi B. (boxi)


Lesenswert?

@KHB: schön gesagt

von Alex (Gast)


Lesenswert?

also ich weiss nicht, wie ich das beschreiben soll... NERVENAUSBRUCH 
passt am ehersten.

auf dem arbeit habe ich alles eingestellt.
mit der Stoppuhr abgeglichen. es waren nur 2 sek / 2 Stunden zu schnell.
ich komme nach hause. schalte das ein...
16 SEKUNDEN in 2 MINUTEN zu schnell.
WIE kann das angehen? WARUM?
gleich alles vom Tisch runtergeschmissen.
eine geraucht.
wieder alles zusammengesammelt.
also ich weiss echt nicht mehr weiter.
suche schon seit einer Stunde kramphaft bei google mit dem Stichwort 
"DCF Clock AVR Bascom" und finde NICHTS passendes.
ich brauche einen Quellcode, der funktioniert, damit ich den bearbeiten 
kann.
selbst ein zu schreiben, bin ich nicht in der Lage.
wenn ich was finde, dann ist das mit 7-segment-Anzeige.
kann aber auf mein LCD nicht übertragen.
WAS soll ich machen?
es geht jetzt ums prinzip, und nicht um diese blöde Uhr.

von nummernschalter (Gast)


Lesenswert?

Guten Morgen.

Vielleicht wäre es jetzt an der Zeit, sich doch einmal mit Assembler zu 
befassen. Kauf' Dir ein Buch und lasse zunächst einige Lampen blinken. 
Danach kannst Du Dich dann mit Zeitgebern befassen und Du wirst 
plötzlich verstehen, was es mit den krummen MHz'en auf sich hat, wenn Du 
Vorteiler und Zeitgeber Register berechnest.

BASCOM AVR ist zwar eine feine Sache, wenn man schnelle Ergebnisse 
braucht, allerdings gibt es einige Tücken, wie ich selber erfahren 
musste. Prozessor- und Assemblerkenntisse wären in jedem Fall sehr von 
Vorteil.

von Martin K. (maart)


Lesenswert?

>ich brauche einen Quellcode, der funktioniert,
Den wirst du bestimmt irgendwo finden, aaaaaber:

>damit ich den bearbeiten kann.

Bei deinem jetztigen Wissensstand lieber nicht. (nicht böse gemeint)

>WAS soll ich machen?
>es geht jetzt ums prinzip, und nicht um diese blöde Uhr.

Am besten ganz von Anfang an beginnen, damit du die Grundlagen 
beherrscht.
Evtl. erst mal klein Anfangen und nur eine LED zum blinken bringen. Ein 
Patentrezept kann ich die leider auch nicht geben, aber mit Copy & Paste 
+ wildes Editieren ohne den Code halbwegs zu verstehen für nicht zum 
Ziel und kann, wie du ja schon selbst erleben musstest, sehr schnell 
frustierend sein.

von Niels H. (monarch35)


Lesenswert?

Alex wrote:

> 16 SEKUNDEN in 2 MINUTEN zu schnell.
> WIE kann das angehen? WARUM?

Wie ich bereits sagte, du wirst das Thema nie im Griff haben, wenn du 
die Grundlagen nicht kennst.

Ich schlage vor du bastelst dir erstmal in Bascom eine eigene Uhr, die 
mit dem Systemtakt und einem Timerinterrupt arbeitet und zwar OHNE 
irgendwelche Module zu verwenden.

Danach kannst du dich an die dekodierung des DCF-77-Signals wagen. OHNE 
Module zu verwenden.

Danach kannst du beide Projekte kombinieren und zusammenfügen. OHNE blah 
blah blah...

von Boxi B. (boxi)


Lesenswert?

Es gibt 10 Arten von Menschen: Solche, die binär verstehen und solche 
die es nicht verstehen!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.