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


von Wigbert P. (wigbert) Benutzerseite


Angehängte Dateien:

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

von Wigbert P. (wigbert) Benutzerseite


Angehängte Dateien:

Lesenswert?

Und der Bas-Code

Wigbert

von Wigbert P. (wigbert) Benutzerseite


Lesenswert?

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

Wigbert

von Olaf S. (olafseger)


Lesenswert?

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

von Joachim B. (jar)


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!

von Marco H. (damarco)


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
von Olaf S. (olafseger)


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)

von Mumpf (Gast)


Lesenswert?

Mensch Olaf,

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

von Olaf S. (olafseger)


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

von grumpf (Gast)


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.

von Stefan F. (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

Sorry, ich wollte Pollin schreiben (nicht Reichelt).

von Olaf S. (olafseger)


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)

von Stefan F. (Gast)


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.

von Olaf S. (olafseger)


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

von Marc V. (Firma: Vescomp) (logarithmus)


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.

von John (Gast)


Angehängte Dateien:

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)

von Marc V. (Firma: Vescomp) (logarithmus)


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
von John (Gast)


Lesenswert?

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

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

von zweifelnd (Gast)


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.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

John schrieb:
> Stört dich jetzt das kleine "l" oder das fehlende "AT" oder beides?

 Das kleine l.

 12l45l71
 12L45L71

von Marc V. (Firma: Vescomp) (logarithmus)


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.

von zweifelnd (Gast)


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?

von Olaf S. (olafseger)


Angehängte Dateien:

Lesenswert?

ich meine die fuses von dem atmega8L/mage8l/uzw

von Stefan F. (Gast)


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?

von Olaf S. (olafseger)


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

von Stefan F. (Gast)


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.

von Olaf S. (olafseger)


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 ??

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.