www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DCF-Uhr mit Pollin DCF-Modul in Bascom


Autor: Wigbert Picht (wigbert) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ferienzeit = Bastelzeit

Anbei mal meine Version einer einfachen Uhr.

Die Ausgabe erfolgt über Uart auf ein Nokia Miniterminal.
Beitrag "Minniterminal mit Nokia 3310 LCD und 4x4 Tasten"
Genutzt wird auch der 3,3V Regler für die Versorgung des
mega8(L) und des Empfangsmoduls (Gesamtstrom 11mA)
Ich habe festgestellt das bei 5V das Test-Empfangsmodul nach einer
Zeit aussetzt.
Pon wird 250ms auf Low gehalten.
Die Softuhr zählt bei Empfangsstörungen weiter.
Im Display blinken die Strings "--" bei richtiger Ausrichtung
der Antenne.
Der Controller ist mit 30% ausgelastet und kann mit Stunden-Beep
usw. erweitert werden

Alles in Allem ein Wochenendprojekt und mit einem Pollin-Display
unter 10 Euro machbar.

Wigbert

Autor: Wigbert Picht (wigbert) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und der Bas-Code

Wigbert

Autor: Wigbert Picht (wigbert) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Pon wird natürlich beim Start auf H gesetzt und nach 250ms auf 0
(fallende Flanke)

Wigbert

Autor: Olaf Seger (olafseger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich will deine uhr nachbauen
kannst du mir den bas-cod
in einen hex code kompilieren
(für den PIC16F628A und atmega8l)

Autor: Joachim B. (jar)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Olaf S. schrieb:
> ich will deine uhr nachbauen
> kannst du mir den bas-cod
> in einen hex code kompilieren
> (für den PIC16F628A und atmega8l)

Achtung, es hat mich 5 zerschossene Pollinmodule gekostet als ich hier 
lesen durfte das die neueren nicht mehr 5V können obwohl das alte 
Datenblatt beigelegt war!
Pollin schickte aber Ersatz mit richtigen Datenblätter!

Autor: Marco H. (damarco)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die gehen aber auch bei 3.3V einfach kaputt und sind sehr empfindlich 
gegenüber Störungen. Das Reichelt Modul ist um einiges teurer aber 
deutlich besser.

: Bearbeitet durch User
Autor: Olaf Seger (olafseger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zerschossene Pollinmodule gekostet
ich habe das modul nur mit 3 volt betrieben
gibt das modul auch bei Ebay

tut mir einer ein gefachlen
und macht mir einer den cod fertig !!
(für PIC16F628a und atmega8l)

Autor: Mumpf (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Mensch Olaf,

was brauchst du Gefachlen?
Nimm Liddl-Wecker, geht mit 1,5 Wollt, mit ohne cod usw...

Autor: Olaf Seger (olafseger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum solte ich einen kaufen ?
ich habe ja alles für die uhr
hängt nur an der software
bin echer der avr studio 4.18

Autor: grumpf (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Olaf S. schrieb:
> tut mir einer ein gefachlen

Hat anscheinend kein Bascomler Bock für einen echer der avr studio 4.18 
einen gefachlen zu machen.

Autor: Stefan Us (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich betreibe ein DCF01 Modul von Reichelt seit drei Wochen mit 3,3V ohne 
Probleme.

: Bearbeitet durch User
Autor: Stefan Us (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, ich wollte Pollin schreiben (nicht Reichelt).

Autor: Olaf Seger (olafseger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
'*********************************************************************** 
********
'* 
------------------------------------------------------------------------ 
---  *
'*                       DCF-Uhr von Pollin 
*
'* 
------------------------------------------------------------------------ 
---  *
'*********************************************************************** 
********

'Dies ist ein kleines Testprogramm zum Ausprobieren des DCF77-Empfängers
'von Pollin
'Das DCF-Modul wird mit 3,3V über dem Miniterminal versorgt,
'optimale Antennenausrichtung wenn Portd.5 blinkt bzw. die
'"--" Zeichen im Display blinken



'Die $Include Zeichenausgabe_3310.bas
'im selben Verzeichnis kopieren




'Von Wigbert Picht
'Elektro-Picht@gmx.de
'Vers.19.07.09

'Ausgabe über:Nokia 3310-Minitermial über RS232 Schnittstelle
'mit Positionszeiger
'mit erstellen der Prüfsumme
'nach: Steffen Taubmann
'stta@gmx.de


'!!!Diese Software ist nur für den privaten Gebrauch bestimmt!!!
'  !!!Komerzielle Anwendungen bedürfen meiner Zustimmung!!!

'----------------------------------------------------------------------- 
--------

$regfile = "m8def.dat"                                      'mein AVR, 
ein L Typ
$crystal = 3686400                                          'Quarz wegen 
Softuhr Genauigkeit u. Baudratenfehler
$baud = 9600 
'Baudeinstellung für mein Miniterminal


$hwstack = 128
$swstack = 128
$framesize = 128

'----------------------------------------------------------------------- 
--------
'Miniterminal-Anzeige konfigurieren (6 Zeilen / 14 Zeichen )
'----------------------------------------------------------------------- 
--------

Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 1 , 
Databits = 8 , Clockpol = 0       'nicht veränderbar

Dim Text As String * 14                                     '14 Zeichen 
max in einer Zeile
Declare Sub Position(byval X As Byte , Byval Y As Byte) 
'Positionszeiger
Declare Sub Nprint                                          'Ausgabe



'----------------------------------------------------------------------- 
--------
'DCF77 von Pollin konfigurieren
'----------------------------------------------------------------------- 
--------
'            __________
'           I            I
'           I          O I VCC
'           I            I
'           I          O I GND
'           I            I
'           I          O I Pinb.1(Dat)
'           I            I
'           I          O I Pinb.2(Pon)
'           I____________I
'

'Config Dcf77 = Pind.2 , Debug = 1 , Inverted = 0 , Check = 2 , Update = 
0 , Updatetime = 30 , Switchpower = 0 , Secondticks = 50 , Timer1sec = 1 
, Powerlevel = 1 , Timer = 1

Config Dcf77 = Pinb.1 , Timer = 1 , Debug = 1 , Inverted = 0 , Timer1sec 
= 1 , Check = 1

Config Pind.5 = Output                                      'LED
Config Pinb.2 = Output                                      'Pon

'----------------------------------------------------------------------- 
--------
'was so immer gebraucht wird
'----------------------------------------------------------------------- 
--------
Portb.1 = 0                                                 '**** Pullup 
abschalten Wichtig !!!!*****
Portb.2 = 1                                                 'Für Pon 
Aktiv

Waitms 200                                                  'Zeit für 
High von Pon(250ms)
Printbin &H02 ; &H43 ; &H41 ;                               'Display 
löschen
Waitms 50

Portb.2 = 0                                                 'Für Pon low

Dim I As Integer
Dim Sec_old As Byte , Dcfsec_old As Byte
Dim Wochentag As String * 12 , Wochentag_old As String * 12
Dim Zeit As String * 10
Dim Datum As String * 10 , Datum_old As String * 10

Config Date = Dmy , Separator = .

Enable Interrupts

Sec_old = 99 : Dcfsec_old = 99                              ': 
DCF_Debug_Timer = 0


'----------------------------------------------------------------------- 
--------
'Start mit "Bla Bla Bla"
'----------------------------------------------------------------------- 
--------
Text = "DCF-Uhr"
Waitms 50
Position 4 , 0                                              'X Sind Die 
Zeichen(0 -13), Y Entsprechend Die Zeilen(0 -5)
Call Nprint                                                 'zur Sub und 
String mit Prüfsumme ausgeben
'Print "Test DCF-Uhr"                                        'Debugg
Wait 1

'----------------------------------------------------------------------- 
--------
'Hier geht es endlich los:
'----------------------------------------------------------------------- 
--------

Do

  For I = 1 To 78                                           'vorher 78
     Waitms 10
     If Sec_old <> _sec Then
        Exit For
     End If
     If Dcfsec_old <> Dcf_sec Then
        Exit For
     End If
  Next

 Waitms 120
  Sec_old = _sec
  If Dcf_sec <> Dcfsec_old Then Gosub Led

  Dcfsec_old = Dcf_sec

  Zeit = Time$
  Text = Zeit                                               'Was die 
Stunde geschlagen hat
  Waitms 50
  Position 3 , 2                                            'X Sind Die 
Zeichen(0 -13), Y Entsprechend Die Zeilen(0 -5)
  Call Nprint                                               'zur Sub und 
String mit Prüfsumme ausgeben

  Datum = Date$                                             'Datum nur 
ausgeben wenn neues Datum empfangen wird
If Datum <> Datum_old Then
If _sec = 15 Then
  Text = Datum
  Waitms 50
  Position 3 , 3                                            'X Sind Die 
Zeichen(0 -13), Y Entsprechend Die Zeilen(0 -5)
  Call Nprint                                               'zur Sub und 
String mit Prüfsumme ausgeben
  Datum_old = Datum
End If
End If

Gosub Wochenauswahl
If Wochentag <> Wochentag_old Then                          'Wochentag 
nur neu ausgeben, wenn neuer Tag beginnt
If _sec = 30 Then
  Text = Wochentag
  Waitms 50
  Position 2 , 5                                            'X Sind Die 
Zeichen(0 -13), Y Entsprechend Die Zeilen(0 -5)
  Call Nprint                                               'zur Sub und 
String mit Prüfsumme ausgeben
Wochentag_old = Wochentag                                   'welcher Tag 
ist denn heute
End If
End If


'Debugger:

'Print Time$ ; " " ; Date$ ; " " ; Time(dcf_sec) ; " " ; Date(dcf_day) ; 
" " ; Bin(dcf_status) ; " " ; Bin(dcf_bits) ; " " ; Bdcf_impuls ; " " ; 
Bdcf_pause

Loop

'----------------------------------------------------------------------- 
--------
'  Sub's
'----------------------------------------------------------------------- 
--------



Led:
Toggle Portd.5                                              'Ausgabe 
Sekundentakt für Ausrichtung der DCF-Antenne
If Portd.5 = 1 Then
   Text = "--"                                              'Einfach 2 
String's "-" mit toggeln lassen
  Else
   Text = "  "
  End If
  Position 6 , 1                                            'X Sind Die 
Zeichen(0 -13), Y Entsprechend Die Zeilen(0 -5)
  Call Nprint                                               'zur Sub und 
String mit Prüfsumme ausgeben
Return

Wochenauswahl:

   Select Case Dayofweek()                                  'Wochentag 
Auswahl

     Case 0 : Wochentag = "  Montag  "
     Case 1 : Wochentag = " Dienstag "
     Case 2 : Wochentag = " Mittwoch "
     Case 3 : Wochentag = "Donnerstag"
     Case 4 : Wochentag = " Freitag  "
     Case 5 : Wochentag = " Samstag  "
     Case 6 : Wochentag = " Sonntag  "

   End Select

Return


'----------------------------------------------------------------------- 
--------

$include Zeichenausgabe_3310.bas                            'Berechnung 
der Zeichenkette fürs Miniterminal

End


'----------------------------------------------------------------------- 
--------

ist das  richtig ???
(ist mein erster versuch mit bascom)

Autor: Stefan Us (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ist das  richtig ???

Soll das ein Scherz sein?

Was glaubst du, wie viele Leute imstande sind, das ganze Programm 
anhand einer Sichtkontrolle zu prüfen?

Probiere es aus, dann weißt du, ob es in Ordnung ist.

Autor: Olaf Seger (olafseger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kompilieren  erfolgreich 0 errors

Soll das ein Scherz sein?
nein
ich bin anfänger mit Bascom

jetzt brauche ich nur noch
die Fuse-Bits für den atmega8l

Autor: Marc Vesely (Firma: Vescomp) (logarithmus)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Olaf S. schrieb:
> jetzt brauche ich nur noch
> die Fuse-Bits für den atmega8l

 Da musst du aber warten bis Microchip/ATMEL diesen rausbringt.

Autor: John (Gast)
Datum:
Angehängte Dateien:
  • preview image for 8L.png
    8L.png
    30,6 KB, 174 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass du vor einem extrem niedrig auflösenden Monitor 
sitzt, und es dir deshalb schwer fällt ein "kleines L" von einer "Eins" 
zu unterscheiden?
Es gab hier irgendwo auch schon mal einen Thread, dass diese beiden 
Zeichen nicht gut zu unterscheiden sind.
(Anhang: 1:1 Bildausschnitt von iPad Pro)

Autor: Marc Vesely (Firma: Vescomp) (logarithmus)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
John schrieb:
> Kann es sein, dass du vor einem extrem niedrig auflösenden Monitor
> sitzt, und es dir deshalb schwer fällt ein "kleines L" von einer "Eins"
> zu unterscheiden?

 Nein, momentan 25 inch auf 1920x1080.
 Aber MEGA8l gibt es immer noch nicht (vielleicht gerade deswegen).
 ATmega8L schon...

: Bearbeitet durch User
Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marc V. schrieb:
> Aber MEGA8l gibt es immer noch nicht

Stört dich jetzt das kleine "l" oder das fehlende "AT" oder beides?

Autor: zweifelnd (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Marc V. schrieb:
> Aber MEGA8l gibt es immer noch nicht (vielleicht gerade deswegen).

Steht da ja auch nicht, da steht atmega8l ... warum gibst Du nicht 
einfach mal einen Irrtum zu?


Marc V. schrieb:
> Olaf S. schrieb:
>> jetzt brauche ich nur noch
>> die Fuse-Bits für den atmega8l
>
>  Da musst du aber warten bis Microchip/ATMEL diesen rausbringt.

Autor: Marc Vesely (Firma: Vescomp) (logarithmus)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
John schrieb:
> Stört dich jetzt das kleine "l" oder das fehlende "AT" oder beides?

 Das kleine l.

 12l45l71
 12L45L71

Autor: Marc Vesely (Firma: Vescomp) (logarithmus)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
zweifelnd schrieb:
> Steht da ja auch nicht, da steht atmega8l ... warum gibst Du nicht
> einfach mal einen Irrtum zu?

 Muss das sein ?

 Ob mega oder atmega oder ATmega ist sch...egal.
 Es ist aber nicht egal ob mega8l oder mega8L.

Autor: zweifelnd (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
L oder l ist genauso egal wie at oder AT bzw. MEGA oder mega ... jeder 
weiß, was gemeint ist, weil es keine Verwechslungsmöglichkeit gibt.

Oder hab ich was verpasst?

Autor: Olaf Seger (olafseger)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ich meine die fuses von dem atmega8L/mage8l/uzw

Autor: Stefan Us (stefanus)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
> jetzt brauche ich nur noch
> die Fuse-Bits für den atmega8l

Die Fuse Bits befinden sich im Mikrocontroller, und du kannst sie mit 
dem ISP-Tool deiner Wahl einstellen.

Wie lautet deine Frage dazu?

Autor: Olaf Seger (olafseger)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
wie sind die richtigen einstellungen für den atmega8L ???
HIGH
LOW
der atmega8L ist ja auf externen quarz umgestellt

ich bin mir nicht sicher wie die Fuse Bits richtig umgestelt wird

Autor: Stefan Us (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hängt gemeinerweise von deinem Programm ab. Manche stellen eine 
aktivierte Fuse als HIGH dar, andere wiederum als LOW.

Am besten benutzt du einen "Online Fuse Calculator" und überträgst dann 
die davon erzeugten Hexadezimalzahlen in dein Flash Tool. Damit bist du 
auf der sicheren Seite.

http://www.engbedded.com/fusecalc/

Benutze die Einstellung "Ext RC. OSC" mit dem passenden Frequenzbereich 
und der höchsten Startup Time.

Alle anderen Settings lässt du an Besten auf den Vorgabewerten.

: Bearbeitet durch User
Autor: Olaf Seger (olafseger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was für ein programm auf den atmega8 kommt ist ja jetzt geklärt

aber was für ein programm kommt auf den
PIC16F628A drauf ??

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.