Icecap skrev:Jag skulle tro att det har med namnen 'ADMUX' och 'adcsra' att göra, de kanske är så att de hänger på någon macro eller egentligen ska heta något annat.
Kolla din definitionsfil om den finns i ren text.
Ja, jag har tittar i definitionsfilerna och där är allt minst sagt förvirrande. I databladet till mega48/88 anges "ADMUX" och "ADCSRA" som "portar", dvs de skrivs och läses precis som DDRB, etc.
Efter massvis med surfande och rotande i datablad samt definitionsfiler framstår allting än mer oklart. Ibland tycks ADMUX vara ett register, varvid "LDI ADMUX,nn" torde fungera. Men icke. För de flesta µC förefaller ADMUX vara (port eller register) med adress 0x07, men ibland 0x7C.
På det hela taget blir jag inte klok på detta. Det jag vill göra är ytterst enkelt: Koppla en potentiometer till valfri förbannad pinne på min mega88 och skriva ut det "digitaliserade" värdet på lysdioderna på min STK500. (Edit: En källkodsdump, i asm, för detta - med eller utan "ADblabla" - mottages tacksamt!)
Så här ser m88def.inc (som ligger i katalogen 'appnotes' - konstigt ställe):
...
.equ ADMUX =$7C
...
Lite längre ner i samma fil finns följande grekiska:
;**********AD_CONVERTER***************
;ADMUX:
.equ REFS1 =7
.equ REFS0 =6
.equ ADLAR =5
.equ MUX3 =3
.equ MUX2 =2
.equ MUX1 =1
.equ MUX0 =0
och i m103def.inc ser det ut om följer:
...
.equ ADMUX =$07
.equ ADCSR =$06
...
I databladet för "48/88/168" är ADMUX $7C, men jag har inte klart för mig om det är en minnesadress, port eller konstant.
I korthet: Jag tycks inte kunna ställa in bitar i ADMUX. Varesig med "out", "ldi", "sbi" eller "sbr".
Edit2: Efter uppgradering till Studio 4.11 får jag ett annat fel:
out ADMUX,temp ger "Operand 1 out of range: 0x7C".