ADC Initialisierung bei Mega8

Gast #21599
Lesenswert?

Hallo zusammen,
ich habe schon öfters hier im Forum geblättert. Da ich jetzt vor einem 
konkreten Problem stehe, habe ich mich eingeklinkt. Vielleicht kann mir 
jemand bei meinem trivialen Problem (für Profis in dieser Materie) 
helfen.
Habe ein Board mit Mega8, der mit 16MHz getaktet wird. Soweit 
funktioniert auch alles. Wollte jetzt den ADC mal testen und probieren, 
bekomme ihn aber nicht zum laufen. Auch nicht mit der Simulation beim 
Studio.
Kann Studio den ADC nicht simulieren (Auf Eingang einen Analogwert 
geben) oder was mache ich falsch? Ich beschreibe die Register ADCSR mit 
0hE7 und das Reg. ADMUX mit 0h00.
Bitte um Eure Hilfe.
mfg
Hubert
Gast #21605
Lesenswert?

Hm, das Modul kenn ich natürlich (habs ja entwickelt :).
Hab grad zusammen mit dem Prototypen des dazu passenden Application 
Boards einen Test gemacht. Alles funktioniert wie erwartet. Leider kann 
ich Dir bei der Initialisierung in ASM oder C (noch) nicht helfen, da 
ich derzeit in Pascal programmiere.
Das sieht dann in etwa so aus (das Display wird über I2C angesteuert):

program LCDTest;

{ $BOOTRST $00C00}         {Reset Jump to $00C00}
{$NOSHADOW}
{ $W+ Warnings}            {Warnings off}

Device = mega8, VCC=5;

Import SysTick, ADCPort, LCDmultiPort, TWImaster;

From System Import ;

Define
        ProcClock    = 16000000;       {Hertz}
        SysTick      = 10;             {msec}
        StackSize    = $0064, iData;
        FrameSize    = $0064, iData;
        ADCchans     = 2, iData;
        ADCpresc     = 128;
        TWIpresc     = TWI_BR400;
        LCDmultiPort = I2C_TWI;
        LCDrows_M    = 4;             {rows}
        LCDcolumns_M = 16;            {columns per line}
        LCDtype_M    = 44780;

Implementation

{$IDATA}

{--------------------------------------------------------------}
{ Type Declarations }

type


{--------------------------------------------------------------}
{ Const Declarations }


{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
var
   temp      : word;
   LCD_num   : TLCD_num;
   st1       : string[10];


{--------------------------------------------------------------}
{ functions }



{--------------------------------------------------------------}
{ Main Program }
{$IDATA}

begin
  LCDsetup_M(LCD_m2);
  LCDcursor_M(LCD_m2, true, false);
  EnableInts;
  loop
      temp:=GetADC(1);
      st1:=IntToStr(temp);
      LCDClr_M(LCD_M2);
      write(LCDOut_M, st1);
      mDelay(10);
  endloop;
end LCDTest.

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