-
        

Ergebnis 1 bis 4 von 4

Thema: Anfängerprobleme C mit RTC

  1. #1

    Frage Anfängerprobleme C mit RTC

    Anzeige

    Guten Abend,
    ich fange am besten ganz am Anfang an

    Folgende Hardware benutze ich:
    Atmel Atmega32 (auf 8mhz)
    2x DS18B20
    Ein KS0066 Display
    Eine DS1307 RTC mit 12,5pf Quarz

    Nun komme ich zu meinem Problem:
    Die Uhrzeit wird richtig angezeigt, jedoch springt meine LCD Anzeige bei der Sekundenanzeige einfach 1 Sekunde weiter.
    Also 12:35: 04 / 05 / 06 / 08 / 09 / 10 . (Jedoch stimmt die Uhrzeit mit meiner normalen Uhr überein)
    Ich habe mal die DS18B20 Routine auskommentiert, dann funktioniert alles einwandfrei.
    Ich denke mir jetzt einfach mal, dass mein Fehler in der DS18B20 Routine zu finden ist, weil die Konvertierung zulange dauert, und da ich die Routine zweimal benutze wegen der zwei Sensoren. (Bin leider was Mikroprozessortechnik angeht und deren Programmierung auf dem Anfang-Anfangsstadium *g*).

    Im Voraus bitte ich meine "Programmierung" zu entschuldigen *g*, vieles habe ich mit Tutorials programmiert oder an meine Bedürfnisse angepasst.

    Mein Programm habe ich als Anhang hinzugefügt.

    Vielen Dank für Eure Hilfe im Vorraus und für Verbesserungsvorschläge bin ich gerne offen.

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    05.02.2012
    Ort
    Dortmund
    Beiträge
    12
    Zitat Zitat von Zun Beitrag anzeigen
    [...]Ich habe mal die DS18B20 Routine auskommentiert, dann funktioniert alles einwandfrei.
    Ich denke mir jetzt einfach mal, dass mein Fehler in der DS18B20 Routine zu finden ist, weil die Konvertierung zulange dauert, und da ich die Routine zweimal benutze wegen der zwei Sensoren. (Bin leider was Mikroprozessortechnik angeht und deren Programmierung auf dem Anfang-Anfangsstadium *g*).[...]
    Hoi,
    ich habe mir Deinen Code zwar nicht angeguckt, aber ich vermute mal das Du mit einer Schleife arbeitest in der die Uhrzeit angezeigt und die Temperatur Sensoren ausgelesen werden. Wie Du schon richtig heraus gefunden hast ist die Anzeige korrekt wenn Du die Sensoren nicht aus liest. In der Auslese Routine liegt nämlich das Problem, die Temperatur Sensoren brauchen ca. 750 ms um die Temperatur bereit zu stellen! Und da Du zwei hast kommen so 1.5 Sekunden zusammen in der Dein Programm nicht wieder in die Hauptschleife zurück kehren kann und damit wird eine Sekunde übersprungen.

    (Leider finde ich auf die Schnelle keine Link der meine Aussage bestätigt. Aber ich habe diese Temperatur Sensoren schon mit Perl unter Linux als auch mit einem Ardunio ausgelesen und diese 750 ms tauchen immer wieder auf!)

    HTH!
    Tschö, Tore

  3. #3
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Hallo
    Crissa hat, denk ich mal, nicht unrecht!
    Die Erklärung ist recht eindeutig und auf Grundlage der Erklärung habe ich bischen "recherchiert" (oder das Datenblatt angeschaut ^.^).
    Bei diesem Datenblatt:

    http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf

    steht direkt auf der ersten Seite ganz unten folgendes:

    Converts Temperature to 12-Bit Digital Word in 750ms (Max)

    Ich denke das sollte dein Problem erklären und Crissa hat eine Quelle um die Aussage zu belegen
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    05.02.2012
    Ort
    Dortmund
    Beiträge
    12
    Zitat Zitat von Kampi Beitrag anzeigen
    [...]
    Converts Temperature to 12-Bit Digital Word in 750ms (Max)

    Ich denke das sollte dein Problem erklären und Crissa hat eine Quelle um die Aussage zu belegen
    Hoi,
    Danke für den Link.

    Noch eine Idee um das Problem zu lösen (und ohne Interrupts zu verwenden):

    - Sekundenwechsel abwarten
    - alle geraden Sekunden Temperatur Sensor Nummer 1 auslesen
    - alle ungeraden Sekunden Nummer 2 auslesen

    oder

    - Sekundenwechsel abwarten
    - alle gerade Sekunden Sensor Nummer 1 auslesen und bei Nummer 2 das Bereitstellen anstossen
    - alle ungeraden Sekunden Sensor Nummer 2 auslesen und bei Nummer 1 das Bereitstellen anstossen

    Keine Ahnung welche Methode hier angewendet werden kann, dazu müsste ich mir doch mal den Code ansehen.
    Tschö, Tore

Ähnliche Themen

  1. Anfängerprobleme
    Von Patroclus im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 37
    Letzter Beitrag: 13.12.2011, 20:45
  2. Anfängerprobleme mit AT90USB162
    Von Gerko im Forum Assembler-Programmierung
    Antworten: 14
    Letzter Beitrag: 18.10.2008, 15:26
  3. Anfängerprobleme
    Von LuZ im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 11.03.2008, 15:29
  4. Anfängerprobleme
    Von paul-stanley im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 01.03.2008, 00:03
  5. .Anfängerprobleme mit SMC800
    Von meroy im Forum Motoren
    Antworten: 8
    Letzter Beitrag: 04.09.2006, 05:44

Berechtigungen

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