Forum: Compiler & IDEs Typumwandlung problem


von lcdtastatur (Gast)


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?

von Alex (Gast)


Lesenswert?

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

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

Gruß, Alex

von lcdtastatur (Gast)


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"

von Stefan Kleinwort (Gast)


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

von lcdtastatur (Gast)


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

von Alex (Gast)


Lesenswert?

2^10 ist bei mir 1024

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

Gruß, Alex

von lcdtastatur (Gast)


Lesenswert?

aref , avcc, ADC1 alle auf 5V

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

von lcdtastatur (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.