- LiFePO4 Speicher Test         
Ergebnis 1 bis 7 von 7

Thema: Probleme mit time$ and date$

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    10.08.2006
    Beiträge
    20

    Probleme mit time$ and date$

    Anzeige

    Praxistest und DIY Projekte
    Hallo, ich möchte auf dem Display Zeit und Datum anzeigen. Dies geschieht auch allerdings zählt die Uhrzeit nie weiter sondern verharrt auf dem am Anfang definierten Zeit. Hat einer eine Ahnung was ich falsch mache ?

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.03.2005
    Ort
    Schifferstadt
    Alter
    42
    Beiträge
    318
    Hi,

    probier mal die Zeitanzeige in deine Do...Loop schleife einzubauen. Und noch was: Du weißt schon, das Herr Küsters ein Copyright auf seine Routinen hat ? Du dürftest den Code nicht hier reinstellen.

    mfg Kay

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.03.2005
    Ort
    Schifferstadt
    Alter
    42
    Beiträge
    318
    nochwas:

    haste mal Start Timer1 probiert ?

    mfg Kay

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Time$-Ausgabe

    Hallo schmidtkoe,

    der Code von Küsters setzt voraus, dass ein Uhrenquarz 32768 Hz an TOSC1/2 des M128 angeschlossen ist.
    Wenn das bei dir nicht der Fall ist, braucht man eine "Softclock", die time$ und date$ aktualisiert.

    Gruß Dirk

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    17.09.2006
    Beiträge
    11
    Ich habe mir gerade mal deine Code angesehen da ich mir auch gerade eine Uhr in Bascom für einen Atmega8 schreibe. (Soll irgendwann mal eine Funkuhr werden)
    Du zählst die Variable _sec in deiner Timer Procedur ja gar nicht hoch. Wie soll da was weiterlaufen ?

    Isr_sekundentakt:
    Timer1 = 34285
    Zeitanzeige = Time$
    Datumanzeige = Date$
    Call Lcd_print(Time$, 2, 9, 0, Schwarz, Weiss)
    Call Lcd_print(Datumanzeige, 13, 9, 0, Schwarz, Weiss)
    Return
    Hab mal meine *.bas mit drangefügt funktioniert bei mir jedenfalls einwandfrei.

    gruß matlen
    Angehängte Dateien Angehängte Dateien

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Softclock für BASCOM

    Hallo matlen,

    eine "Softuhr" für Bascom könnte z.B. so aussehen.
    Hier zuerst der Programmcode (Ausschnitt mit den wesentlichen Definitionen!):

    Code:
    Config Date = Dmy , Separator = .                 'deutsches Datumsformat
    Config Clock = User                               'Softclock aktivieren
    
    Dim _dayofweek As Byte                            'Wochentag
    Dim Sclkhsec As Byte                              'Hundertstel Sekunde
    
    $lib "softclock.lib"                              'Softclock LIB
    $external Softclock_1                             'Softclock für 1Hz
    Declare Sub Softclock_1
    $external Softclock_40                            'Softclock für 40Hz
    Declare Sub Softclock_40
    $external Softclock_100                           'Softclock für 100Hz
    Declare Sub Softclock_100
    
    Config Timer2 = Timer , Prescale = 1024           'Timer 40Hz
    Const Startwert = 61                              'Für 8MHz
    Timer2 = Startwert
    On Timer2 Tim2_isr                                'Überlauf 40x/s
    Enable Interrupts
    Enable Timer2
    
    
    'Hier weitere Definitionen!
    
    
    'Hauptprogramm:
    Cls
    Cursor Off
    
    Date$ = "01.01.00"
    Time$ = "00:00:00"
    _dayofweek = 6                                    'Samstag (der 1.1.00)
    
    Sekunde = 0
    
    '****************** HAUPTPROGRAMMSCHLEIFE **********************************
    
    Do
      If Sekunde <> _sec Then
        Cls
        Call Showtime()
        Sekunde = _sec
      End If
    Loop
    
    End
    
    '************* ENDE HAUPTPROGRAMM ******************************************
    
    Sub Showtime()
    
      Locate 1 , 1                                    'Zeile 1:
      Lcd "    " ; Time$                              'Uhrzeit
    
      Locate 2 , 1                                    'Zeile 2:
      Lcd Lookupstr(_dayofweek , Wochentag) ; ". "    'Datum
      Lcd Date$
    
    End Sub
    '---------------------------------------------------------------------------
    
    Getdatetime:                                      'Nicht genutzt!
    Setdate:
    Settime:
    Return
    '---------------------- Interrupt Routine ----------------------------------
    
    Tim2_isr:
      Timer2 = Startwert
      Call Softclock_40                               'Softclock für 40Hz
    Return
    
    '---------------------- Daten für Wochentag --------------------------------
    Wochentag:
    Data "  " , "Mo" , "Di" , "Mi" , "Do" , "Fr" , "Sa" , "So"
    ... und hier die "softclock.lib":
    Code:
    copyright    = D. Ottensmeyer
    comment      = Bascom Softclock
    libversion   = 1.00
    date         = 07.10.2006
    
    [Softclock_1]
    .def Temp1    = r16
    .def Temp2    = r17
    ;BASCOM: Dim _dayofweek As Byte
    ;        Dim Sclkhsec As Byte
    
    Softclock_1:                  ;Aufruf 1x pro Sekunde
      rjmp Soft15
    
    [Softclock_40]
    Softclock_40:                 ;Aufruf 40x pro Sekunde
    $EXTERNAL Softclock_1
    
     *lds Temp1,{Sclkhsec}
      inc Temp1                   ;Hundertstel Sek erhöhen
      cpi Temp1,40                ;1000ms erreicht ?
      breq Soft10                 ;ja -> weiter
     *sts {Sclkhsec},Temp1
      ret                         ;sonst Ende
    
    [Softclock_100]
    Softclock_100:                ;Aufruf 100x pro Sekunde
    $EXTERNAL Softclock_1
    
     *lds Temp1,{Sclkhsec}
      inc Temp1                   ;Hundertstel Sek erhöhen
      cpi Temp1,100               ;1000ms erreicht ?
      breq Soft10                 ;ja -> weiter
     *sts {Sclkhsec},Temp1
      ret                         ;sonst Ende
    
    ;-------------------------------------------------------------------------------
    Soft10:
      clr Temp1                   ;Hundertstel Sek löschen
     *sts {Sclkhsec},Temp1
    Soft15:
     *lds Temp1,{_sec}
      inc Temp1                   ;Sekunde erhöhen
      cpi Temp1,60                ;60 Sekunden erreicht ?
      breq Soft20                 ;ja -> weiter
     *sts {_sec},Temp1
      ret
    Soft20:
      clr Temp1                   ;Sekunde löschen
     *sts {_sec},Temp1
     *lds Temp1,{_min}       
      inc Temp1                   ;Minute erhöhen
      cpi Temp1,60                ;60 Minuten erreicht ?
      breq Soft30                 ;ja -> weiter
     *sts {_min},Temp1
      ret
    Soft30:
      clr Temp1                   ;Minute löschen
     *sts {_min},Temp1
     *lds Temp1,{_hour}
      inc Temp1                   ;Stunde erhöhen
      cpi Temp1,24                ;24 Stunden erreicht ?
      breq Soft40                 ;ja -> weiter
     *sts {_hour},Temp1  
      ret
    Soft40:
      clr Temp1                   ;Stunde löschen
     *sts {_hour},Temp1
     *lds Temp1,{_dayofweek}
      inc Temp1                   ;Wochentag erhöhen
      cpi Temp1,8                 ;letzter Wochentag erreicht ?
      brne Soft50                 ;nein -> weiter
      ldi Temp1,1                 ;Wochentag auf "1" (Montag)
    Soft50:
     *sts {_dayofweek},Temp1
     *lds Temp1,{_day}            ;Tag holen
     *lds Temp2,{_month}          ;Monat holen
      ldi zl,low(Tagdaten*2)
      ldi zh,high(Tagdaten*2)     ;Anzahl Tage pro Monat holen
      add zl,Temp2                ;Zeiger auf aktuellen Monat
      lpm                         ;Anzahl Tage holen
      cp Temp1,r0                 ;Monatsende erreicht ?
      brne Soft90                 ;nein -> weiter
      ldi Temp1,1                 ;Tag auf 1
      cpi Temp2,12                ;Jahresende erreicht ?
      brne Soft100                ;nein -> weiter
     *lds Temp2,{_year}           ;Jahr holen
      inc Temp2                   ;Jahr erhöhen
      cpi Temp2,100               ;Jahr 100 erreicht ?
      brne Soft80                 ;nein -> Ende
      clr Temp2                   ;Jahr 00 setzen
    Soft80:
     *sts {_year},Temp2           ;speichern
      ldi Temp2,1                 ;Monat auf 1
      rjmp Soft110  
    Soft90:
      inc Temp1                   ;Tag erhöhen
      rjmp Soft110                 
    Soft100:
      inc Temp2                   ;Monat erhöhen
    Soft110:
     *sts {_day},Temp1            ;Datum speichern
     *sts {_month},Temp2    
      ret
    
    Tagdaten:
    .db 00, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31  
    [end]
    Viel Spaß!

    Dirk

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    10.08.2006
    Beiträge
    20

    Testen

    Hallo zusammen, besten Dank erst mal für Eure Tipps, werde es Ende der Woche (bin vorher nicht mehr da) mal ausprobieren und berichten. Das mit dem Code wußte ich nicht oder hatte es anders verstanden, dort stand ja drin das man den Codse weitergeben darf wenn man die ersten 5 Zeilen miteinbindet. Da ich da aber rechtlich keine Ahnung von habe ist er sicherheitshalber entfernt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests