ВСем привет! нитак давно я создавал темку по поводу своего устройства, еще раз в кратце:машина заводится с автозапуска(ваз2111), подает питание на устройство, вкл. и ждет пока температура двигателя не поднимится до 50 градусов, после через реле включает подогрев сидений, когда 70С - печку (заведомо подключаем к 1 скорости). Ну и работает до тех пор пока не сяду в машину и не нажму кнопоку. Чтобы потом самому вкл что надо и конролировать.
вот с общими усилиями и советами что получилось по схеме:
http://s014.radikal.ru/i327/1010/36/84eac75a211e.jpg
а вот сам код к этой погремушке:
#include ‹mega32.h›
#include ‹delay.h›
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 0
unsigned char adc_data[FIRST_ADC_INPUT-LAST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x20
interrupt [ADC_INT] void adc_isr(void) //стандартное прерывание по ADC от CVAVR
{
static unsigned char input_index=0;
// Read the 8 most significant bits
// of the AD conversion result
adc_data[input_index]=ADCH;
// Select next ADC input
if (--input_index › (FIRST_ADC_INPUT-LAST_ADC_INPUT))
input_index=0;
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))-input_index;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
}
void main(void)
{
//Порт В настройка
PORTC=0x00;
DDRC=0xFF; // весь порт на выход
// Port D настройка
PORTB=0x00;
DDRB.0=0x00; // весь порт как вход
ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);
ADCSRA=0xCC;
#asm("sei")
PORTC.4=1; // светодиод горит постоянно, показывает что устройство работает
while (1) {
if(adc_data[LAST_ADC_INPUT]‹205) PORTC.0=1; //Приблизительно 50 град.
else PORTC.0=0;
if(adc_data[LAST_ADC_INPUT]‹204) PORTC.2=1;
else PORTC.2=0;
if(adc_data[0]‹21) PORTC.1=1; //Приблизительно 70град.
else PORTC.1=0;
if(adc_data[0]‹21) PORTC.3=1;
else PORTC.3=0;
if (PINB.0==1) goto den; //нажатие на кнопку выводит из цикла
else PINB.0=0; //и ведет к снятию нагрузок
};
den:
while (2){ // постеперное сняти нагрузок с интервалом
PORTC.0=0;
PORTC.2=0;
delay_ms(2000);
PORTC.1=0;
PORTC.3=0;
delay_ms(2000);
PORTC.4=0;
}
}
вопросы в следующем:
как подключить AVCC и AFER через дросель и кондей, как в даташите написано. В протусе приблуда работает только когда они вместе запитаны. запутался немножко.
вывод RESET , правильно подключил или же добавить кондей на 0.1 мкф и диод
1n4148.
коректен ли код для всего вышеперечисленного?
как себя будет вести штука в холода, когда тачку с автозапуска буду заводить, т.е быстрый нагрев будет с отрицательных до положительных температур с салоне авто(ваз2111).