Guten Abend Liebe forum Gemeinde,
bin ja noch ganz frisch hier möchte euch aber dennoch mit einem Problem Konfrontieren.
Ich beschäftige mich nun seit ein paar wochen mit uCs und auf empfehlung auch mit e-lab, womit ich bislang auch sehr zufrieden bin.
Nun zu meinem Problem,
ich würde gern für ein kleines Projekt den ad-wandler im xmega32A4 nutzen.
"der mag er sich aber nicht benutzen lassen"
Im Display zeigt er bei offenem Eingang einen Wert von ca. 2300-2600 und wenn ich den Eingang gegen Masse lege immer noch 120-145. Wenn ich das Messgerät anlege bricht der Wert etwas ein und ich messe etwa 450-500mV.
Das ganze ist mir grad ein unverstänlichen Rätzel. Ich hoffe ihr habt da einen Rat für mich.
Gruß Tobias
sorry wegen dem Programm, weiß grad nicht wie ich das in ein eigenes Textfenster packe
program adc_test;
Device = xmega32A4, VCC=3.3;
{ $BOOTRST $04000} {Reset Jump to $04000}
Import SysTick, LCDport, SysLEDblink,adc_a;
From System Import ;
Define
OSCtype = int32MHz,
PLLmul=4,
prescB=1,
prescC=1;
SysTick = 10; {msec}
StackSize = $0064, iData;
FrameSize = $0064, iData;
SysLedBlink = 20; {SysTicks}
SysLedBlink0 = PortC, 7, high;
LCDport = PortC;
LCDtype = 44780;
LCDrows = 2; {rows}
LCDcolumns = 16; {columns per line}
ADCrefA = REF100; // intern 1.0V reference, input pins at PortA, 4 channels
ADCprescA = 512; // prescaler 256
ADCchansA = [0]; // 4 channels in use
Implementation
{$IDATA}
{--------------------------------------------------------------}
{ Type Declarations }
type
{--------------------------------------------------------------}
{ Const Declarations }
{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
var
adc0 : word;
{--------------------------------------------------------------}
{ functions }
procedure InitPorts;
begin
DDRC:= %10000000; //input 0 output 1 7..0
//DDRA:= %00000000;
end InitPorts;
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
InitPorts;
EnableInts($87);
sysledflashon (0);
loop
adc0 := getadcA(0);
lcdxy(0,0);
write(lcdout,inttostr(adc0:4));
mdelay(300);
endloop;
end adc_test.
bin ja noch ganz frisch hier möchte euch aber dennoch mit einem Problem Konfrontieren.
Ich beschäftige mich nun seit ein paar wochen mit uCs und auf empfehlung auch mit e-lab, womit ich bislang auch sehr zufrieden bin.
Nun zu meinem Problem,
ich würde gern für ein kleines Projekt den ad-wandler im xmega32A4 nutzen.
"der mag er sich aber nicht benutzen lassen"
Im Display zeigt er bei offenem Eingang einen Wert von ca. 2300-2600 und wenn ich den Eingang gegen Masse lege immer noch 120-145. Wenn ich das Messgerät anlege bricht der Wert etwas ein und ich messe etwa 450-500mV.
Das ganze ist mir grad ein unverstänlichen Rätzel. Ich hoffe ihr habt da einen Rat für mich.
Gruß Tobias
sorry wegen dem Programm, weiß grad nicht wie ich das in ein eigenes Textfenster packe
program adc_test;
Device = xmega32A4, VCC=3.3;
{ $BOOTRST $04000} {Reset Jump to $04000}
Import SysTick, LCDport, SysLEDblink,adc_a;
From System Import ;
Define
OSCtype = int32MHz,
PLLmul=4,
prescB=1,
prescC=1;
SysTick = 10; {msec}
StackSize = $0064, iData;
FrameSize = $0064, iData;
SysLedBlink = 20; {SysTicks}
SysLedBlink0 = PortC, 7, high;
LCDport = PortC;
LCDtype = 44780;
LCDrows = 2; {rows}
LCDcolumns = 16; {columns per line}
ADCrefA = REF100; // intern 1.0V reference, input pins at PortA, 4 channels
ADCprescA = 512; // prescaler 256
ADCchansA = [0]; // 4 channels in use
Implementation
{$IDATA}
{--------------------------------------------------------------}
{ Type Declarations }
type
{--------------------------------------------------------------}
{ Const Declarations }
{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
var
adc0 : word;
{--------------------------------------------------------------}
{ functions }
procedure InitPorts;
begin
DDRC:= %10000000; //input 0 output 1 7..0
//DDRA:= %00000000;
end InitPorts;
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
InitPorts;
EnableInts($87);
sysledflashon (0);
loop
adc0 := getadcA(0);
lcdxy(0,0);
write(lcdout,inttostr(adc0:4));
mdelay(300);
endloop;
end adc_test.