www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RTC Minute getrennt lesen Bascom


Autor: Xash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich möchte mit Bascom eines DS1307 die Stunden, Minuten, Sekunden 
getrennt auslesen und diese mit einer Select Case Abfrage auswerten.
Leider geht das nicht so wie ich es gemacht habe

Hier der Select Case code und unten das Standartprogramm des DS1307 (Die 
Zeit kann ich ohne Probleme lesen und auf ein LCD schreiben, nur das 
Splitten bekomme ich nicht hin)
Select Case _hour
 Case 1 : Goto Eins
 Case 2 : Goto Zwei
 Case 3 : Goto Drei
 Case 4 : Goto Vier
 Case 5 : Goto Fuenf
 Case 6 : Goto Sechs
 Case 7 : Goto Sieben
 Case 8 : Goto Acht
 Case 9 : Goto Neun
End Select
Dim Weekday As Byte
Getdatetime:
  I2cstart
  I2cwbyte Ds1307w
  I2cwbyte 0
  I2cstart
  I2cwbyte Ds1307r
  I2crbyte _sec , Ack
  I2crbyte _min , Ack
  I2crbyte _hour , Ack
  I2crbyte Weekday , Ack
  I2crbyte _day , Ack
  I2crbyte _month , Ack
  I2crbyte _year , Nack
  I2cstop
  _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
  _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return

Setdate:
  _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
  I2cstart
  I2cwbyte Ds1307w
  I2cwbyte 4
  I2cwbyte _day
  I2cwbyte _month
  I2cwbyte _year
  I2cstop
Return

Settime:
  _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
  I2cstart
  I2cwbyte Ds1307w
  I2cwbyte 0
  I2cwbyte _sec
  I2cwbyte _min
  I2cwbyte _hour
  I2cstop
Return

End

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Xash schrieb:
> Die Zeit kann ich ohne Probleme lesen und auf ein LCD schreiben,
Gut so.
> nur das Splitten bekomme ich nicht hin
Welches Splitten denn?

Was ist denn genau dein Problem?
Aus dem Titel könnte man was raten:
>>> RTC Minute getrennt lesen Bascom
Aber die Minuten hast du ja schon:
> _min = Makedec(_min)
Also hast du offenbar ein anderes Problem...

Autor: Xash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie im Code oben möchte ich zu dem entsprechenden Unterprogramm 
springen, wenn die jeweilige Zahl in der Stunde, Minute oder Sekunde 
vorhanden ist.

Ich vermute mal, dass ich nicht die _hour, _min, _sec einfach so wie in 
meiner Select Case Abfrage abfragen kann.
Muss ich den Wert erst noch in einen anderen Datenty wandeln um ihn so 
abfragen zu können?

Autor: Xash (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
diese fehler spuckt er aus

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Xash schrieb:
> Wie im Code oben möchte ich zu dem entsprechenden Unterprogramm
> springen
Warum willst du da so hin- und herspringen?
Was passiert da in dem Unterprogramm?
Was machen diese Unterprogramme?
Ich vermute: alle fas das selbe...

BTW: Unterprogramme werden nicht angesprungen (mit GOTO) sondern 
aufgerufen (mit GOSUB)...

Bleibt noch die Frage
Lothar Miller schrieb:
> Was ist denn genau dein Problem?

EDIT:
Xash schrieb:
> diese fehler spuckt er aus
Mann! Blöde Salamitaktik!
Du hattest bisher noch niemals von solchen Fehlern was gesagt...
In dem von dir geposteten Code gibt es keine Zeile 242.
Wie soll man da helfen können?

EDIT2:
Texte müssen nicht als Bild angehängt werden. Die kann man kopieren und 
in den Text einfügen...

Autor: Xash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Den Fehlercode kann ich nicht kopieren.

Danke für die "Hilfe".
Ich frage hier jemanden vor Ort!


-closed-

Autor: Dieter B. (debe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Xash schrieb:
> Hallo
>
> Den Fehlercode kann ich nicht kopieren.
>


Hallo

Der fehlercode steht in der Datei *.err


Gruß debe

Autor: Xash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kommt denn sowas zustande:


[code]
Error : 222   Line :   209   Illegal character [expected (, got '' 
[_XMEGA]]  , in File : C:\temp\test\test.bas
Error : 222   Line :   209   Illegal character [expected (, got '=' 
[_XMEGA=0]]  , in File : C:\temp\test\test.bas
Error : 222   Line :   209   Illegal character [expected (, got '' 
[_XMEGA]]  , in File : C:\temp\test\test.bas
Error : 222   Line :   209   Illegal character [expected (, got '=' 
[_XMEGA=0]]  , in File : C:\temp\test\test.bas
Error : 238   Line :   209   Variable is not dimensioned as an array 
[_XMEGAREG(1)]  , in File : C:\temp\test\test.bas
Error : 263   Line :   209   Array index out of range [1]  , in File : 
C:\temp\test\test.bas
Error : 104   Line :   209   LoadReg error [_XMEGAREG(1)]  , in File : 
C:\temp\test\test.bas
Error : 5     Line :   209   No more space for BIT [_XMEGAREG(1)]  , in 
File : C:\temp\test\test.bas
Error : 5     Line :   209   No more space for BIT [_XMEGAREG(1)+1]  , 
in File : C:\temp\test\test.bas
Error : 5     Line :   209   No more space for BIT [_XMEGAREG(1)+2]  , 
in File : C:\temp\test\test.bas
Error : 320   Line :   209    [syntax error, token = '{']  , in File : 
C:\temp\test\test.bas
Error : 320   Line :   209    [syntax error, token = '{']  , in File : 
C:\temp\test\test.bas
Error : 320   Line :   209    [syntax error, token = '{']  , in File : 
C:\temp\test\test.bas

[\code]

Die Zeile 209 gibts gar nicht mehr in meinem Programm. Das Programm geht 
nur bis 208.


Das ist mein Programm

[code]
$regfile = "m16def.dat"
$crystal = 8000000
$baud = 9600


Config Porta = Output


Config Sda = Portc.1                                        ' I2C Bus 
konfigurieren
Config Scl = Portc.0
Const Ds1307w = &HD0                                        ' Addresse 
der Ds1307 Uhr
Const Ds1307r = &HD1

Config Clock = User                                         ' Interne 
Time/Date Routinen für Bascom konfigurieren
Config Date = Dmy , Separator = .

Time$ = "09:00:00"
Date$ = "24.02.11"


Dim _ta As Integer

_ta = 1

If _ta = 1 Then
   Porta = 0
   Waitus 250
   Porta = 0
   Waitus 250
   Porta = 0
   Waitus 250
   Porta = 255
   Waitus 250
   Porta = 0
   Waitus 250
   Porta = 0
   Waitus 250
Elseif _ta = 2 Then
   Porta = 159
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 241
   Waitus 250
   Porta = 0
   Waitus 250
Elseif _ta = 3 Then
   Porta = 255
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 129
   Waitus 250
   Porta = 0
   Waitus 250
Elseif _ta = 4 Then
   Porta = 240
   Waitus 250
   Porta = 16
   Waitus 250
   Porta = 16
   Waitus 250
   Porta = 63
   Waitus 250
   Porta = 16
   Waitus 250
   Porta = 0
   Waitus 250
Elseif _ta = 5 Then
   Porta = 241
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 159
   Waitus 250
   Porta = 0
   Waitus 250
Elseif _ta = 6 Then
   Porta = 255
   Waitus 250
   Porta = 137
   Waitus 250
   Porta = 137
   Waitus 250
   Porta = 137
   Waitus 250
   Porta = 143
   Waitus 250
   Porta = 0
   Waitus 250
Elseif _ta = 7 Then
   Porta = 128
   Waitus 250
   Porta = 128
   Waitus 250
   Porta = 128
   Waitus 250
   Porta = 128
   Waitus 250
   Porta = 255
   Waitus 250
   Porta = 0
   Waitus 250
Elseif _ta = 8 Then
   Porta = 255
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 145
   Waitus 250
   Porta = 255
   Waitus 250
   Porta = 0
   Waitus 250
Elseif _ta = 9 Then
   Porta = 241
   Waitus 250
   Porta = 241
   Waitus 250
   Porta = 241
   Waitus 250
   Porta = 241
   Waitus 250
   Porta = 241
   Waitus 250
   Porta = 255
   Waitus 250
   Porta = 0
   Waitus 250
End If



'   Punkt:
'   Porta = 0
'   Waitus 250
'   Porta = 1
'   Waitus 250
'   Porta = 0
'   Waitus 250


'   Doppelpunkt:
'   Porta = 0
'   Waitus 250
'   Porta = 36
'   Waitus 250
'   Porta = 0
'   Waitus 250


Dim Weekday As Byte
Getdatetime:
  I2cstart
  I2cwbyte Ds1307w
  I2cwbyte 0
  I2cstart
  I2cwbyte Ds1307r
  I2crbyte _sec , Ack
  I2crbyte _min , Ack
  I2crbyte _hour , Ack
  I2crbyte Weekday , Ack
  I2crbyte _day , Ack
  I2crbyte _month , Ack
  I2crbyte _year , Nack
  I2cstop
  _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
  _day = Makedec(_day) : _month = Makedec(_month) : _year = 
Makedec(_year)
Return

Setdate:
  _day = Makebcd(_day) : _month = Makebcd(_month) : _year = 
Makebcd(_year)
  I2cstart
  I2cwbyte Ds1307w
  I2cwbyte 4
  I2cwbyte _day
  I2cwbyte _month
  I2cwbyte _year
  I2cstop
Return

Settime:
  _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
  I2cstart
  I2cwbyte Ds1307w
  I2cwbyte 0
  I2cwbyte _sec
  I2cwbyte _min
  I2cwbyte _hour
  I2cstop
Return

End
[\code]

Autor: Xash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich das hier ausklammere, dann sind die Fehler weg:

[code]
'Time$ = "09:00:00"
'Date$ = "24.02.11"
[\code]

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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