mikrocontroller.net

Forum: Compiler & IDEs DS18B20 + LCD + ATmega will nicht funktionieren


Autor: Tobias P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
µC: ATmega8 (8 MHz)
Compiler: aktuelle Version von WinAVR
Programmer: AVR-ISP (von Atmel)
Erfahrung: Anfänger

Problem:
Will einen dig. Temperatursensor an einen ATmega8 anschließen und den
Temperaturwert auf einem 2x16 char LCD anzeigen.
Das eigendliche Problem ist, dass es zwar mehrere Codesammlungen gibt,
aber keine davon wirklich funktionieren will.

z.B.
http://mc-project.de/Pages/AVR/Programme/Programme.html
http://www.mikrocontroller.net/attachment.php/8483...

Ich bin schon am verzweifeln. Vielleicht gibt es ja hier jemanden, der
schon mal in der gleichen Lage war und mir hoffendlich weiterhelfen
kann.

Autor: Elektrikser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was genau funktioniert nicht? Die Ansteuerung der DS18x20? Oder das
Display? Schreib mal genauer, wo es dich drückt...

Gruß Elektrikser

Autor: Jens D. (jens) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau mal hier
http://www.siwawi.arubi.uni-kl.de/avr_projects/tem...
damit hatte ich sie ausgelesen bekommen udn auf einem LCD angezeigt

Gruss

Autor: Tobias P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das LCD funktioniert perfekt.
Nur die Ansteuerung des DS18B20 will nicht funktionieren.

Autor: Elektrikser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann schau dir den Link von Jens an. Diese Ansteuerung funktioniert sehr
gut.

Autor: Tobias P. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So hab jetzt mit einem anderen Beispielprogramm versucht und
entsprechend abgeändert.
Allerdings bekomme ich bei 24°C Raumtemperatur (mit Thermometer
gemessen) mit dem DS18B20 142°C angezeigt.

Als Anhang hab ich mal die Dateien angehängt, mit denen ich zur Zeit
arbeite.

Autor: Tobias P. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das ist meine main.c

Autor: Tobias P. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und hier noch die Ds18s20.h

Autor: Tobias P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So hab nun den Fehler selbst gefunden.
Im Scatchpad wurde nur das erste Byte gelesen.

In DS18B20.c muss folgendes geändert werden:
unsigned char read_scratchpad (void) {
        --cut--
  //for (i=0; i<9; i++)
  scratchpad [0] = read_byte ();
  scratchpad [1] = read_byte ();
  reset (); //terminate transfer (read 2bytes)
        --cut--

Und in Temp_LCD.c folgendes:
                --cut--
                for (;;)
    {
    read_scratchpad ();
    temperature = (scratchpad [1] << 8) + scratchpad [0];
    temperature *= 0.0625; //für 12bit
    itoa (temperature, buffer_temp, 10);
    lcd_gotoxy (5,0);
    lcd_puts (buffer);
    lcd_puts (" C");
    }
                --cut--

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.