serial ADC를 말씀하시는군요.
MAXIM회사 제품(max1241)이 있습니다.
최대 sampling rate가 1MHz 까지 나온걸 본것 같네요.
즉 컨버전 타임이 1us이니깐 실제 측정주파수 대역은 100kHz는 됩니다.
사용방법은 시리얼과 SPI가 있습니다.
사용법은 쉬우니깐 자료들을 찾아보세요.
AVR에서 많이 사용하는 방법입니다.
참고예제입니다.
AVR을 이용한 코드비젼의 컴파일 예제임.... GCC로 바꾸면 될듯.



/*************************************************
Digital voltmeter using an
Maxim MAX1241 ADC
connected to an AT90S8515
using the SPI bus
The measured voltage is transmitted
through the STK500 RS232 interface
Communication parameters: 9600 8N1



Chip type : AT90S8515
Clock frequency : 3.686400 MHz
Memory model : Small
Internal RAM size: 512
External RAM size: 0
Data Stack size : 128
*************************************************

MAX1241 connections to the STK500:
[MAX1241] [PORTB header]
1 VDD - 10 +5V
2 Vin
3 /SHDN - 1 PB0
4 REF - 10 +5V
5 GND - 9 GND
6 DOUT - 7 MISO
7 /CS - 2 PB1
8 SCLK - 8 SCK

In order to use the RS232 SPARE connector
on the STK500, the following connections must
be made:
[RS232 SPARE header] [PORTD header]
RXD - 1 PD0
TXD - 2 PD1

NOTE: AFTER PROGRAMMING THE CHIP, DISCONNECT
THE 6-WIRE PROGRAMMING CABLE FROM THE SPROG3
HEADER
*/

#include <90s8515.h>

// Standard Input/Output functions
#include

// SPI functions
#include

// delays
#include

// MAX1241 Voltage Reference [mV]
#define VREF 5000

// MAX1241 control signals definitions
#define NSHDN PORTB.0
#define NCS PORTB.1
#define DOUT PINB.6

union adcu
{
unsigned char byte[2];
unsigned int word;
};

// Make one AD conversion and return the value
unsigned int max1241_read(void)
{
union adcu adc_data;
// exit MAX1241 from shutdown
NSHDN=1;
// wait 5us for the MAX1241 to wake up
delay_us(5);
// now select the chip to start the conversion
NCS=0;
// wait the conversion to complete
// DOUT will be 0 during conversion
while (DOUT==0);
// DOUT=1 -> conversion completed
// read MSB
adc_data.byte[1]=spi(0);
// read LSB
adc_data.byte[0]=spi(0);
// deselect the chip
NCS=1;
// enter shutdown
NSHDN=0;
// now format the result and return it
return (adc_data.word>>3)&0xfff;
}

void main(void)
{
// store the conversion result here
unsigned n;

// Input/Output Ports initialization
// Port A
DDRA=0x00;
PORTA=0x00;

// Port B
// the /SS pin is set as an output
// with level 1, it's required by
// the SPI to work in master mode
DDRB=0xA3;
PORTB=0x12;

// Port C
DDRC=0x00;
PORTC=0x00;

// Port D
DDRD=0x00;
PORTD=0x00;

// UART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// UART Receiver: Off
// UART Transmitter: On
UCR=0x08;
// UART Baud rate: 9600 @ 3.6864 Mhz
UBRR=23;

// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 921.6 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x50;

putsf("MAX1241 Demo using the CodeVisionAVR C Compiler");
putsf("***********************************************
");

// Make AD conversions and send the results to RS232
while (1)
{
n=max1241_read();
printf("MAX1241-> N=%4u U=%4umV
",n,(unsigned) ((long)
n*VREF/4096));
// 0.3 sec. delay
delay_ms(300);
};
}


serendip wrote..
: 어떻게 하셨는지 이야기좀 해주세요.
: A/D변환칩을 써야할듯 한데..변환된 값을 시리얼로 출력해주는 칩이 있다고 하
: 는데..
: 최대 250us주기 동안에 입력 받아야 하는데..시리얼로 받았을때 늦지 않을 지
: 걱정되네요.
: 또..병렬 입력은 여러가지를 생각해 주어야 할것 같고...
: 암튼 해보신 분들..이야기 좀 해주세요~ ^^;;
:
: 추가 질문:
: 74hc245를 써서 GPIO출력을 3V에서 5V 출력으로 바꾸어 주는데요.
: 주기가 길면 괜찮은데...250us정도의 주기에서는 5V로 변환된 출력에...
: 5V에서 4V정도로 노이즈(???노이즈가 아닌데..5V와 4V가 아주 적은 간격으 로
: 오실레이션하는것.;;;.학생입니다. 죄송합니다.__;;)..
: 회로를 추가 해야 되는지..
: 245말고 다른 칩을 쓰면 될까요?