Forum: Mikrocontroller und Digitale Elektronik Time$ läuft nicht weiter


von Sungod S. (Firma: google) (sungod) Flattr this


Lesenswert?

Hallo,
Habe folgendes Problem...
in meinem BASCOM wird Time$ nicht aktualisiert...

so fängt es an:
Hallo,

Habe wiedermal eine Frage, hab mir schon die Finger wund gesucht,

Bin bei einem Multifunktionsdisplay bei, 10cm hohe 6x 7-Segment-LED 
Displays werden mit einem MAX7219 gemultiplext.
Ein z.z. Mega8 mit int. Takt (später mit Quarz)) empfängt von einem 
BME280 die Temperatur, Luftdruck und Luftfeuchtigkeit, von einem DS18B20 
eine zweite Temperatur und vom DCF-77-Modul die Uhrzeit.
Jeder Wert (Temperatur1, Luftdruck, Luftfeuchte, Temperatur, Uhrzeit) 
wird alle 2 Sekunden angezeigt.

Soweit läuft alles perfekt, solange ein DCF-77 Signal da ist.

So nun zu meinem Problem.
Wenn das DCF Signal mal schlecht wird, wird die Zeit nicht in "Time$" 
übergeben. nun läuft aber "Time$" nicht von alleine weiter.Is ja blöd 
bei einer Uhr....

Ich benutze:
1
Config Dcf77 = Pinb.2 , Timer = 1 , Timer1sec = 1 , Debug = 1 , Update = 0 , Inverted = 1 , Gosub = Sectic


Also ich möchte einfach nur das die Interne variable "Time$" weiter 
läuft.

es geht nur wenn ich in der Do Loop Schleife
1
print Time$
oder
1
Time$ = Time$
 schreibe


Danke schonmal,
Grüße

: Bearbeitet durch User
von Sungod S. (Firma: google) (sungod) Flattr this


Lesenswert?

hier mal der code
1
'************************************************* ***** Konfiguration Controller
2
$regfile = "m8def.DAT" 'ATMega8
3
$crystal = 8000000 '8MHz
4
'************************************************* ******************************
5
6
'Algemeine Konfiguration ************************************************** *****
7
Dim I As Byte
8
Declare Sub Zeichen
9
Dim Wert_string As String * 12 '6 Zeichen und 6 Punkte
10
Dim Wert_laenge_byte As Byte 'Byte
11
12
'************************************************* ******************************
13
14
'Konfiguration MAX7219 ************************************************** *******
15
Dim Led_digit As Byte 'MAX9219
16
Dim Led_data As Byte 'MAX9219
17
Dim Ein_zeichen As String * 5
18
Dim Bin_led_data As Byte
19
Dim Displaystelle(6) As String * 1 'Array für Displaystellen
20
Config Portc = Output 'Port C als Ausgang
21
Led_din Alias Portc.5 'DIN Pin von MAX7219
22
Led_clk Alias Portc.4 'CLK Pin von MAX7219
23
Led_load Alias Portc.3 'LOAD Pin von MAX7219
24
'************************************************* ******************************
25
26
'Konfiguration DCF77 ************************************************** *********
27
Config Dcf77 = Pinb.2 , Timer = 1 , Timer1sec = 1 , Debug = 1 , Update = 0 , Inverted = 1 , Gosub = Sectic
28
' Config Date = Dmy , Separator = .
29
' Date$ = "00.00:00"
30
Time$ = "00:00:00" 'Startzeit setzen
31
Enable Interrupts
32
'************************************************* ******************************
33
34
'Programmvorbereitung ************************************************** ********
35
Gosub Init_max7219 'Init des MAX7219
36
37
' komplettes LED-Array leeren
38
For I = 1 To 6 'Anzahl der Stellen
39
Led_digit = I
40
Led_data = 0
41
Gosub Led_write 'Schickt Daten von LED_digit und LED_data an MAX7219
42
Next I
43
44
Gosub Clear_display 'Display löschen
45
'************************************************* ******************************
46
47
'Programmstart ************************************************** ***************
48
'Time$ = "12:45:59"
49
Do 'Hauptschleife
50
51
Gosub Datum_uhrzeit
52
Loop
53
54
'************************************************* ******************************
55
56
Datum_uhrzeit:
57
58
' Time$ = Time(dcf_sec)
59
' Ein_zeichen = " " : Call Zeichen : Led_digit = 1 : Led_data = Bin_led_data : Gosub Led_write 'Led_Data muss als Byte sein dann geht auch nicht decode
60
' Ein_zeichen = Mid(time$ , 1 , 1) : Call Zeichen : Led_digit = 2 : Led_data = Bin_led_data : Gosub Led_write
61
' Ein_zeichen = Mid(time$ , 2 , 1) : Call Zeichen : Led_digit = 3 : Led_data = Bin_led_data : Led_data.7 = 1 : Gosub Led_write
62
' Ein_zeichen = Mid(time$ , 4 , 1) : Call Zeichen : Led_digit = 4 : Led_data = Bin_led_data : Led_data.7 = 1 : Gosub Led_write
63
' Ein_zeichen = Mid(time$ , 5 , 1) : Call Zeichen : Led_digit = 5 : Led_data = Bin_led_data : Gosub Led_write
64
' Ein_zeichen = " " : Call Zeichen : Led_digit = 6 : Led_data = Bin_led_data : Gosub Led_write
65
66
67
' 12:30:59
68
' ||||||||
69
' 12345678
70
Ein_zeichen = Mid(time$ , 1 , 1) : Call Zeichen : Led_digit = 1 : Led_data = Bin_led_data : Gosub Led_write 'Led_Data muss als Byte sein dann geht auch nicht decode
71
Ein_zeichen = Mid(time$ , 2 , 1) : Call Zeichen : Led_digit = 2 : Led_data = Bin_led_data : Gosub Led_write
72
Ein_zeichen = Mid(time$ , 4 , 1) : Call Zeichen : Led_digit = 3 : Led_data = Bin_led_data : Gosub Led_write
73
Ein_zeichen = Mid(time$ , 5 , 1) : Call Zeichen : Led_digit = 4 : Led_data = Bin_led_data : Gosub Led_write
74
Ein_zeichen = Mid(time$ , 7 , 1) : Call Zeichen : Led_digit = 5 : Led_data = Bin_led_data : Gosub Led_write
75
Ein_zeichen = Mid(time$ , 8 , 1) : Call Zeichen : Led_digit = 6 : Led_data = Bin_led_data : Gosub Led_write
76
Return
77
'************************************************* ******************************
78
79
'Initialisieren des MAX7219 ************************************************** **
80
Init_max7219:
81
Led_digit = &H0C : Led_data = 0 ' Shutdown On
82
Gosub Led_write
83
'Dezimal
84
' Led_digit = 9 : Led_data = &B1111_1111 ' Decode "B" für alle Digits
85
'Binär
86
Led_digit = 9 : Led_data = &B0000_0000 ' kein Decode "B" für alle Digits
87
Gosub Led_write
88
Led_digit = &H0A : Led_data = &H0F ' Helligkeit voll (0123456789ABCDEF)
89
Gosub Led_write
90
Led_digit = &H0B : Led_data = 5 ' Anzahl Stellen 0-7
91
Gosub Led_write
92
Led_digit = &H0F : Led_data = 1 ' Test On
93
Gosub Led_write
94
Wait 1
95
Led_digit = &H0F : Led_data = 0 ' Test Off
96
Gosub Led_write
97
Led_digit = &H0C : Led_data = 1 ' Shutdown Off
98
Gosub Led_write
99
Return
100
'************************************************* ******************************
101
102
'Display leeren ************************************************** **************
103
Clear_display:
104
Ein_zeichen = " " : Call Zeichen : Led_digit = 1 : Led_data = Bin_led_data : Gosub Led_write 'Led_Data muss als Byte sein dann geht auch nicht decode
105
Ein_zeichen = " " : Call Zeichen : Led_digit = 2 : Led_data = Bin_led_data : Gosub Led_write
106
Ein_zeichen = " " : Call Zeichen : Led_digit = 3 : Led_data = Bin_led_data : Gosub Led_write
107
Ein_zeichen = " " : Call Zeichen : Led_digit = 4 : Led_data = Bin_led_data : Gosub Led_write
108
Ein_zeichen = " " : Call Zeichen : Led_digit = 5 : Led_data = Bin_led_data : Gosub Led_write
109
Ein_zeichen = " " : Call Zeichen : Led_digit = 6 : Led_data = Bin_led_data : Gosub Led_write
110
Return
111
'************************************************* ******************************
112
113
114
'Daten zum MAX7219 senden ************************************************** ****
115
Led_write:
116
Reset Led_din
117
Reset Led_clk
118
Reset Led_load
119
Shiftout Led_din , Led_clk , Led_digit , 1
120
Shiftout Led_din , Led_clk , Led_data , 1
121
Set Led_load
122
Print I 'gibt Zahl an Terminal aus
123
Return
124
125
'************************************************* ******************************
126
127
End
128
129
Zeichen:
130
If Ein_zeichen = "0" Then Bin_led_data = &B01111110 '0
131
If Ein_zeichen = "1" Then Bin_led_data = &B00110000 '1
132
If Ein_zeichen = "2" Then Bin_led_data = &B01101101 '2
133
If Ein_zeichen = "3" Then Bin_led_data = &B01111001 '3
134
If Ein_zeichen = "4" Then Bin_led_data = &B00110011 '4
135
If Ein_zeichen = "5" Then Bin_led_data = &B01011011 '5
136
If Ein_zeichen = "6" Then Bin_led_data = &B01011111 '6
137
If Ein_zeichen = "7" Then Bin_led_data = &B01110000 '7
138
If Ein_zeichen = "8" Then Bin_led_data = &B01111111 '8
139
If Ein_zeichen = "9" Then Bin_led_data = &B01111011 '9
140
141
If Ein_zeichen = "A" Then Bin_led_data = &B01110111 'A
142
If Ein_zeichen = "C" Then Bin_led_data = &B01001110 'C
143
If Ein_zeichen = "E" Then Bin_led_data = &B01001111 'E
144
If Ein_zeichen = "F" Then Bin_led_data = &B01000111 'F
145
If Ein_zeichen = "H" Then Bin_led_data = &B00110111 'H
146
If Ein_zeichen = "L" Then Bin_led_data = &B00001110 'L
147
If Ein_zeichen = "O" Then Bin_led_data = &B01111110 'O
148
If Ein_zeichen = "P" Then Bin_led_data = &B01100111 'P
149
If Ein_zeichen = "S" Then Bin_led_data = &B01011011 'S
150
If Ein_zeichen = "Y" Then Bin_led_data = &B00111011 'Y
151
152
If Ein_zeichen = "h" Then Bin_led_data = &B00010111 'h
153
If Ein_zeichen = "r" Then Bin_led_data = &B00000101 'r
154
If Ein_zeichen = "t" Then Bin_led_data = &B00001111 't
155
156
If Ein_zeichen = " " Then Bin_led_data = &B00000000 'leer
157
If Ein_zeichen = "" Then Bin_led_data = &B00000000 'leer
158
If Ein_zeichen = "-" Then Bin_led_data = &B00000001 '-
159
If Ein_zeichen = "°" Then Bin_led_data = &B01100011 '°
160
If Ein_zeichen = "," Then Bin_led_data = &B10000000 ',
161
Return
162
163
Sectic:
164
165
Return

von Sungod S. (Firma: google) (sungod) Flattr this


Lesenswert?

denke das Time$ erst nach erneutem "ansprechen" z.b. mit
1
print Time$
oder
1
Time$ = Time$

aktualisiert wird...

von günni (Gast)


Lesenswert?

Aus der Bascom Hilfe:

The TIME$ variable is used in combination with the CONFIG CLOCK and 
CONFIG DATE directive.

See CONFIG CLOCK statement for further information. In this interrupt 
routine the _Sec, _Min and _Hour variables are updated. The time format 
is 24 hours format.

Bei dir sehe ich kein Config Clock und das Config Date ist 
auskommentiert.

von Sungod S. (Firma: google) (sungod) Flattr this


Lesenswert?

auch mit config Date$ geht es nicht
config DCF77 erstellt automatisch die clock

von Sungod S. (Firma: google) (sungod) Flattr this


Lesenswert?

also ich habe es jetzt folgendermaßen gelöst...

config DCF77 .........
Dim Uhrzeit as String * 8
...
...
...

Do
Uhrzeit = Time$
...
...
Loop

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.