EmbDev.net

Forum: µC & Digital Electronics Atmega1280: ADC-Interrupt-Vector is not called


von Ingo Heffe (Guest)


Rate this post
useful
not useful
Hello,

during first experiments with an Atmega1280 (powered with 5V at 16Mhz) I 
encountered one problem with the ADC-interrupt, although I followed the 
specification :
The interrupt vector is not called although I enabled ADC functionality, 
it's interrupt and the global interrupt, additionally I set the 
ADSC-flag to
initiate the conversion, register settings:

DIDR0 = 0xFF ;    -> digital inputs disabled
DIDR2 = 0xFF ;    -> digital inputs disabled
ADCSRA = 0x8F;    -> ADEN, ADIE , prescaler 128, ADSC set at conversion 
start
ADCSRB = 0 ;
ADMUX = 0 ;       -> AREF used

Did I miss any specification detail ?
It would be very helpful if someone could give me a hint what might be 
the cause for this.

von Dadieter (Guest)


Rate this post
useful
not useful
There is no "sei();"...only in your post or in your program too?

von Ingo Heffe (Guest)


Rate this post
useful
not useful
The sei() is in my main init function.

von Julian R. (tuefftler)


Rate this post
useful
not useful
Please post your full code!
Is the ADC-Flag set? Can you use other intrrupts?

julian

von Hubert G. (hubertg)


Rate this post
useful
not useful
You don´t start ADC.
ADCSRA = 0xCF;
A better script is:
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);

von Ingo Heffe (Guest)


Rate this post
useful
not useful
Finally the root cause could be identified as a RAM mapping problem 
allocating the used application's RAM into the extended register 
section.
This issue is solved now just by adding the following options to the 
linker:
-Wl,-Map=$(TARGET).map -Wl,-Tdata,0x800200 -o $@ $(OBJS).

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.