Hallo,

Ik ben nieuw met de stk500.
Ik gebruik momenteel de ATMEGA8.
Ik ben al een tijdje aan het "leren" werken met het bord.
Heb ondertussen gevonden hoe ik de ledjes kan aansturen en de schakelaars kan inlezen.
Nu ben ik bezig met het gebruik van de ADC.
ik heb volgend programma geschreven:

#include <iom8v.h>
#include <macros.h>

void main()
{
int geheugen;
DDRB = 0xFF;
PORTB = 0xFF;
DDRC = 0x00;
ADCSR = 0x00;

// disable adc, adc moet afgezet worden voordat men deze
// kan instellen, daarna kan ze terug opgezet worden

ADMUX = 0b01100000;

// select adc input 0 zie datasheet pagina 203 hoe
// andere kanalen kunnen geselcteerd worden
// eerste bits dienen om VREF en

ACSR = 0x80;

// Analog Comperator Controle en status
// registor: BIT7 ACD staat hoog, dus ADC enabled

ADCSR = 0xE1;

// 11100001 => Bit7= opzetten adc, Bit6 = Start conversie,
// BIT5 = Free running mode; BIT4 = ADC interup flag, deze
// wordt geset als de conversie is gedaan en status gerister
// geupdate, BIT3 = ADC interup enable, BIT2 tem BIT0 = Prescaler
// select bits, bepaald de waarde van de delingsfactor van de
// clockfrequentie en de input clock vna de adc=>
// devisionfactor = 2 (zie datasheet pagina 205 )
while (1)
{
PORTB = ~ADCH;
}
}

Ik zie de ledjes veranderen naarmate ik de ingangspanning verander. Maar ik dacht door ADLAR = 0 te zetten ik gewoon het ADCL register kan lezen en dit binair getal via de ledjes op het stk500 bord naar buiten te brengen. Zo kan ik dan controleren ofdat de analoge spanning die ik ingeef overeenkomt met de binaire waarde die ik verwacht.
Maar dit lukt dus niet. Enkel bij de instelling als hierboven krijg ik een binaire waarde naar buiten, maar die klopt helemaal niet met mijn berekeningen.
Kan iemand mij helpen, wat doe ik fout.
Ik gebruik imagecraft.

Bedankt!

Hallo,

Ik denk dat ik de fout gevonden heb.
Eerst moet ADCL uitgelezen worden en dan ADCH.
Pas als ADCH wordt gelezen wordt het ADC dataregister terug geupdate.
Nu nog controleren ofdat de gegeven binaire waarde van de adc overeenkomt met de berekende waarde.
Via AVR studio 4 kan ik toch de referentiespanning lezen en aanpassen in het tabblad BOARD.
Dus als deze op 5V staat => 5/1024 = 0,0048828V.
Dus 0000000001 komt overeen met 0,0048828V?