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.
There is no "sei();"...only in your post or in your program too?
Please post your full code! Is the ADC-Flag set? Can you use other intrrupts? julian
You don´t start ADC. ADCSRA = 0xCF; A better script is: ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
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
Log in with Google account
No account? Register here.