Ок но это уже не быстро, счас буду думать где найти источник с приемлемым уровнем.
Добавлено after 1 minute 5 seconds:
если с компьюетра гнать, то нужен усилок, посмотрю где-то уменя что то было
Добавлено after 26 minutes 44 seconds:
[uquote="roman.com",url="/forum/viewtopic.php?p=4244853#p4244853"]
olegue что ты хочешь... не пойму))
писать два канала сразу ?
кто мешает ?)) делай "переключатель" каналов и пиши сразу два канала))
сделай две функции...
// включаем канал номер 0
void Setup_ADC_0() {
ADMUX = 0x60; // set ADC to read pin A5, ADLAR to 1 (left adjust)
cbi(ADCSRA, ADPS2); // set prescaler to 8 / ADC clock = 2MHz
sbi(ADCSRA, ADPS1);
sbi(ADCSRA, ADPS0);
}
// включаем канал номер 1
void Setup_ADC_1() {
ADMUX = 0x61; // set ADC to read pin A5, ADLAR to 1 (left adjust)
cbi(ADCSRA, ADPS2); // set prescaler to 8 / ADC clock = 2MHz
sbi(ADCSRA, ADPS1);
sbi(ADCSRA, ADPS0);
}
// в прерывании таймера переключаем каналы...
ISR(TIMER2_COMPA_vect) {
recByteCount++; // increment sample counter
bufByteCount++;
if (bufByteCount == 64 && bufWrite == 0) { bufByteCount = 0; bufWrite = 1;
} else if (bufByteCount == 64 & bufWrite == 1) { bufByteCount = 0; bufWrite = 0; }
if (bufWrite == 0) {
Setup_ADC_0(); // включаем канал номер 0
sbi(ADCSRA, ADSC); // start ADC sample
while (bit_is_set(ADCSRA, ADSC)); // wait until ADSC bit goes low = new sample ready
buf00[bufByteCount] = ADCH;
}
if (bufWrite == 1) {
Setup_ADC_1(); // включаем канал номер 1
sbi(ADCSRA, ADSC); // start ADC sample
while (bit_is_set(ADCSRA, ADSC)); // wait until ADSC bit goes low = new sample ready
buf01[bufByteCount] = ADCH;
}
}
чёто намудрили с буферами)))[/uquote]
может все таки вот это попробовать. Как по мне так вполне годный код. В прерывании просто переключаем каналы АДС
Добавлено after 1 minute 24 seconds:
почему это может не работать?
Добавлено after 3 minutes 18 seconds:
или вообще сделать 2 таймера и пускай каждый делает свое дело