- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: dcf77 und ds1820 vertragen sich nicht...

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.04.2005
    Beiträge
    146

    dcf77 und ds1820 vertragen sich nicht...

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Jedenfalls bei mir nicht,
    nach einigen Stunden, manchmal auch nur Minuten hängt sich das Programm auf.
    (Kann es im Moment nicht posten, bin auf Arbeit)
    Programm ist mittlerweile abgespeckt auf
    Anzeige der Uhrzeit und Routine für auslesen des Sensors.
    egal ob ich den Sensor innerhalb der sectic routine laufen lasse, oder aber mit Hilfe "if _sec=xx then ds1820" nur einmal pro minute aufrufe,
    das Programm bleibt früher oder später hängen und zwar exakt zur Uhrzeit des Aufrufes, (die Uhr bleibt stehen).
    verwende neueste Bascom mit dcf-lib, mega8 mit 16MHz Takt.
    Kennt jemand das Problem?
    Gruß, Rene

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hallo Rene,
    ... manchmal auch nur Minuten hängt sich das Programm auf.
    (Kann es im Moment nicht posten, bin auf Arbeit)
    "Das Programm hängt sich auf, aber ich kann es nicht posten"
    Mann, wie soll man denn da irgend etwas dazu sagen?

    Wenn du antworten solltest,- könntest du bei einer solchen Frage helfen?
    So ein Post ist sinnlos. Stell dein Programm ein.

    Gruß Dirk

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.04.2005
    Beiträge
    146
    hier die relevanten Teile:
    Code:
    Do
       Gosub Temperatur_ds1820
    
       Locate 1 , 1
       Lcd Time$ ; "   " ; Date$ ;
       
       Locate 2 , 1
       Lcd "t=" ; Fusing(stemp , "#.#") 
    Loop
    
    sectic:
       nop
    return
    
    Temperatur_ds1820:
    
    1wreset
       1wwrite Skiprom
       1wwrite Convertt
    
          Do
             Temp = 1wread()
          Loop Until Temp = &HFF
    
    
       1wreset
    
       1wwrite Skiprom
       1wwrite Read_ram
    
       For I = 1 To 9
          Scratch(i) = 1wread()
       Next
    
       Temp = Scratch(2)
       Shift Temp , Left , 8
       Temp = Temp + Scratch(1)
       Temp1 = Temp
    
       Temp1 = Temp1 / 2
    
       Stemp = Scratch(8) - Scratch(7)
       Stemp = Stemp / Scratch(8)
       Stemp = Stemp + Temp1
       Stemp = Stemp - 0.25
    
    Return
    egal wohin ich "Gosub Temperatur_ds1820" verschiebe(z.B. ins "sectic")
    das Programm hängt sich auf,

    Gruß, Rene

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.04.2005
    Beiträge
    146
    Zitat Zitat von Dirk

    Wenn du antworten solltest,- könntest du bei einer solchen Frage helfen?


    Gruß Dirk
    Ja! könnte ich! z.B. wären mögliche Antworten:
    -die ds1820Auslesung dauert zu lang (länger als eine Sekunde)
    -1wire und dcf77 benutzen gleiche Timer,
    -beide Routinen können im ungünstigen Fall zeitgleich aufgerufen werden,
    -irgendwelche interruptprobleme,
    mir würden noch mehr Dinge einfallen, die definitiv nichts mit dem code zu tun haben, ich hab aber vom Bascom-Hintergrund keine Ahnung.
    Das was ich allerdings verschwiegen habe, ist der nicht-parasitäre Modus der ds1820.
    Ach und nochwas: der jetzt von mir gepostete code entspricht meiner Beschreibung, dürfte nicht überraschend sein, also auch nicht unbedingt nötig
    Gruß, Rene

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    52
    Beiträge
    765
    Vielleicht rennt er sich in der do...loop until Schleife fest.

    icg selbst nutze eine Variable, welche in der sectic um 1 erhöht wird, und bei einem bestimmten Wert (z.B. 5 ) Rufe ich ein Sub auf, welches die Werte einliest und die Variable wieder auf 0 Stellt.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.04.2005
    Beiträge
    146
    hallo peterfido,

    daraus entnehme ich dass es bei dir geht,
    exakt dasselbe hab ich auch schon probiert, ebenso in dem ich die ds1820-Auslesung durch das Kommando:
    if _sec=5 then gosub ds1820
    auf eine bestimmte Sekunde gelegt habe, in der Hoffnung, dass es sekunden gibt, wo die dcf-routine nicht so viel zu tun hat (z.B. die ersten10, oder die 59.)
    trotzdem ist die ganze Sache irgendwann mal stehengeblieben, und immer in der Sekunde, in der die ds1820-routine aufgerufen wurde.
    Übrigens, das Programm hängt richtig fest, auch ein Reset nutzt nichts, nur Spannung abschalten.
    kannst du mir dein Sub mal posten? Vielleicht geht das besser als meines...
    Gruß, Rene

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    52
    Beiträge
    765
    Wenn der Reset nicht geht, solltest du mal testen, ob nicht der DS1820 irgendwas blockiert.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.04.2005
    Beiträge
    146
    das vermute ich auch, wie teste ich das? Und warum läuft alles stundenlang ohne Probleme wenn ich config dcf... und die Anzeige der Uhrzeit weglasse? Das kann doch meiner Meinung nach nur daran liegen, dass da irgendeine Unverträglichkeit vorliegt.
    Ich versteh das nicht...
    Gruß, Rene

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    52
    Beiträge
    765
    Das kann einige Ursachen haben. Es wäre möglich, dass beide Routinen die selben Register nutzen, der Stack überläuft, usw. Du kannst mit der Temperatur warten, bis die Uhr nach DCF gestellt wurde. Dann den Empfang abschalten und die Temperatur abfragen. Wenn die Zeit korrigiert werden soll, die Temperatur vorübergehend nicht abfragen. Bei mir geht aber beides Zeitgleich. Ich habe bloß die Stacks erhöht und die Lese- und Schreibzugriffe auf TWI gegenseitig verriegelt, sodass ein begonnener Vorgang sauber durchgelaufen wird.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.04.2005
    Beiträge
    146
    Danke erstmal, das scheinen mir gute Lösungsansätze zu sein, da hab ich schon mal was zum probieren,
    Gruß, Rene

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad