Доброго времени суток. Подвернулась мне задача, запрограммировать авр так, чтоб после отправления цифрового сигнала в цап, в ответ приходил аналоговый сигнал. Этот сигнал сверялся с эталоном и если все верно, то зажигал первый диод, если ошибка, то второй, а если сигнал не пришел, то третий.
В программировании я не очень силен и по примерам сделал такой код.
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
void PORT_init()
{
PORTB=0xFF;
DDRB=0xFF;
PORTD=0xFF ;
DDRD |= (0<<PORTD.0)|(0<<PORTD.1)|(0<<PORTD.2);
}
void ADC_init()
{
ADCSRA = 0b10001110;
ADMUX = 0b01110000;
}
void main(void)
{
PORT_init();
ADC_init();
delay_ms(10);
ADCSRA |=(1<<ADSC);//Начать преобразование
delay_ms(10);
while ((ADCSR&0x10)==0);
ADCSR |=(0<<ADIF);
if (ADCL=0xFF)
{
PORTD.0=1;
delay_ms(100);
PORTD.0=0;
}
else
{
PORTD.1=1;
delay_ms(50);
PORTD.1=0;
}
delay_ms(100);
}
Код несколько отличается от поставленной задачи из-за того, что я пытался сделать хоть что-то) но и это что-то у меня не работает)
Ради теста я попробовал при отправке через порт B всех единиц, получить на АЦП сигнал, который равнялся бы всем единицам. Ну а дальше идет условие.
Очень прошу помощи. В протеусе говорит, что мой ацп заблокирован.
Раздел: AVR
В программировании я не очень силен и по примерам сделал такой код.
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
void PORT_init()
{
PORTB=0xFF;
DDRB=0xFF;
PORTD=0xFF ;
DDRD |= (0<<PORTD.0)|(0<<PORTD.1)|(0<<PORTD.2);
}
void ADC_init()
{
ADCSRA = 0b10001110;
ADMUX = 0b01110000;
}
void main(void)
{
PORT_init();
ADC_init();
delay_ms(10);
ADCSRA |=(1<<ADSC);//Начать преобразование
delay_ms(10);
while ((ADCSR&0x10)==0);
ADCSR |=(0<<ADIF);
if (ADCL=0xFF)
{
PORTD.0=1;
delay_ms(100);
PORTD.0=0;
}
else
{
PORTD.1=1;
delay_ms(50);
PORTD.1=0;
}
delay_ms(100);
}
Код несколько отличается от поставленной задачи из-за того, что я пытался сделать хоть что-то) но и это что-то у меня не работает)
Ради теста я попробовал при отправке через порт B всех единиц, получить на АЦП сигнал, который равнялся бы всем единицам. Ну а дальше идет условие.
Очень прошу помощи. В протеусе говорит, что мой ацп заблокирован.
Раздел: AVR