Hjelp ... Problem på ATMEGA8535

S

slutt

Guest
Hei ...

i simulere ADC ATMEGA8535 hjelp Proteus og kompilere C-kode med
Kode Vision AVR.

her er det skjematisk.

<img src="http://images.elektroda.net/56_1169724096.gif" border="0" alt="Help...Problem on ATmega8535" title="Hjelp ... Problem på ATMEGA8535"/>

Jeg prøver å lese analog inngang fra PORTA.0 benytter ledig kjører modus
og vise verdien til LCD-skjermen.

her er det c-koden ..

# include "mega8535.h"
# include "stdio.h"
# include "delay.h"
# include "lcd.h"
# asm / / Alfanumerisk LCD Module funksjoner
. EQU __lcd_port = 0x15
# endasm

unsigned int ADC_VALUE;

unsigned int read_adc (unsigned char adc_input)
(
ADMUX = adc_input;
ADCSRA | = 0x40;
while ((ADCSRA & 0x10) == 0); / / Vent til AD konvertering for å fullføre
ADCSRA | = 0x10;
return ADCW;
)

void main (void)
(
unsigned char sbuf [16];
unsigned int TEMP;

DDRA = 0x00;
DDRC = 0xFF;

lcd_init (16); / LCD-modul initialization

ADCSRA = 0x85;
SFIOR & = 0xEF;

mens 1 ()
(
ADC_VALUE = read_adc (0);

lcd_gotoxy (0,0);
sprintf (sbuf, "VALUE:% 4d", ADC_VALUE);
lcd_puts (sbuf);
delay_ms (10);

)
)kilden kompilert med CVAVR og simulere ved hjelp Proteus basert på skjemaet ovenfor.

simuleringen fungerer .. men verdien vises i LCD-skjerm (LCD dispay "1023" persistent) ikke endres når jeg endrer potensiometer verdi ..

hva er galt med koden min?Takk for hjelpen ....

 
Hei,
Programmet ditt angi ADMUX = 0, som betyr å bruke referanse spenning = AVref.Try å sette ADMUX | = 0x40 (referanse spenning = AVCC), jeg tror det vil være ok.

 
Ok ...takk for støtte

hvordan er koden hvis jeg bruker to kanals ADC (adc1) adc0, og vise

resultatet på LCD-skjermen

 
Hei,

den ADMUX registrere deg stille først i hoved-koden
void main ()
(
ADMUX = 0x40;
.......
mens 1 ()
(
/ / koden her
)

)

og i read_adc prosedyren, kan du skrive:

unsigned int read_adc (unsigned char adc_input)
(
.......
ADMUX & = 0xf0; / / clear siste adc_input
ADMUX | = adc_input;
.........
)

eller hvis du ikke trenger å init ADMUX i hoved-koden, kan du skrive:
unsigned int read_adc (unsigned char adc_input)
(
.......
ADMUX = adc_input | 0x40;
......
)

 

Welcome to EDABoard.com

Sponsor

Back
Top