Приветствую форумчан!
Я новичок, поэтому сильно тапками не кидайтесь.
Подключил сабж, т.е. ATTiny 2313, шью через ардуино уно, всё шьётся замечательно. Написал скетч для дисплея 1602, работает. Есть идея сделать из аттини2313 вольтметр-амперметр для лаб. БП. Пытаюсь понять встроенный компаратор. Но не срабатывает прерывание. Использую инфу отсюда http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR400.htm
Прикладываю код (модуль для LCD не стал приводить, чтобы не загружать излишне). Подскажите, пожалуйста как правильно включить прерывания от компаратора с учетом того, что это компилятор ардуино. Да, и не предлагайте внешние АЦП и другой камень.
Я новичок, поэтому сильно тапками не кидайтесь.
Подключил сабж, т.е. ATTiny 2313, шью через ардуино уно, всё шьётся замечательно. Написал скетч для дисплея 1602, работает. Есть идея сделать из аттини2313 вольтметр-амперметр для лаб. БП. Пытаюсь понять встроенный компаратор. Но не срабатывает прерывание. Использую инфу отсюда http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR400.htm
Прикладываю код (модуль для LCD не стал приводить, чтобы не загружать излишне). Подскажите, пожалуйста как правильно включить прерывания от компаратора с учетом того, что это компилятор ардуино. Да, и не предлагайте внешние АЦП и другой камень.
C++:
// ATTiny2313
// LCD 4 bit
// D4 = PB4, D5 = PB5, D6 = PB6, D7 = PB7
// E = PD5, RS = PD6
//
// компаратор
// 12-я нога — RC-цепочка
// 13-я нога — измеряемый сигнал
// 14-я нога PB2 — выход вкл. заряда конденсатора
const byte opwait = 2; // универсальная задержка в мс
unsigned long m;
void setup () {
lcdInit();
lcdCursor(0, 0);
lcdPrint('T');lcdPrint('=');
lcdCursor(1, 0);
lcdPrint('U');lcdPrint('=');
ACSR = 0x0b;
TIMSK = 0x02;
DDRB |= 0x04; // включаем pb2 на выход
PORTB |= 0;
delay(50);
sei();
}
SIGNAL (SIG_COMPARATOR) {
m = micros - m;
PORTB |= 0x0; // выкл зарядку конд.
lcdCursor(0,4);
lcdPrint('*');
lcdCursor(1,4);
lcdPrintNum(m);
delay(5);
}
void loop () {
adcStart();
delay(500);
}
void adcStart () {
m = micros();
PORTB |= 0x04; // вкл зарядку конденсатора
}