Помогите разобраться со скоростью передачи данных от Atmega8 на порт ПК (Rs-232). Запрограммировал АЦП в данном МК. Все работает, только даны паредаються очень медленно
?
. Мне нужно оцифровать частоту 50 герц с как можно большим количеством точек. У меня работает со скоростью около 1000 точек за секунду. Мне нужно около 10000 точек - в этом и собственно проблема. Программу писал в Codevisionavr.
В проекте использовал скорость 57600 бод посколько ето максымальная скорость сымуляции RS-232 в Proteus. На практеке хочу использовать 115200 бод. Даныє буду слать на растояныє 1-0,5 метра (максимум на 2,5 м). вполне достаточно и скорости 1000 точек/сек. Но моя задача посложнее. Нужно считать форму сигнала 50 гц максимально точно, вплоть до точного перехода через ноль.
Тоесть мне нужно считать несколько периодов (не болише 3-5) с максималим количеством течек (чтоби увидеть наименьшие импульсы).
В будущем можно сделать цифровой осцилограф.
Вот сама программа.
Код:
#include ‹mega8›
#include ‹delay›
#include ‹stdio›
#define ADC_VREF_TYPE & 0xff;
interrupt [ADC_INT] void adc_isr(void){
printf("%d ",ADCW); // печатаем в УАРТ значение регистра ADCW
putchar(0x0D); // на новую строку УАРТА
}
void init(void){
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 57600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x0C;
ADMUX=0x0b00000000; // вибираем 0-й канал АЦП
ADCSRA=0x0b10001011; // конфигурация АЦП
#asm ("sei"); // разрешить все переривания
}
void main(void)
{
init(); // визов функции int (инициализация всего)
while(1){
ADCSRA=0b11001011; // включаем непреривное АЦП преобразование
}
}