DCF77 und RTC mit ATmega unter BASCOM

Hallo,
also so ziemlich alle meine gekauften funkkontrollierten Uhren zeigen "falsche" Sekunden bzw. manchmal sogar Minuten an . Da sind die Differenzen erheblich. Das liegt eben daran, wann diese handelsüblichen Uhren synchronisiert werden.
Der einzige Anhaltspunkt war und ist heute noch für mich lange der akustische Eindruck vom Direktsignalempfang mittels Empfänger gewesen.
Ahh, jetzt kommt der auszulassende 59. Impuls, aha, jetzt beginnt die volle Minute, gleichzeitig Blick auf Funkuhr: Na...da zeigt sie mir noch Sekunde 45 an. Stimmt nicht. Die andere Funkuhr hat nur eine Sekunde Differenz . etc.
Aber in der Summe über Tage und Monate stimmt die Zeit.

OK.
Wollte nur sagen, die hier vorgestellten Funkuhren arbeiten auch nach dem Prinzip der Synchronisation. Wo man auch sehen kann, ob oder nicht synchron.
Es darf wohl allgemein bekannt sein, daß die Auswertung der DCF77-Funk-Signale nach dem Prinzip der zunehmenden Skalenwerte erfolgt. Das heißt: Es wird verglichen, ob zur Minute "n" dann Minute "n+1" , "n+2" ...etc. kommt. Ist diese Überprüfung korrekt, kommt erst die Zeitanzeige auf dem Display. Daher muß man erstmal mindestens 3 Minuten warten, bevor überhaupt bei den Funkuhren etwas angezeigt wird.

Gruß
von Oskar01
 
Hallo

Mal zum sync. Wenn ich meine selbst gebaute sagen wir mal in der 57 Sekunte resete habe ich in 90% der Fälle 1:03 Min später die korrekte Uhrzeit. Und zwar auf die Sekunte. Ich habe den Conrad Empfänger drann den ich noch über einen Transistor am Atmega habe. Selbst wenn hier ein Haufen anderer Elektronischer Geräte Läuft ist der Empfang top.:D
 
DCF Uhr

Hallo Markus,
Also vielen Dank nochmal für die schnelle Antwort. Meinen Fehler habe ich gefunden! C-Control verwendet das Signal invers. So habe ich den Secundentic mitbekommen aber Impuls-Pause waren gedreht. Das Bascom beispiel läuft jetzt.

Nun wollte ich meine eigene Anwendung dazu hängen und nichts geht mehr. Ich durchschaue das ganze Uhren-Programm nicht. Wo wird der Sekundenschritt gemacht, macht den nicht Bascom mit seiner Soft-Clock. Wo wird die DCF Routine aufgerufen, ich lese auf einer anderen Seite das es eine DCF.lib gibt finde aber keinen Aufruf.
Ich würde mich freuen wenn Du mir die Zusammenhänge ein wenig erläutern könntest.
vielen Dank vorab.
uli
 
Hallo Uli,

ich habe zwar auch fast keine Ahnung aber ich versuchs mal :eek:

Also, fangen wir mal ganz ganz am Anfang an:

[1] Thema LIB's:
Es gibt meherere Möglichkeiten ein DCF77 Modul mit BASCOM anzubinden. Eine Lösung wird durch BASCOM selbst und eine BASCOM eigene DCF77 Lib angeboten. Für die LIB benötigst Du in der Regel kein eigenes $lib-Statement da die BASCOM-LIB vom Compiler automatisch bei "CONFIG DCF77" angezogen wird. Ich verwende für mein Projekt die BASCOM interne LIB!

Einige fleißige Bienchen haben eine eigene LIB gestrickt die sich im Internet in der Zwischezeit sehr weit verbreitet hat. Diese LIEB wird z.B. von Thomas Knickohr verwendet da sie anscheinend zuverlässiger ist. Die LIB wird mit $lib "DCF77.LIB" eingebunden und ersetzt die BASCOM interne LIB. Wie genau die funktioniert kann ich nicht sagen da ich diese noch nicht ausprobiert und angesehen habe.

Welche Du verwendest ist - so denke ich - reine Geschmaksach.

[2] Thema Funktionsweise
Ich denke beide LIB's arbeiten prinzipiell gleich. Der Unterschied steckt in den Details. Prinzipiell ist es so, dass die gesamte Abtastung des DCF77 Signals und die synchronisation mit der SoftClock über einen Timer und die zugehörigen Interrupts abläuft. Von außen betrachtet läuft das ganze Ding erstmal ohne Zutun.

Aber auch hier steckt der Teufel sicherlich im Detail. Abhängig davon, welcher Timer verwendet wird, sind die zugehörigen Interrupts höher oder nieder Prior gegenüber anderen. Du kannst also durchaus durch ungeschickte Wahl des Timers und durch die Verwendung anderer Timer und Interrupts die SoftClock und die DCF77-Abtastung stören.
Abhängig davon, was in den ISR's noch gemacht wir, verstärkt sich das Problem.

[3] Sekundenschritt
Der Sekundenschritt für die Softclock leitet sich aus einem vielfachen des verwendeten Timers ab welcher für die Abtastung des DCF77-Signals verwendet wird.

Diesen Sekundenschritt kannst Du über SECTICK abgriefen. Durch geeignete Parametrierung der BASCOM LIB kannst Du den Timer soweit verlangsamen, dass er die DCF77 nicht ständig prüftund nicht ständig synchronisiert sondern dass er nur jede Sekunde einen TIC für die SoftClock erzeugt. Ob das bei der "Bienchen"-LIB auch so geht weiß ich nicht.

[4] DCF-Routine
Die DCF-Routine ist integraler Bestandteil der LIB und der Timer. Das Zeug ist miteinander verflochten und Du als Anwender der LIB merkst nichts bzw. nicht viel.

[5] Wechselwirkungen
Es versteht sich von selbst, dass wenn Du an der Konfiguration des Megas drehst und Inetrrupts sprerrst usw. Du ggf. auch den Timer für DCF77 und SoftClock mit beeinflusst.


So, nun hoffe ich, dass ich Dir mit dieser Darstellung etwas weiterhelfen konnte.


Grüße,
Markus
 
DCF77 Uhr

Hallo Markus,
vielen Dank noch mal für die blitzschnelle Antwort. Zum richtigen Klick hat sie nicht geführt. Was ich eigendlich suche ist: wo wird das ganze angeleiert. Wenn ich richtig in der Hilfe gelesen habe muss doch eine Lib. auch deklariert werden. Oder geschieht das damit wenn ich Config DCF77 aufrufe.

Aber was ich noch vermelden muss, es geht es geht es geht!
Der Fehler liegt nicht am DCF77 sondern am Anfänger.
Ich will ja alle Minute Messwerte in ein externes I²C-EE-Promm speichern. Dazu habe ich das Bascom Demo umgearbeitet und das lief dann. Als ich es dann in mein Programm rüberkopierte habe ich nicht mehr auf die richtigen Adressen des I²C-EE-Promm's geachtet und .. jedesmal beim Speichen ,nach einer Minute oder so, die Kutsche ins irgendwo geschickt.
Und warum schreibe ich das hier?? Weil ich sagen will, manchmal liegt der Fehler ja am anderen Ende und ist selbstgestrickt.
Ja jetzt messe ich Temperatur und Helligkeit und speichere sie im EE-Promm immer schön im Kreis herum das auch jede Speicherzelle genau so oft wie die andere benutzt wird.
viele grüße noch von
uli
 
Hi Uli,

ja ja so ist das. In der Regel sitzt zu 99,9% der Fehler von der Tastatur :D

Mit der LIB hast Du natürlich auch recht. Du benötigst die DCF77.LIB entweder von BASCOM oder von anderen Usern. Die wird üblich auch mit $lib eingebunden. Aber bei der BASCOM-Lib kann dieser Schritt entfallen.

Sobald der BASCOM Compiler auf das "CONFIG DCF77" Statement trifft so läd er automatisch die DCF77.LIB. Quasi via Automatismus.

Das ganze steht und fällt also mit dem CONFIG DCF77. Hier wird alles initialisiert und gestartet was notwendig ist, aber die SoftClock und der Timer laufen noch nicht. Erst mit dem darauffolgenden Statement "Enable Interrupts" werden die benötigten Interrupts freigegeben und die Uhr läuft. Verstanden?

Wie schon gesagt, auch die BASCOm Hilfe betet hier ausreichend Erklärung, auch zum DCF77 selbst. ggf. kannst Du Dir auch das fast 20 MByte große Manual von der BASCOM-Homepage runterladen. Da ist vieles noch ausführlicher erklärt und die Beispiele sind auch vollständig!


Grüße,
Markus
 
Synchronisieren der RTC

Hallo Markus,
auch wenn Dein Beitrag schon etwas älter ist, vieleicht beobachtest Du ihn ja noch.
Sehe ich das richtig, Du synchronisierst die Real Time Clock jede Minute neu?
Oder hab ich etwas übersehen.
Gruß Siggi
 
Hi Siggi,

jetzt erwischt Du mich auf dem linken Fuß da mein Code wirklich schon älter ist. Soweit ich meinen Code aber noch im Kopf habe synchronisiere ich meine SoftClock und den RTC nicht "jede Minute" neu sondern ich synchronisiere sie dann neu, wenn der DCF77-Empfänger ein komplettes gültiges Telegramm komplett empfangen hat.

Du hast dahingehend recht; wenn Du guten Empfang hast dann passiert das jede Minute. Bei mir auf dem Schreibtisch kann es schon mal zwischen 5 - 10 Minuten gehen bis alle Bits richtig angekommen sind. Das hängt wie gesagt von der Empfangqualität des Signal ab.

Die DCF77-Routinen setzten dazu ein Flag was mir signalisiert, dass einmal die Zeit komplett richtig empfangen wurde. Ich setzte das Flag dann zurück und synche die SoftClock und den RTC viw TWI!

Man kann im Config-Statement von BASCOM angeben, wie oft synchronisiert werden soll. Für mein Wintergartenprojekt wo ich die Routinen auch einsetze synce ich nur alle 24 Stunden. Bedeutet, die SoftClock / DCF77 synct nah System-Start ein Mal und geht dann quasi in Standby für 24 Stunden. Es wird nur noch der Sekundentakt für SecTick erzeugt aber die anderen rechenintensiven Abtastungen laufen nicht mehr!

Grüße,
Markus
 
Hallo zusammen,

auch ich habe eine ganze Weile mit der BASCOM-eigenen DCF77-Routine rum gemacht und sie verworfen. Das hatte mehrere Gründe. Einmal bekam ich fast gar keine saubere Übertragung zustande, und wenn dann doch mal was ankam, war es Müll. Ein weiterer Grund war, das ich keinen externen Uhrenquarz an den TOSC-PINs des Atmels mehr verwenden konnte. Die Softclock lief nur noch über den Timer2. Das war mir aber bei einem internen Takt ohne Quarz an den XTAL-PINs viel zu ungenau. Ich verwende meistens den interen RC-Oszillator.

Also habe ich mich auf die Suche in den unendlichen Weiten des WWWs gemacht und bin fündig geworden. D. Ottensmeyer hat vor 2 Jahren eine LIB im Roboterforum zur Verfügung gestellt. Mittlerweile bei Version 4.00 (25.11.2006). Die LIB funktioniert prima, hat ein paar Plausibilitätsprüfungen eingebaut und, das hat mich überzeugt, sehr gute Empfangseigenschaften und man kann einen Uhrenquarz parallel betreiben. Lange Rede, wenn kein DCF-Signal da ist, dann läuft die Soffclock über den Uhrenquarz recht genau weiter.

Das Ganze hat einen Nachteil. Man muß in der LIB den PIN für den DCF-Impuls am Atmega anpassen und den Prozessortyp (die HEX-Adresse dafür) aus dem Datenblatt raus suchen und in die LIB von Hand eintragen :

Code:
[Dcf77_soft]
;Eingang für DCF77-Empfänger-Anschluss:
.equ DCF_Port = $00    ;PortA für Atmega644
.equ DCF_Pin  = 6      ;6 = Pin 6

Im BASCOM-Programm selbst sind noch ein paar Deklarationen zu machen und ein Timer aufzuziehen :

Code:
.
.
.
$lib "dcf77_4.lib"
$external Dcf77                                                                 ' DCF77 ohne Softclock (mit Uhrenquarz)
$external Dcf77_init                                                            ' Initialisierung der DCF77-Lib
'$external Dcf77_soft                                                           ' DCF77 mit Softclock (ohne Uhrenquarz)
.
.
.
Const Dcfdebug = 0
'Const Startwert = 61                                                           ' für Timer 8-bit
Const Startwert = 40536                                                         ' für Timer 16 bit
.
.
.
Dim Dcf77counter As Byte                                                        ' Pausenzeit-Zähler
Dim Dcf77parity As Byte                                                         ' Fehler-Flag + 1-Zähler
Dim Dcf77impulse As Byte                                                        ' Aktuelle DCF77-Bitnummer
Dim Dcf77buffer(9) As Byte                                                      ' Dcf77buffer(9): bits 0..7, bits 8..14, flags (= bits 15..20), min, hour, day, dayofweek, month, year
Dim Dcf77shifter As Byte                                                        ' Bitposition in der aktuellen DCF77Buffer Zelle
Dim Dcf77tal As Byte                                                            ' Zeiger (low) auf die aktuelle DCF77Buffer Zelle
Dim Dcf77tah As Byte                                                            ' Zeiger (high) auf die aktuelle DCF77Buffer Zelle
Dim Dcf77hsec As Byte                                                           ' Sekunden-Bruchteile
Dim Dcf77bits0_7 As Byte                                                        ' DCF77-Bits 0..7
Dim Dcf77bits8_14 As Byte                                                       ' DCF77-Bits 8..14
Dim Dcf77val_cnt As Byte                                                        ' Validitäts-Zähler
Dim Dcf77lastbit As Byte                                                        ' LastBit-Pausenlänge für Debug
Dim Dcf77databit As Byte                                                        ' DataBit-Pausenlänge für Debug
Dim _dayofweek As Byte , Dcfstatus As Byte , Dcfflags As Byte
'_dayofweek -> 1..7 (Mo..So)
'Dcfstatus  -> Bit0: 15. Impuls erreicht  Bit4: 58 Impulse empfangen
'              Bit1: Minutenparität OK    Bit5: Gültiges DCF77-Telegramm
'              Bit2: Stundenparität OK    Bit6: Softclock nach DCF gestellt
'              Bit3: Parität OK           Bit7: DCF-Decoder EIN
'              ACHTUNG: Bits 0..5 NUR LESEN !
'Dcfflags   -> Bit0 (R) : Rufbit für Alarmierung der PTB-Mitarbeiter
'              Bit1 (A1): Ankündigung des Wechsels MEZ <-> MESZ
'              Bit2 (Z1): \__ Z1/Z2: 10 = MESZ, 01 = MEZ
'              Bit3 (Z2): /
'              Bit4 (A2): Ankündigung einer Schaltsekunde
'              Bit5 (S) : Startbit für Zeitinformationen (immer 1)
.
.
.
Declare Sub Dcf77
Declare Sub Dcf77_init
'Declare Sub Dcf77_soft
.
.
.
Enable Interrupts
Config Clock = Soft , Gosub = Sectic
Config Date = Dmy , Separator = .
.
.
.
Dcf77_off = 1                                                                   ' DCF77 disablen (fallende Flanke erforderlich, um DCF77-Empfänger zu starten
Config Timer4 = Timer , Prescale = 8                                            ' Timer für 40Hz (25ms)
'Config Timer0 = Timer , Prescale = 1024                                        ' Timer für 40Hz (25ms)
Timer4 = Startwert
'On Timer4 Timer_dcf77                                                          ' Überlauf alle 25ms, funktioniert nicht !
On Ovf4 Timer_dcf77                                                             ' Überlauf alle 25ms
Disable Timer4                                                                  ' Timer für DCF77 noch disablen
.
.
.
Dcf77_off = 0                                                                ' DCF77 enablen, fallende Flanke
Dcfstatus.6 = 0
Dcfstatus.7 = 1
Enable Timer4
.
.
.
If Dcfstatus.7 = 1 Then                                                ' prüfe auf korrekten DCF77-Empfang
   If Dcfstatus.5 = 1 And Dcfstatus.6 = 1 Then                         ' wenn OK, DCF77 disablen
      Disable Timer4
      Dcf77_off = 1
      Dcfstatus.7 = 0
      Temp_string5 = Chr(48)                                           ' Synchronisationszeichen (kleine Uhr) im Display anzeigen
       Lcdtext Temp_string5 , 187 , 1 , 2 , 0 , 1
       If Dcfflags.3 = 1 Then                                           ' Sommer- oder Winterzeitsymbol einblenden
         If Dcfflags.2 = 0 Then
            Temp_string1 = "MEZ "
            Zeitzone = 1
         End If
      Else
         If Dcfflags.2 = 1 Then
            Temp_string1 = "MESZ"
            Zeitzone = 2
         End If
      End If
      Lcdtext Temp_string1 , 187 , 23 , 1 , 0 , 1
      Dcf_sync = 1
   Else
      Temp_string5 = Chr(49)
      Lcdtext Temp_string5 , 187 , 1 , 2 , 0 , 1                       ' Synchronisationszeichen (kleine Uhr) im Display löschen
      Dcf_sync = 0
   End If
   #if Dcfdebug                                                        ' nur zum DCF77-Debug notwendig
      Locate 2 , 2 : Lcd Dcf77counter ; " "
      Locate 3 , 2 : Lcd Dcf77shifter ; " "
      Locate 4 , 2 : Lcd Dcf77impulse ; " "
      Locate 5 , 2 : Lcd Dcf77parity ; " "
      Locate 6 , 2 : Lcd Dcf77lastbit ; " "
      Locate 7 , 2 : Lcd Dcf77databit ; " "
      Locate 7 , 2 : Lcd Dcf77val_cnt ; " "
      Locate 2 , 5 : Lcd Dcfstatus.0
      Locate 3 , 5 : Lcd Dcfstatus.1
      Locate 4 , 5 : Lcd Dcfstatus.2
      Locate 5 , 5 : Lcd Dcfstatus.3
      Locate 6 , 5 : Lcd Dcfstatus.4
      Locate 7 , 5 : Lcd Dcfstatus.5
      Locate 8 , 5 : Lcd Dcfstatus.6
      Locate 9 , 5 : Lcd Dcfstatus.7
      Locate 2 , 8 : Lcd Dcfflags.0
      Locate 3 , 8 : Lcd Dcfflags.1
      Locate 4 , 8 : Lcd Dcfflags.2
      Locate 5 , 8 : Lcd Dcfflags.3
      Locate 6 , 8 : Lcd Dcfflags.4
      Locate 7 , 8 : Lcd Dcfflags.5
   #endif
End If
Select Case Dayofweek()                                                ' Beschriftung Wochentag
   Case 0
      Wochentag = "Mo."
   Case 1
      Wochentag = "Di."
   Case 2
      Wochentag = "Mi."
   Case 3
      Wochentag = "Do."
   Case 4
      Wochentag = "Fr."
   Case 5
      Wochentag = "Sa."
   Case 6
      Wochentag = "So."
End Select
Lcdtext Wochentag , 195 , 0 , 1 , 0 , 1                                ' Datum anzeigen
Lcdtext Date$ , 195 , 23 , 1 , 0 , 1
.
.
.
Sectic:                                                                         ' Sekundentick
   If _min = 58 Then                                                      ' jede Stunde die Zeit mit DCF77 synchronisieren
      Dcf77_off = 0
      Dcfstatus.6 = 0
      Dcfstatus.7 = 1
      Enable Timer4
   End If
Return

Timer_dcf77:                                                                    ' Timer zur DCF77-Decodierung
   Timer4 = Startwert
   Call Dcf77
Return

Im Anhang die LIB, angepaßt für einen Atmega644 an PinA.6. Paßt auch für den Atmega640, 1280, 1281, 2560, 2561.

Ich hoffe, das Wirrwarr hilft etwas ;)

Thomas
 

Anhänge

  • DCF_LIB.zip
    3,8 KB · Aufrufe: 82
Nachtrag: Ich kann die Beobachtungen eund Erfahrungen von Thomas bzgl. der originalen BASCOM-LIB nicht ganz nachvollziehen, weiss aber, dass die Probleme wohl existieren sollen.
Ich selbst stand vor der Alternative die BASCOM eigenen Routinen oder die "second party LIB" zu verwenden, habe mich für die BASCOM-LIB entschieden und sie läuft bei mir seit bald Jahren ohne Probleme!

Allerdings verwende ich auch einen externen 16 MHz Quarz an meinem 128er Mega.

Grüße,
Markus
 
Hallo zusammen!

Ich benutze auch nur die BASCOM-Routine für den DCF-Empfang und kann Thomas in dem Punkt zustimmen, dass bei fehlendem DCF-Signal die Softclock sehr schnell aus dem Ruder läuft.
Bereits nach einer Stunde fehlen schon einige Sekunden.
Es ist zwar an dem ATMega16 auch ein externer 4MHz Quarz angeschlossen, aber trotzdem entstehen sehr schnell die Differenzen.

Allerdings habe ich mit dem Empfang des DCF-Signals bei mir keine Schwierigkeiten und die Softclock wird fast jede Minute aktualisiert. ;)

Trotzdem ist der Einwand von Thomas in Ordnung und ich möchte es bei Zeiten gern mal mit der anderen LIB ausprobieren.
Ist ja beruhigend zu wissen, dass die Uhr auch ohne Aktualisierung noch tagelang genau läuft. :)

Grüße,
Cassio
 
Hallo Markus,
danke für Deine Schnelle Antwort.
Bin nach ein paar versuchen auch darauf gestoßen (Dank Deiner Erklärung in der Zeile über der Config DCF).
Jetzt hab ich noch ein Problem mit dem Timer, ich würde gerne den Timer1 für pwm zutzen, kann man die DCF ganz deaktivieren, damit der Timer wider frei wird?

Hallo auch Thomas,
ich hab kein Problem mit dem DCF empfang.
Spätestens nach 3 min habe ich die Zeit.
Verwende das Modul von Conrad, invert. Ausgang.
Hab zusätzlich einen 10kOhm zwischen inv.Ausgang und Vcc, an den Klemmen des Moduls.
Nur das mit dem Uhrenquarz versteh ich nicht, woher bekommt die Uhr dann ihren Tackt.

Gruß Siggi
 
Hi Siggi,

ja, Du kannst die DCF77 ganz deaktivieren. Einfach das "CONFIG DCF77" weglassen und den restlichen damit verbundenen Code deaktivieren oder rausschmeißen! Du darfst dann aber auch keine Uhr konfigurieren "CONFIG CLOCK". Bedeutet, alles wa mit Zeit zusammenhängt raus und dann ist der Timer1 wieder frei!

Du kannst Dir aber mal die LIB anschauen von der Thomas schreibt. Ich glaube da kann man den Timer einstellen der verwendet werden soll. BASCOM unterstützt leider für DCF77 aktuell nur denTimer1. Ich meine, man könnte auch die BASCOM-LIB umbauen so dass ein anderer Timer verwendet wird. Aber die andere LIB soll ja eh besser sein und dann könnte man gleich die verwenden.

Grüße,
Markus
 
....ich würde gerne den Timer1 für pwm zutzen...

Hallo Siggi!

Muss es denn unbedingt der Timer1 für das PWM-Signal sein?

Wie Markus schon geschrieben hat musst du ziemlich radikale Maßnahmen ergreifen, um den Timer1 wieder frei zu bekommen. ;)

Die meisten AVRs können z.B. auch den Timer0 als PWM nutzen.
Wäre das dann nicht eine Alternative?

Welche Hardware benutzt du denn eigentlich..... oder habe ich da etwas überlesen?


Schöne Grüße,
Cassio
 
Hallo,

das war auch so ein Grund, warum ich die externe LIB genommen haben. Dis BASCOM-eigene DCF belegt wehement den Timer1. Und ich brauchte die entsprechenden Ausgänge für eine PWM am Timer. Bei der externen LIB kannst Du jeden Timer verwenden, auch solche, bei denen keine Anschlüsse nach außen geführt sind.

Thema Uhrenquarz. An die TOSC-PINs der entsprechenden Atmels kann man einen 32768Hz-Quarz anschließen, der den Timer2 dann die entsprechenden Sekundenimpulse gibt. Das läuft auch ohne Microprozessor-Quarz sehr genau. Vorsicht, bei den "höheren" Atmels sind 2 kleine Kondensatoren zusätzlich erforderlich, um die entsprechende kapazitive Last für den Quarz herzustellen.

Thomas
 
Hallo nochmal,
da ich die DS1307 verwende, spielt die Genauigkeit der Uhr eigentlich keine Rolle.
Wenn ich ehrlich bin, spielen 5min/ Tag keine Rolle. Es ging mir eher, um das Stellen der Uhr und da ich aus einem anderen Projekt schon mal eine DCF zum Laufen bekommen hab, hat sich das angeboten.

Ich hab noch keine LIB bearbeitet, muss ich mir erst mal ansehen.
Wie gesagt, ist mein erstes mal mit einem Atmega, es fällt mir alles noch etwas schwer.

Gruß Siggi
 
Die hohe Auflösung des Timer1 währe schon schön.

Hallo Siggi!

Sicher, in bestimmten Situationen ist die feinere Abstufung vielleicht besser....
Kommt aber immer auf den Verwendungszweck an. ;)

Es wäre daher interessant zu wissen, was du genau vor hast und was du gern realisieren möchtest.
Vielleicht musst du ja gar nicht den Timer1 benutzen?

Beschreib doch mal kurz, an was du gerade arbeitest......


Überlege mit gerade, ob ich nicht sogar den 128 USB, aus dem AVR Shop bestelle. Damit könnte ich das Problem umgehen.

Hui, das ist aber ein gewaltiger Sprung.... vom Mega 8 zum Mega 128!

Mit dem Mega 128 stehen dir programmtechnisch fast alle Welten offen.... und das nicht nur wegen der Timer. ;)

Bin schon ganz auf dein Projekt gespannt!

Schöne Grüße,
Cassio
 
Sicher, in bestimmten Situationen ist die feinere Abstufung vielleicht besser....
Kommt aber immer auf den Verwendungszweck an. ;)

Ja stimmt, ich könnte auch einen andern Timer benutzen.
PWM1 soll eine Halogenlampe dimmen, Sonnenauf.- und Sonnenuntergang (jeweils 40-50min). Da die Lampen auch als Heizung dienen, wird diese, wenn notwendig etwas zurück geregelt. LM75 als Fühler, regelt auch die Heizung für die Nacht.

PWM2 ist eigentlich nur Spielerei: (Mond aus 6 blauen LED's wenn man schon mal dabei ist.)

Nebenbei, zwei weitere Ausgänge sind ungeregelt: Tageslicht und UV-Lampe.
Ein 16x2 LCD für die Anzeige und 3 Taster für die Bedinung.

Wenn dies alles mal funktioniert, soll auch eine regelung für die Luftfeuchtigkeit dazukommen.
Sorry: das ganze für das Terrarium meiner Tochter.
Hui, das ist aber ein gewaltiger Sprung.... vom Mega 8 zum Mega 128!

MEGA128-USB Mikrocontroller-Modul
Der Preis ist o.k.(28€) bringt alles mit, was ich zum Testen grauch.
Und wer weiss, was als nächstes kommt. ;-)

Gruß Siggi
 
Hallo Siggi !

Ja, NUN können wir uns auch etwas darunter vorstellen, was du gern realisieren möchtest und wofür du die PWMs benötigst. :)

Wenn ich deine Steuerung richtig verstanden habe, dann sind die Halogenlampen..... die auch die Heizung darstellen... 230V Halogenlampen, oder Niederspannungsleuchtmittel?
Wenn es 230V Leuchtmittel sind, dann kannst du dir auch mal mein Thema:
Kleiner Norkadosendimmer ansehen.


Theoretisch würde das auch alles mit einem einzelnen 256bit Timer zu realisieren sein, aber mit dem 128er Modul hier aus dem Shop kannst du dich natürlich voll austoben. ;)

Dann mal los....
Wir sind schon gespannt auf deine weitere Entwicklung... gerade mit dem 128er-Modul.
Vielleicht eröffnest du ja einen eigenen Thread im Bereich "AVR-Projekte".
Denke schon, dass es mehrere Leute interessieren würde.

Schöne Grüße,
Cassio
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)