mikrocontroller.net

Forum: Compiler & IDEs Typumwandlung problem


Autor: lcdtastatur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will vom Ad ein wert auslesen und diesen dann auf einem lcd
anzeigen.

Mein Programm:

char buffer[7];
int  num;
sbi(ADCSR,ADSC);
while(bit_is_set(ADCSR,ADSC));   //warten bis wandlung fertig
num = (inp(ADCL)+(inp(ADCH)*256));  //high und low zusammensetzen
/* convert interger into string */
itoa( num , buffer, 10);
/* put converted string to display */
lcd_puts(buffer);

Ich glaub das problem ist dass ich ein unsigned int aus dem register
auslese und dann in ein int schreibe. Wie mach ich die typumwandlung?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls du mit avrgcc arbeitest, warum schreibst du es nicht so:

unsigned short ad_wert = 0;
...
...
...
ad_wert = ADC;
...
...

Gruß, Alex

Autor: lcdtastatur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jetzt:
   num = (inp(ADCL)+(inp(ADCH)*256));
durch:
   num = ADC;
ersetzt. dann kam:
   `ADC' undeclared (firs t use in this function)

ich hab folgende headerfiles:

#include <stdlib.h>
#include <avr/io.h>
#include "lcd.h"

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aus iom16.h, wird von avr/io.h eingebunden:

/* ADC */
#define ADCW  _SFR_IO16(0x04)
#define ADCL  _SFR_IO8(0x04)
#define ADCH  _SFR_IO8(0x05)

Probiers mit
 num = ADCW;

Stefan

Autor: lcdtastatur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den tip ist ja viel einfacher und übersichtlicher.

der wert auf dem lcd stimmt aber immernoch nicht. bei 10 bit ad und
höchstem wert müsste ja 2048 auf dem lcd angezeigt werden es sind aber
ca. 700

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2^10 ist bei mir 1024

Auf welchem Potential ist AREF bzw. wie hast du die REFSn Bits
konfiguriert?

Gruß, Alex

Autor: lcdtastatur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aref , avcc, ADC1 alle auf 5V

ich hab vcc direkt mit der analogspannung gekoppelt kann daher der
fehler kommen?

Autor: lcdtastatur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
alles klar hab den fehler gefunden. war nur ne fehlende Lötverbindung!!
so ne scheiße.

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.