Допомога ... Проблема в ATmega8535

G

Guest

Guest
Привіт ...

Я імітувати ADC ATMega8535 використанням Proteus та скомпілювати C код з
Код Vision AVR.

Ось воно схематично.

<img src="http://images.elektroda.net/56_1169724096.gif" border="0" alt=""/>

Я намагаюся читати аналогових входів з допомогою PORTA.0 режимі вільного ходу,
і відображення значення на РК-дисплеї.

Тут це з кодом ..

# Включити "mega8535.h"
# Включити "stdio.h"
# Включити "delay.h"
# Включити "lcd.h"
# АНМ / / Алфавітно-цифровий РК-модуль функції
. Equ __lcd_port = 0x15
# Endasm

Непідписані INT ADC_VALUE;

Непідписані INT read_adc (непідписані символ adc_input)
(
ADMUX = adc_input;
ADCSRA | = 0x40;
в той час як ((ADCSRA
І 0x10) == 0) / / Чекати оголошень перетворення для завершення
ADCSRA | = 0x10;
повернутися ADCW;
)

Основними недійсним (недійсними)
(
Непідписані символ sbuf [16];
Непідписані INT TEMP;

DDRA = 0x00;
DDRC = 0xFF;

lcd_init (16); / / LCD модуль ініціалізації

ADCSRA = 0x85;
SFIOR
І = 0xEF;

в той час як (1)
(
ADC_VALUE = read_adc (0);

lcd_gotoxy (0,0);
sprintf (sbuf, "значення:% 4D", ADC_VALUE);
lcd_puts (sbuf);
delay_ms (10);

)
)джерело зібраний з CVAVR і моделювання з використанням Proteus грунтується на схемі вище.

симуляції роботи .. но значення відображається на ЖК (LCD відображати "1023" послідовно) не змінюється при зміні potensiometer цінність ..

Що не так з моїм кодом?Дякуємо за допомогу ....

 
"123456" to nie tylko ciąg liczb pierwszych. Okazuje się, że to jedno z najczęściej używanych haseł w sieci. Specjaliści od bezpieczeństwa biją na alarm - większość internautów nie zdaje sobie sprawy, że dostęp do ich konta bankowego, serwisów społecznościowych i skrzynek mailowych jest zagrożony.

Read more...
 
Привіт,
Ваша програма установки ADMUX = 0, що означає використання довідкових напруга = AVref.Try встановити ADMUX | = 0x40 (посилання напруга = AVCC), я думаю, що це буде добре.

 
Ок ...Спасибо за поддержку

Як код, якщо я використовую два канали АЦП (adc0, adc1) і дисплей

результат на РК-дисплеї

 
Привіт,

ADMUX в реєстрі встановити перший в основний код
недійсним Main ()
(
ADMUX = 0x40;
.......
в той час як (1)
(
/ / Ваш код тут
)

)

і в read_adc процедури, ви можете написати:

Непідписані INT read_adc (непідписані символ adc_input)
(
.......
І ADMUX = 0xf0; / / Очистити останню adc_input
ADMUX | = adc_input;
.........
)

або якщо у вас немає необхідності ініціалізації ADMUX в основний код, ви можете написати:
Непідписані INT read_adc (непідписані символ adc_input)
(
.......
ADMUX = adc_input | 0x40;
......
)

 
ваша програма хороша, але ви повинні
зв'язали Ареф на
5 V

 

Welcome to EDABoard.com

Sponsor

Back
Top