olegue писал(а):мне с этой же частотой в сериал гнать результат преобразования АЦП?
да.
olegue писал(а):Или отправлять в сериал по 512 байт и тогда думать как их правильно складывать на стороне ПК?
лучше отправлять по 1 байту.
ISR(TIMER2_COMPA_vect) {
ADMUX = 0x61; // set ADC to read pin A1, ADLAR to 1 (left adjust)
sbi(ADCSRA, ADSC); // start ADC sample
while (bit_is_set(ADCSRA, ADSC)); // wait until ADSC bit goes low = new sample ready
Serial.println(ADCH);
recByteCount++; // increment sample counter
bufByteCount++;
if (bufByteCount == 128 && bufWrite == 0) {
bufByteCount = 0;
bufWrite = 1;
} else if (bufByteCount == 128 & bufWrite == 1) {
bufByteCount = 0;
bufWrite = 0;
}
if (bufWrite == 0) {
buf00[bufByteCount] = ADCH;
}
if (bufWrite == 1) {
buf01[bufByteCount] = ADCH;
}
порядок такой:
1-настройка АЦП.
ADMUX = 0x61; // set ADC to read pin A1, ADLAR to 1 (left adjust)
2-запуск преобразования АЦП.
sbi(ADCSRA, ADSC); // start ADC sample
3-ждём окончания преобразования АЦП.
while (bit_is_set(ADCSRA, ADSC)); // wait until ADSC bit goes low = new sample ready
4-как только преобразование закончится сразу отправляем 1 байт в сериал.
Serial.println(ADCH);
*вместо Serial.println(ADCH); можно написать просто UDR = ADCH;
UDR - это регистр сериал. Как только мы записываем в регистр UDR данные, то сериал автоматически переходит в режим передачи 1 байта.
Но прежде чем гнать данные по сериалу надо сначала настроить скорость сериала.
А какая нам нужна скорость ?
Считаем:
16кгц это частота семплов. Или 16.000 байт/c.
сериал - это один байт: 1 стартовый бит + 8 бит данных + 1 стоповый бит = 10 бит.
а нам надо гнать 16.000 байт/c.
значит минимальная скорость сериала должна быть 16.000 х 10 = 160.000 бит/с. (или 160 кбит/c)
что бы сериал нормально работал (без ошибок) скорость сериала должна быть в полтора раза (а лучше в 2 раза) больше...
т.е. нам нужна скорость 250.000 бит/c. (или 250 кбит/c)
Ардуина поддерживает скорость 250 кбит/c ?
Максимальная скорость сериала зависит от кварца...
В Ардуино стоит кварц 16 МГц...
Открываем даташит...
да, с кварцем 16 МГц максимальная скорость сериала 1 Мбит/с. (а в режиме удвоенной скорости 2 Mбит/с).
значит на 250 кбит/c должно работать нормально))
правда... с такой высокой скоростью по сериалу мы ещё не передавали )) надо проверить на практике...

када делали радиоуправление...
https://www.radiokot.ru/forum/viewtopic ... 8&t=185219
мы гнали по сериалу со скоростью в несколько раз меньше))
https://www.radiokot.ru/forum/download/ ... ?id=356834
это потому что у нас не было кварца 16 МГц... приходилось снижать скорость))
а теперь самый главный вопрос... подключение к ПК... ))
на ПК мы можем запустить программу "терминал" и посмотреть наши байты... 16.000 байт/c.
правда в терминале почему то нет скорости 250 кбит/c...
странно...
а теперь самый главный вопрос... мы хотим просто посмотреть данные на ПК ?
или послушать звук на ПК ?
если мы хотим послушать звук на ПК... то у меня нет программ для ПК которые воспроизводят звук по сериалу ))
у меня все программы на ПК работают по Ethernet (или Wi-Fi)... короче только по Интернету...
по сериалу они не работают))
