Добрый день.
Я новенький в программировании контролеров. Но мне очень нравиться.
Я столкнулся с проблемой. Не могу считать значения с АЦП.
Изначально задуманная программа была такая: управление мотором(5В) переменным резистором через МК, естественно с помощью ЩИМ. ТО есть: кручу потенциометр в одну строну обороты увеличиваются - в другую уменьшаются.
С ШИМом я заробрался. Вот застрял на АЦП.
Я написал программу для считывания значения с 0-го входа АЦП, и вывод значения на ЖКИ(LM016). Ничего не выводи.
Вот текст:
#include <mega8.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x00
#include <lcd.h>
#include <stdio.h>
#asm
.equ __lcd_port=0x18
#endasm ;
int t;
char *str;
// Read the AD conversion result
unsigned int read_adc(void)
{
ADMUX=00000000;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
// Declare your global variables here
void main(void)
{
// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
while (1)
{
t=read_adc();
sprintf(str,"%",t);
lcd_init(16); //инициализация экрана на 16 символов
lcd_gotoxy(0, 0); //установка курсора в точку (0,0)
lcd_puts(str); //вывод строки
}
}
Пожалуйста, помогите юному инженеру)