www.mikrocontroller.net

Forum: Compiler & IDEs ADC Wert auf LCD ausgeben


Autor: wirehead (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
hab ein problem mit der ausgabe des ADC Wertes auf ein Display, da ich
noch Anfänger in C und AVR bin bitte ich um nachsicht.
Ich verwende einen Mega16 und Programmiere in WINAVR, die LCD Routine
hab ich der einfachheit halber von Peter Fleury genommen.
Zu meinem Problem:
Ich möchte den ADC Wert direckt auf dem display darstellen, ok
funktioniert auch soweit, sobalt ich den ausgewählten eingang auf masse
lege, also wandlungsergebniss 0 bleibt der zuletzt gemessene Wert
einfach im Display stehen. Sofort nachdem ich die brücke wegnehme und
der eingang wieder freiliegt bzw über ein poti hab ich sofort wieder
aktualisierungen. Woran kann das liegen?
Wie gesagt ich bin noch ziemlicher Noob was C betrifft, wär nett wenn
mir es jemand erklären könnte.

Gruß
Torsten

Autor: Karl heinz Buchegger (heinzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Code enthaelt eine Schleife:
Jetzt weisst Du auch, wozu Einrueckungen gut sind. Damit
auch ein Blinder sowas auf 30 Meter Entfernung 'sehen' kann.

Mit ein paar Leerzeichen da und dort, wird's gleich viiiiieeeel
lesbarer:

int main(void)
{
  lcd_init(LCD_DISP_ON);

  int result;
  char buffer[6];

  ADCSRA = _BV(ADEN) | _BV(ADPS0) | _BV(ADPS1) | _BV(ADPS2);
  ADMUX = _BV(REFS1) | _BV(REFS0);

  for (;;)
  {
    ADCSRA |= _BV(ADSC);

    while (ADCSRA & _BV(ADSC) )
    {
    }

    result = ADC;
    itoa( result, buffer, 10 );

    lcd_gotoxy( 0, 0 );
    lcd_puts( "ADC:" );
    lcd_gotoxy( 0, 1 );
    lcd_puts( buffer );
  }
}

Das hier:

for( ;; )
{
  ...
}

realisiert eine Endlosschleife. D.h. der Teil ... wird
wieder und wieder abgearbeitet. Und da in diesem Teil
das Wandlungsergebnis abgeholt und angezeigt wird, ...

Autor: wirehead (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Heinzi,
danke für die formatierungshilfe.
Die Schleife war schon beabsichtigt (hab mich oben vieleicht etwas
unklar ausgedrückt) nur nicht das bei bei einem wandlungsergebniss von
0 das zu letzt gewandelte ergebtnis sagen wir z.B. mal 510, einfach im
display einfriert. Ich kann mir das nicht erklären, wenn ich dann
wieder die massebrücke zum entsprechenden ADC eingang entferne hab ich
sofort wieder ständige aktualisierung, wie ich mir das auch eigentlich
gedacht hab.

Gruß
Torsten

Autor: Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst auch das alte Ergebnis überschreiben. Da Du nur die 0 ins Disp
schreibst, bleibt der alte Wert einfach stehen.

Werner

Autor: wirehead (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Werner,
wo trit dieses Problem denn auf? Bei itoa oder wenn der adc wert in den
die result variable geschrieben wird?


Gruß
Torsten

Autor: Werner A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werner war nicht der fragestellende, das war wirehead (oder so)...

Autor: Werner A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@wirehead:
sorry, is schon spät. Probier doch einfach mal jeweils die Zeile vorher
mit Leerzeichen zu überschreiben. Da ich damals direkt das integer
geschrieben habe mag es aber daran gelegen haben.
Werner

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.