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
Nur zur Sicherheit: hast Du AVDD, AGND und AREF richtig angeschlossen?
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.
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 ;)
im TQFP Gehäuse. Es handelt sich um das Mega8 Mini Modul RS232 von http://www.katalog.embedit.de/index.html?controller.htm
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.
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.
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
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
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.
Hab's jetzt auch geschafft. War ein dummer Fehler beim Auslesen der AD-Werte. Vielen Dank nochmal an die angebotene Hilfe.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.