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 #21602
Lesenswert?
• ▲
▼
denke schon:
AVDD direkt an +5V Versorgung, AGND auch direkt an GND und AREF wieder 
direkt an +5V.
Muss ich ev. beim schreiben in die beiden Reg. ADCSR und ADMUX eine 
best. Reihenfolge beachten?

Bin für jede Hilfe dankbar.
Gast #21603
Lesenswert?
• ▲
▼
Womit programmierst Du eigentlich? ASM oder C? Und verwendest Du einen 
Mega8 im DIP oder TQFP Gehäuse? Beim DIP fehlen ja zwei Eingänge. Nicht, 
das du versuchst die zu verwenden ;)
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.
Gast #21606
Lesenswert?
• ▲
▼
Ja hallo - so trifft man sich wieder.

Programmiere in Assembler mit AVR-Studio. Mit Pascal hab ich eigentlich 
gar nix am Hut. Aber ist egal.
Werde heut abend noch mehrere Versuche machen und vielleicht bekommt ich 
es in den Griff.
Sonst hoffe ich, darf ich noch weiter lästig sein.
Gast #21607
Lesenswert?
• ▲
▼
Klar. Das Support Forum befindet sich eigentlich auf www.embedit.de, 
aber ich bin ja nicht so ;)
Wenns aber um Hardwaresachen oder Pascal Programmierung geht sollte man 
aber schon dort posten
Gast #21608
Lesenswert?
• ▲
▼
Hubert schau dir das Datenblatt mal genauer an. Da hat sich was mit den 
Registern geändert also nicht mehr ADCSR sondern ADCSRA... 0hE7 müsste 
aber gehen. Aber nagel mich nicht drauf fest-'hab eben keinen Zugriff 
auf meine Codes.

Gruß Bernhard
Gast #21609
Lesenswert?
• ▲
▼
Ja, danke das ist mir schon aufgefallen und hab dies auch kontrolliert.
ADCSRA ist im Datenblatt angegeben und ist auf der I/OAdr:0h06. Im 
Studio wird der Name ADCSR erwartet (M8def.inc) und verweist auch auf 
die I/O Adr: 0h06.
Also das stimmt schon zusammen.

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