- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Wetterstation mit Uhr?!?

  1. #1
    zwanzischmark
    Gast

    Wetterstation mit Uhr?!?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    Ich habe mich dran gemacht an meiner Wetterstation weiterzuarbeiten und wollte eigentlich eine Uhr integrieren. Ich hab das Gefühl das das an der nicht Multitask-Fähigkeit eines M32 scheitert. Meine Wetterstation hat mitlerweile 10 Temp Sensoren (DS18B20) und der Uhrenbaustein ist ein PCF8583. Getrennt voneinander Laufen die Programme problemlos, aber zusammen läuft die Uhr nur solange bis das Programm anfängt die Sensoren auszulesen.

    Der Programmablauf sieht ca. so aus:

    -Uhr wird gestellt
    -10 Sensoren werden ausgelesen
    -Temps werden angezeigt, auf min/max Werte kontroliert und entsprechend auf dem Display ausgegeben
    -30sec Pause bis die Sensoren wieder abgefragt werden
    -ein 1sec Timer liest die Uhr aus und zeigt Sie an


    gibt es ne chance die Uhr (Sekundengenau) anzuzeigen oder soll ichs lieber Minutengenau machen und gucken ob das mehr erfolg bringt.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2004
    Alter
    40
    Beiträge
    255
    Hallo!

    Schaut eigentlich so aus, wie wenn das mit einem M32 (= ATmega32?) gut klappen sollte. Du musst nur immer alles der Reihenfolge nach ablaufen lassen. Selbst wenn er dann mal länger brauchen sollte um 10 Sensoren abzufragen, dann springt die Uhr eben zwei Sekunden weiter. Aber ich denke, dass das problemlos machbar sein sollte. 1 Sekunde ist verdammt viel Zeit - da kannst du massig Sachen machen.

    Wo genau liegt denn das Problem, wie hast du das programmiert (BASCOM, C, Hardware TWI, ...) und vielleicht kannst du das Programm online stellen.

    Ich denke, dass wir das schon hinkriegen.

    Viele Grüße
    Flite

  3. #3
    zwanzischmark
    Gast
    Hallo,

    das eine Sekunde lang ist stimmt sicher, aber so wie ich dich verstehe meinst du das ich z.B. zwischen zwei Sensoren immer die Zeit auslesen soll. Das funktioniert mit sicherheit, aber ist halt nicht sonderlich schön, weil die Zeit dann anfängt zu springen wenn z.b. in einer Sekunde 2mal ausgelesen wird und dann erst wieder 2sec später oder so.

    Meine Frage war genauer gesagt ob es mit Timer Möglich ist. Dann wird ja egal was das Programm grade macht in die Timerroutine gesprungen und das klappt zusammen irgendwie nicht. Was mich wundert das es beim auslesen der Sensoren nicht wirklich Probleme gibt, aber die Zeit springt auf ??:??:?? sobald die Sensoren ausgelesen werden. Es hängt also irgendwie am auslesen des Uhrenbausteins....

    mein Programm passt nicht hier rein, man darf nur 20.000 Zeichen schreiben...

  4. #4
    zwanzischmark
    Gast
    ich hab mal das unwichitge rausgekürzt. Alles was mit der Uhr zu tun hat ist in 2 querbalken gefassst:

    Code:
      $regfile = "m32def.dat"
      $framesize = 16
      $swstack = 256
      $hwstack = 128
      $crystal = 16000000
      $baud = 9600
    
      Declare Function Decigrades(byval Sc(9) As Byte) As Integer
      Declare Sub Ziffer(byval X As Byte , Byval Y As Byte , Byval Z As Byte)
      Declare Sub Minmax(byval Id As String , Byval Nr As Byte , Byval Y1 As Byte)
      Declare Sub Temp(byval Pin As Byte)
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
      Declare Sub Settime(byval S As Byte , Byval M As Byte , Byval H As Byte , Byval D As Byte , Byval Month As Byte)
      Declare Sub Gettime
      Config Timer1 = Timer , Prescale = 256
      Config I2cdelay = 5
      Config Sda = Portd.4
      Config Scl = Portd.3
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
      Config Pind.4 = Input 
      Config Pind.5 = Input
      Config Pind.6 = Input
      Config Porta = Output
      Config Portc = Output
      Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 3 , Cd = 0 , Wr = 2 , Rd = 1 , Reset = 4 , Fs = 6 , Mode = 6
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
      On Timer1 Timer_irq
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
      Const Timervorgabe = 3036
      Dim First As Byte
      Dim Rset As Boolean
      Dim I As Byte
      Dim Ta As Single
      Dim Temp As Integer
      Dim Temp2 As String * 3
      Dim Temp3 As Integer
      Dim Dstemp(8) As Byte
      Dim Dsid1(8) As Byte
      Dim Dsid2(8) As Byte
      Dim Dsid3(8) As Byte
      Dim Dsid4(8) As Byte
      Dim Dsid5(8) As Byte
      Dim Dsid6(8) As Byte
      Dim Dsid7(8) As Byte
      Dim Dsid8(8) As Byte
      Dim Dsid9(8) As Byte
      Dim Dsid10(8) As Byte
      Dim Dsid11(8) As Byte
      Dim Dsid12(8) As Byte
      Dim Sc(9) As Byte
      Dim Minn(12) As Integer
      Dim Maxx(12) As Integer
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
      Dim S As Byte , M As Byte , H As Byte , D As Byte , Month As Byte
      Dim Wm As Byte , Yd As Byte
      Dim K As String * 20
      Enable Timer1
      Enable Interrupts
    
      Cls
      Cursor Off
      Waitms 100
    
      Call Settime(0 , 0 , 0 , 24 , 6)
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    
    
      Wait 2
    
      First = 2
      Portd.3 = 1
      Dstemp(1) = &H28
    '-------------------------------------------------------------------------------
      Dsid1(2) = &H61                                           'Paul
      Dsid1(3) = &HC1
      Dsid1(4) = &H81
      Dsid1(8) = &H53
    '-------------------------------------------------------------------------------
      Dsid2(2) = &H80                                           'Wohnzimmer
      Dsid2(3) = &H13
      Dsid2(4) = &H82
      Dsid2(8) = &H18
    '-------------------------------------------------------------------------------
      'Dsid3(2) = &H22
      'Dsid3(3) = &H42
      'Dsid3(4) = &H15
      'Dsid3(8) = &H15
    '-------------------------------------------------------------------------------
      'Dsid4(2) = &HFA
      'Dsid4(3) = &H85
      'Dsid4(4) = &H15
      'Dsid4(8) = &H03
    '-------------------------------------------------------------------------------
      Dsid5(2) = &HD0                                           'Küche
      Dsid5(3) = &H24
      Dsid5(4) = &H82
      Dsid5(8) = &HE3
    '-------------------------------------------------------------------------------
      Dsid6(2) = &H5E                                           'Flur
      Dsid6(3) = &HC1
      Dsid6(4) = &H81
      Dsid6(8) = &H9A
    '-------------------------------------------------------------------------------
      Dsid7(2) = &H4A                                           'Keller
      Dsid7(3) = &HC6
      Dsid7(4) = &H81
      Dsid7(8) = &H4C
    '-------------------------------------------------------------------------------
      Dsid8(2) = &HD2                                           'Gisela
      Dsid8(3) = &H45
      Dsid8(4) = &H82
      Dsid8(8) = &H51
    '-------------------------------------------------------------------------------
      Dsid9(2) = &H12                                           'Vorlauf
      Dsid9(3) = &HAD
      Dsid9(4) = &H81
      Dsid9(8) = &HA2
    '-------------------------------------------------------------------------------
      Dsid10(2) = &H73                                          'Eingang
      Dsid10(3) = &HAE
      Dsid10(4) = &H81
      Dsid10(8) = &H18
    '-------------------------------------------------------------------------------
      Dsid11(2) = &H71                                          'Out
      Dsid11(3) = &H2B
      Dsid11(4) = &H27
      Dsid11(8) = &HCF
    '-------------------------------------------------------------------------------
      Dsid12(2) = &H64                                          'Büro
      Dsid12(3) = &HAC
      Dsid12(4) = &H9B
      Dsid12(8) = &H66
    '-------------------------------------------------------------------------------
    
    
      'Locate 1 , 32 : Lcd "18:41:13"
      Locate 1 , 1 : Lcd " 05.06.2005   min   max"
      Locate 3 , 1 : Lcd "Paul    --.-" : Showpic 72 , 16 , Nrg2 : Showpic 112 , 16 , Nrg2 : Showpic 148 , 16 , Nrg2
      Locate 4 , 1 : Lcd "Flur    --.-" : Showpic 72 , 24 , Nrg2 : Showpic 112 , 24 , Nrg2 : Showpic 148 , 24 , Nrg2
      Locate 5 , 1 : Lcd "Eing.   --.-" : Showpic 72 , 32 , Nrg2 : Showpic 112 , 32 , Nrg2 : Showpic 148 , 31 , Nrg2
      Locate 6 , 1 : Lcd "Bad     --.-" : Showpic 72 , 40 , Nrg2 : Showpic 112 , 40 , Nrg2 : Showpic 148 , 40 , Nrg2
      Locate 7 , 1 : Lcd "Keller  --.-" : Showpic 72 , 48 , Nrg2 : Showpic 112 , 48 , Nrg2 : Showpic 148 , 48 , Nrg2
      Locate 8 , 1 : Lcd "B ro    --.-" : Showpic 72 , 56 , Nrg2 : Showpic 7 , 56 , Nrue : Showpic 112 , 56 , Nrg2 : Showpic 148 , 56 , Nrg2
      Locate 9 , 1 : Lcd "K che   --.-" : Showpic 72 , 64 , Nrg2 : Showpic 7 , 64 , Nrue : Showpic 112 , 64 , Nrg2 : Showpic 148 , 64 , Nrg2
      Locate 10 , 1 : Lcd "Wohnz.  --.-" : Showpic 72 , 72 , Nrg2 : Showpic 112 , 72 , Nrg2 : Showpic 148 , 72 , Nrg2
      Locate 11 , 1 : Lcd "Vorl.   --.-" : Showpic 72 , 80 , Nrg2 : Showpic 112 , 80 , Nrg2 : Showpic 148 , 80 , Nrg2
      Locate 12 , 1 : Lcd "Nachl.  --.-" : Showpic 72 , 88 , Nrg2 : Showpic 112 , 88 , Nrg2 : Showpic 148 , 88 , Nrg2
      Locate 13 , 1 : Lcd "Gisela  --.-" : Showpic 72 , 96 , Nrg2 : Showpic 112 , 96 , Nrg2 : Showpic 148 , 96 , Nrg2
      Locate 14 , 1 : Lcd "OUT 1   --.-" : Showpic 72 , 104 , Nrg2 : Showpic 112 , 104 , Nrg2 : Showpic 148 , 104 , Nrg2
      Locate 15 , 1 : Lcd "OUT 2   --.-" : Showpic 72 , 112 , Nrg2 : Showpic 112 , 112 , Nrg2 : Showpic 148 , 112 , Nrg2
    
      Line(0 , 10) -(239 , 10) , 255
      Line(77 , 0) -(77 , 127) , 255
      Line(113 , 0) -(113 , 127) , 255
      Line(149 , 0) -(149 , 127) , 255
    
      Locate 10 , 26 : Lcd "IN"
      Locate 14 , 26 : Lcd "OUT"
      Showpic 206 , 103 , Nrp
      Showpic 232 , 103 , Nrg
      Showpic 206 , 71 , Nrp
      Showpic 232 , 71 , Nrg
    
      Do
    '-------------------------------------------------------------------------------
        Locate 3 , 9                                            'Paul            01
        For I = 2 To 4
          Dstemp(i) = Dsid1(i)
        Next
        Dstemp(8) = Dsid1(8)
        Call Temp(6)                                            'Temperature
        If Temp <> 850 Then
          Call Ziffer(170 , 71 , 1)
          Call Ziffer(188 , 71 , 2)
          Call Ziffer(214 , 71 , 3)
        End If
        Call Minmax( "010" , 1 , 3)
    '-------------------------------------------------------------------------------
        Locate 4 , 9                                            'Flur            06
        For I = 2 To 4
          Dstemp(i) = Dsid6(i)
        Next
        Dstemp(8) = Dsid6(8)
        Call Temp(5)
        Call Minmax( "020" , 6 , 4)
    '-------------------------------------------------------------------------------
        Locate 5 , 9                                            'Eingang         10
        For I = 2 To 4
          Dstemp(i) = Dsid10(i)
        Next
        Dstemp(8) = Dsid10(8)
        Call Temp(5)
        Call Minmax( "030" , 10 , 5)
    '-------------------------------------------------------------------------------
        Locate 7 , 9                                            'Keller          07
        For I = 2 To 4
          Dstemp(i) = Dsid7(i)
        Next
        Dstemp(8) = Dsid7(8)
        Call Temp(4)
        Call Minmax( "050" , 7 , 7)
    '-------------------------------------------------------------------------------
        Locate 8 , 9                                            'Büro            12
        For I = 2 To 4
          Dstemp(i) = Dsid12(i)
        Next
        Dstemp(8) = Dsid12(8)
        Call Temp(4)
        Call Minmax( "060" , 12 , 8)
    '-------------------------------------------------------------------------------
        Locate 9 , 9                                            'Küche           05
        For I = 2 To 4
          Dstemp(i) = Dsid5(i)
        Next
        Dstemp(8) = Dsid5(8)
        Call Temp(6)
        Call Minmax( "070" , 5 , 9)
    '-------------------------------------------------------------------------------
        Locate 10 , 9                                           'Wohnzimmer      02
        For I = 2 To 4
          Dstemp(i) = Dsid2(i)
        Next
        Dstemp(8) = Dsid2(8)
        Call Temp(5)
        Call Minmax( "080" , 2 , 10)
    '-------------------------------------------------------------------------------
        Locate 11 , 9                                           'Vorlauf         09
        For I = 2 To 4
          Dstemp(i) = Dsid9(i)
        Next
        Dstemp(8) = Dsid9(8)
        Call Temp(6)
        Call Minmax( "090" , 9 , 11)
    '-------------------------------------------------------------------------------
    '(
        Locate 12 , 9                                           'Nachlauf
        For I = 2 To 4
          Dstemp(i) = Dsid10(i)
        Next
        Dstemp(8) = Dsid10(8)
        Temperature
        Call Minmax( "100" , 10 , 12)
    ')
    '-------------------------------------------------------------------------------
        Locate 13 , 9                                           'Gisela          08
        For I = 2 To 4
          Dstemp(i) = Dsid8(i)
        Next
        Dstemp(8) = Dsid8(8)
        Call Temp(6)
        Call Minmax( "110" , 8 , 13)
    '-------------------------------------------------------------------------------
        Locate 14 , 9                                           'OUT1            11
        For I = 2 To 4
          Dstemp(i) = Dsid11(i)
        Next
        Dstemp(8) = Dsid11(8)
        Call Temp(6)
        If Temp <> 850 Then
          Call Ziffer(170 , 103 , 1)
          Call Ziffer(188 , 103 , 2)
          Call Ziffer(214 , 103 , 3)
        End If
        Call Minmax( "120" , 11 , 14)
    '-------------------------------------------------------------------------------
        If First = 2 Then
          First = 1
        Elseif First = 1 Then
          First = 0
        Else
          Wait 20
        End If
        If Rset = 1 Then
          First = 1
          Rset = 0
        End If
      Loop
    
    End
    
      Light:
      Portd.4 = 1
      Wait 5
      Portd.4 = 0
      Return
    
      Rst:
      Rset = 1
      Return
    
    '------------------------------------------------------------------------------'
    '                         S T A R T  T E M P                                   '
    '------------------------------------------------------------------------------'
      Sub Temp(byval Pin As Byte)                               ' actual measuring
        1wreset Pind , Pin                                      ' reset the bus
        1wwrite &H55 , 1 , Pind , Pin
        1wwrite Dstemp(1) , 8 , Pind , Pin
        1wwrite &H44 , 1 , Pind , Pin                           ' Convert T
        Waitus 750
        1wreset Pind , Pin
        1wwrite &H55 , 1 , Pind , Pin
        1wwrite Dstemp(1) , 8 , Pind , Pin
        1wverify Dstemp(1) , Pind , Pin                         'Issues the "Match ROM "
        If Err = 0 Then
          1wwrite &HBE , 1 , Pind , Pin
          Sc(1) = 1wread(9 , Pind , Pin)                        'read bytes into array
          If Sc(9) = Crc8(sc(1) , 8) Then
            Temp = Decigrades(sc(9))
            If Temp <> 850 Then
              Ta = Temp / 10
              If Temp < 100 Then Lcd " "
              Lcd Fusing(ta , "#.#")
            End If
          End If
        Else
          Lcd "Err "
        End If
        Waitms 500
     End Sub
    
    
     Sub Minmax(byval Id As String * 3 , Byval Nr As Byte , Byval Y1 As Byte)
       If Temp <> 850 Then
         Print Id ; Temp
    
         If First = 0 Then
           If Temp < Minn(nr) Then
             Minn(nr) = Temp
           End If
           If Temp > Maxx(nr) Then
             Maxx(nr) = Temp
           End If
         Else
           Maxx(nr) = Temp
           Minn(nr) = Temp
         End If
    
         Locate Y1 , 15
         Ta = Minn(nr) / 10
         If Minn(nr) < 100 And Minn(nr) > 0 Then Lcd " "
         Lcd Fusing(ta , "#.#")
    
         Locate Y1 , 21
         Ta = Maxx(nr) / 10
         If Maxx(nr) < 100 And Maxx(nr) > 0 Then Lcd " "
         Lcd Fusing(ta , "#.#")
         Temp = 850
       End If
     End Sub
    
      Function Decigrades(byval Sc(9) As Byte)
        Decigrades = 0
        Decigrades = Makeint(sc(1) , Sc(2))
        Decigrades = Decigrades * 10
        Decigrades = Decigrades / 16
      End Function
    '------------------------------------------------------------------------------'
    '                             E N D  T E M P                                   '
    '------------------------------------------------------------------------------'
    
    Sub Ziffer(byval X As Byte , Byval Y As Byte , Byval Z As Byte)
      If Temp < 100 And Temp >= 0 Then
        Showpic 170 , Y , Leer
        If Z = 1 Then X = 188
        If Z = 2 Then X = 214
        If Z = 3 Then Exit Sub
      End If
    
      If Temp < 0 And Temp > -100 Then
        Showpic 170 , 103 , Minus
      Else
        If Temp < -100 Then
          Showpic 152 , 103 , Minus
        End If
      End If
    
      If Temp < 10 And Temp > -10 Then
        Showpic 188 , 103 , Nr0
        If Z = 1 Then X = 214
        If Z = 2 Then Exit Sub
        If Z = 3 Then Exit Sub
        If Temp < 0 Then Z = 2
      End If
    
      If Temp < -10 And Temp > -100 Then
        If Z = 1 Then X = 188
        If Z = 2 Then X = 214
        If Z = 3 Then Exit Sub
        Z = Z + 1
      End If
    
      If Temp < -100 Then
        Z = Z + 1
      Else
        Showpic 152 , 103 , Leer
      End If
    
      Temp2 = Str(temp)
      Temp2 = Mid(temp2 , Z , 1)
      Select Case Val(temp2)
        Case 0 : Showpic X , Y , Nr0
        Case 1 : Showpic X , Y , Nr1
        Case 2 : Showpic X , Y , Nr2
        Case 3 : Showpic X , Y , Nr3
        Case 4 : Showpic X , Y , Nr4
        Case 5 : Showpic X , Y , Nr5
        Case 6 : Showpic X , Y , Nr6
        Case 7 : Showpic X , Y , Nr7
        Case 8 : Showpic X , Y , Nr8
        Case 9 : Showpic X , Y , Nr9
      End Select
    End Sub
    
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    Sub Gettime()
        I2cstart                                                'generate start
        I2cwbyte &HA0                                           'write addres of PCF8583
        I2cwbyte 2                                              'select second register
        I2cstart                                                'generate repeated start
        I2cwbyte &HA1                                           'write address for reading info
        I2crbyte S , Ack                                        'read seconds
        I2crbyte M , Ack                                        'read minuts
        I2crbyte H , Ack                                        'read hours
        I2crbyte Yd , Ack                                       'read year and days
        I2crbyte Wm , Nack                                      'read weekday and month
        I2cstop                                                 'generate stop
    
        'Print Bcd(h) ; ":" ; Bcd(m) ; ":" ; Bcd(s)
        'Print Bcd(yd) ; " Month : " ; Bcd(wm)
        Locate 1 , 32
        Lcd Bcd(h) ; ":" ; Bcd(m) ; ":" ; Bcd(s)
        'Locate 3 , 1
        'Lcd H ; ":" ; M ; ":" ; S
        'Locate 5 , 1
        'Lcd Bcd(yd) ; "  " ; Bcd(wm)
        'Locate 7 , 1
        'Lcd Yd ; "   " ; Wm
    End Sub
    
    
    Sub Settime(s As Byte , M As Byte , H As Byte , D As Byte , Month As Byte)
        S = Makebcd(s)                                          'seconds
        M = Makebcd(m)                                          'minuts
        H = Makebcd(h)                                          'hours
        D = Makebcd(d)                                          'days
        Month = Makebcd(month)                                  'months
    
        I2cstart                                                'generate start
        I2cwbyte &HA0                                           'write address
        I2cwbyte 0                                              'select control register
        I2cwbyte 8                                              'set year and day bit for masking
        I2cstop                                                 'generate stop
    
    
        I2cstart                                                'generate start
        I2cwbyte &HA0                                           'write mode
        I2cwbyte 2                                              'select seconds Register
        I2cwbyte S                                              'write seconds
        I2cwbyte M                                              'write minuts
        I2cwbyte H                                              'write hours
        I2cwbyte D                                              'write days
        I2cwbyte Month                                          'write months
        I2cstop
    End Sub
    
      Timer_irq:
        Timer1 = Timervorgabe
        Call Gettime()
      Return
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    
    Nr0:
    $bgf "0.bgf"
    Nr1:
    $bgf "1.bgf"
    Nr2:
    $bgf "2.bgf"
    Nr3:
    $bgf "3.bgf"
    Nr4:
    $bgf "4.bgf"
    Nr5:
    $bgf "5.bgf"
    Nr6:
    $bgf "6.bgf"
    Nr7:
    $bgf "7.bgf"
    Nr8:
    $bgf "8.bgf"
    Nr9:
    $bgf "9.bgf"
    Nrp:
    $bgf "p.bgf"
    Nrg:
    $bgf "g.bgf"
    Nrg2:
    $bgf "g2.bgf"
    Nrue:
    $bgf "ue.bgf"
    Leer:
    $bgf "leer.bgf"
    Minus:
    $bgf "minus.bgf"

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Du kannst das Programm aber hochladen. Das bringt noch viel mehr als nur den Code zu posten.

    Am M32 kannst du auch einen Uhrenquarz anschliessen und die Zeit da auslesen und anzeigen lassen.
    Allerdings ist es eine Anforderung an die Programmierung. Es klappt nicht, wenn der Timer grade die Zeit ändern will und ein Sensor einen Wert auf's LCD schreiben will. Dann stürzt das LCD ab! Und das ist nicht wörtlich gemeint, sondern wirklich so.

    Du müsstest in der Timer-ISR alle Anzeigen realisieren.

  6. #6
    zwanzischmark
    Gast
    hm das Problem hab ich eigentlich nicht... das Display läuft Stabil nur bei der Zeit kommen halt nur Fragezeichen

    Bild hier  

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    hm das Problem hab ich eigentlich nicht...
    Kannst du ja auch nicht haben, weil die Zeit nicht durch den Timer des AVR erzeugt wird, sondern ausgelesen wird (IIC) und alles schön der Reihe nach auf's Display geschrieben wird.
    By the Way: Selbst ein PC ist nicht wirklich Multitaskfähig!
    Der arbeitet auch Befehl für Befehl ab.

    Die ? kommen doch sicherlich vom IIC-Bus, oder? Im Code habe ich keine gefunden.
    Sehe ich das richtig, das du Timer1 nicht benutzt und als Interrupts (zu denen ich auch Timer und sonstiges zähle) nur INT1 verwendest?

    Wo kommt den ?55 her? Ich das nur ein Zeilenüberlauf? Sind 55 evtl die Sekunden?

  8. #8
    zwanzischmark
    Gast
    ich verwende Timer 1. Ist nur alles auskommentiert in dem quellcode, weil ich das Testweise wieder rausgeschmissen hab. Ich sollte den mal richtig posten sorry,... so ist das mit den auskommentierten sachen etwas schwierig. Die Fragezeichen kommen vom Prinzip vom IIC, -ja, aber wie gesagt die ersten 2sec in denen keine Sensoren abgefragt werden läuft die Uhr. Die 55 kommt denk ich zustande weil er nachdem er in den timer springt die cursorposition ändert und da dann ne Temp hinschreibt.

    edit: ich hab jetz ma den ganzen kram rausgemacht der verwirrt

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Ich kann die ISR für Timer1 garnicht finden.
    Wenn ich morgen Abend von der Arbeit komme kopiere ich mir das mal in Bascom. Der ganze Code wäre ja auch nicht verkehrt. Aber wenn du nicht willst.

    Was spricht denn gegen den asynchronen Modus des Timers für die Uhr?

  10. #10
    zwanzischmark
    Gast
    Das ist der ganze code ich hab nur sachen rausgemacht die einfach noch aus irgendwelchen tests drinen waren.

    meinst du mit ISR das hier:

    Timer_irq:
    Timer1 = Timervorgabe
    Call Gettime()
    Return


    das mit dem asynchronen modus kommt in betracht wenn ich weiss warum das so nicht geht

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test