Fehler bei GLCD Ausgabe und itoa

Gast #1710464
Lesenswert?

Hallo zusammen,

ich gebe gerade den ADC-Wert auf ein glcd aus. Später rechne ich diesen 
Wert in eine Temp um, aber soweit bin ich nicht gekommen, weil sich ein 
mir noch nicht verständlicher Fehler eingeschlichen hat.

Bei ca. 25 Grad erscheint ein Wert von 160.
Halte ich den LM34 jetzt in Eis-Wasser, geht der ADC Wert langsam runter 
und bei 100 geht es nicht weiter mit 99 sondern an erster Stelle 
erscheint eine 9 anstatt einer 0. Also erschein nach 100 z.B. nicht 95, 
sondern 995.
Woran liegt das und wie kann ich das beheben?

Hier das Programm: (Atmega128 @ 16Mhz und der Tempsensor ist ein LM34)

#include <avr/io.h>
#include <util/delay.h>
#include <t6963c.h>
#include <stdlib.h>

uint16_t temp1;
char temp1_char[4];

int main (void)
  {
    glcd_setup();
    glcd_init();
    glcd_clear_text();
    glcd_clear_graph();

    ADCSR=0xc5;

    glcd_print(0,3, "T-Sensor 1: ");

    while(1)
    {
      loop_until_bit_is_clear(ADCSR,ADSC);
      temp1 = ADCW;
      utoa( temp1, temp1_char, 10 );
      glcd_print(13,3, temp1_char);
      glcd_print(17,3, "C");
      ADCSR |= (1<<ADSC);
      _delay_ms (1000);

    }
    return 0;
  }

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren