я пишу на avrstudio.
помогите разобраться, а то уже два месяца мучаюсь.
код прилагаю.
и как вообще подключать >1 датчика на ацп.
- Код: Выделить всё • Развернуть
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#define BACKWARD ((0 << PC0)|(1 << PC1)|(1 << PC2)|(0 << PC3))
#define FORWARD ((1 << PC0)|(0 << PC1)|(0 << PC2)|(1 << PC3))
#define STOP ((1 << PC0)|(1 << PC1)|(1 << PC2)|(1 << PC3))
#define MOTOR_PORT PORTC
ISR(ADC_vect)
{
if (ADCH == 0)
{
MOTOR_PORT = STOP;
DDRB = 1 << PB0;
PORTB = 1 << PB0;
}
else
{
DDRB = 0 << PB0;
MOTOR_PORT = FORWARD;
}
}
void init()
{
//////////PortC Initialization////////////////////////
DDRC = (1 << PC0)|(1 << PC1)|(1 << PC2)|(1 << PC3);
PORTC = (1 << PC0)|(1 << PC1)|(1 << PC2)|(1 << PC3);
//-----------------------------------------------------
//////////PortD Initialization/////////////////////////
DDRD = (1 << PD4)|(1 << PD5);
PORTD = 0;
//-----------------------------------------------------
//////////Timer 1 Initialization//////////////////////
TCCR1A = (1 << COM1A1)|(1 << COM1B1)|(1 << WGM10);
TCCR1B = (1 << WGM12)|(1 << CS10);
TCNT1 = 0;
OCR1A = 0;
OCR1B = 0;
//-----------------------------------------------------
//////////ADC0 Intitialization////////////////////////
ADMUX = (1 << ADLAR);
ADCSRA = (1 << ADEN)|(1 << ADATE)|(1 << ADSC)|(1 << ADIE)|(3 << ADPS0);
//----------------------------------------------------
MOTOR_PORT = STOP;
};
int main(void)
{
init();
sei();
while(1)
{
OCR1A = ADCH;//здесь будет ПД регулятор на 2 датчика
OCR1B = ADCH;//
};
}
заранее всем большое спасибо.