Hallo,

Ik heb wat problemen met het uitlezen van de analoge poorten die op de ATmega16 zitten.

Ik heb een programma geschreven in C waarmee ik wel 1 analoge poort kan uitlezen. Maar weet niet op welke manier ik alle 8 de uitgangen appart van elkaar kan uitlezen. Ik maak gebruik van de gereserveerde register.

#include <mega16.h>

#define storing0 PORTD.0

interrupt [ADC_INT] void adc_isr(void) //ADC ISR
{
unsigned int adc_data;

adc_data = ADCW;

if (adc_data > (3*1023)/5)
storing0 = 1;
else
storing0 = 0;

ADCSRA = ADCSRA | 0x40;
}

void main(void)
{
DDRD = 0x03;
ADMUX = PORTA.0;
ADCSRA = 0xCE;

#asm("sei" )

while (1)
;

}

Ik hoop dat iemand mij kan helpen hiermee???

Ondanks Google, datasheets enzovoort....

Je moet MUX4..0 zetten zodat gewenste kanaal ingelezen
wordt. Zie ook hoofdstuk ADC van de AtMega16
datasheet.

Zal er wel op neer komen dat je in ADMUX register
de MUX4..0 zet. Als je dit doet aan einde van je ADC
interrupt, dan wordt goede kanaal gezet verwacht ik.
Pas even op met de andere bits in ADMUX.... (zie
ook stukje hieronder over zetten bits)...

Globaal tellertje ophogen, controle erop of ie
te groot is, dan terug zetten.

Lees even de datasheet goed door, dan moet het
verder wel lukken......

Overigens,

zoiets is lala om te lezen -> ADCSRA = ADCSRA | 0x40;
Beter is het om zo te werken -> ADCSRA = (1<<ADSC)

Instellen ADC ook door ADCCSRA = (1<<ADIE) enzovoort.
Na twee dagen weet je echt niet meer waar CE voor staat :-)

Robert

Robert bedank dat je zo snel wilde reageren. Ik ga het meteen proberen en aanpassen. :D

Gr. Dennis

Kleine correctie

Beter is het om zo te werken -> ADCSRA = (1<<ADSC)

=

ADCSRA |= (1<<ADCS)

| is orren..... Anders worden alle andere bits gereset..
Wat ongewenst resultaat of helemaal geen
resultaat heeft :+.

Robert

Voor hen die met AVR-GCC en ATmel aan de slag willen,
hier staat duitstalig e.e.a. beknopt doch goed
beschreven.

Vooral voorbeelden voor instellen van de HW,
zoals bijvorbeelde de ADC...

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Robert