ايران ويج

نسخه‌ی کامل: نمونه برداری صوت با avr
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
با سلا م خدمت دوستان
ببخشید من میخوام از سیگنال صوت با adc نمونه برداری کنم کسی
میتونه کمک کنه؟
مشکل کجاست؟ باید تو ثانیه مثلا 8000 تا نمونه بگیری
تو پروتیوس من یک جوابای نصفه نیمه گرفتم ولی خوب کافی نیست
من فکر میکنم اگه بتونم سیگنال صوت رو به pick to pick 5 ولت برسونم بعد یه offset 2.5 ولت بهش بدم کارم حل بشه
فقط میمونه کارای نمو نه برداری با میکرو
برای تنظیمات code wizard میتونی راهنماییم کنی؟
و سوال دیگه اینکه 8 بیت برا صوت کافیه؟
8 بیت خوبه ولی با adc میکرو در بهترین حالت 4000 sسمپل نموتونی برداری
ممنونم
ببخشید چون من این نمونه برداریو برای ارسال بی سیم با usart میخوام
میتونید در نحوه ی نوشتن برنامه راهنماییم کنید
با code vision
یا علی
:?:
نحوه نوشتن برنامه که کار سخت ینیست ولی مشکل اینجاست که این سرعت رو نه پورت سریال به این راحتی ها قبول می کنه نه اون ارسال کننده ای که می خوای بفرستی
برای برنام هم تنها مشکلی که پیش می یاد بهم ریختن سرعت نمونه برداری که اون رو هم توی قسمت گیرنده اگه بافر کنی درست می شه
البته این هم که گفتم بستگی به فرستنده داره اگه اختلاف زمانی برای ارسال هاش نداشته باشه مشکلی نیست
مثلا 8000 تا نمونه می شه 8000*10 بیت سرعت ارسال که می شه 80Kb/s یعنی باید با سرعت بیشتری بفرستی تا داده ها این طرف روی هم جمع نشن
یعنی از نظر شما غیر ممکنه؟
میشه بیشتر توضیح بدید
متشکرم
غیر ممکن که نیست گفتم کار راحتی نیست باید اگه می خوای سریال بفرستی یه فرستنده پیدا کنی که بتونه با این سرعت ارسال کنه همین
توضیح بیشتر هم نمی دونم با کجاش مشکل داری که برات توضیح بدم
سلام
ببین دوست من
من نمونه برداریو جواب گرفتم
usart رو هم راه انداختم
ولی نمیدونم این دو تا رو چه جوری به هم لینک کنم
برنامه ای که نوشتم هم اینه
برنامه ADC


#define ADC_VREF_TYPE 0xE0
unsigned char read_adc(unsigned char);
void main(void)
{
unsigned char channel;
DDRC=0xFF;
//DDRC=0x00;
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x86;
SFIOR=0;
channel=0;
while(1)
{PORTC=read_adc(channel);
};
}
//-----------------------------
unsigned char read_adc(unsigned char channel)
{
ADMUX=channel|ADC_VREF_TYPE;
ADCSRA.6=1;
while(!(ADCSRA.4));
return ADCH;
}
این هم برنامه usart:
unsigned char am,bm,data;


wh ile 1
{

am=read_adc(0);
putchar(am);
data=getchar();
PORTC=data;


};
}

حالا چه جوری اینا رو به بچسبونم
جفتش هم جواب داده
یا علی
این مگه کار نمی کنه؟
کد:
while 1
{

am=read_adc(0);
putchar(am);
};
}
این هر دوشه دیگه می خونه و می فرسته نمی دونم دقیقا جی رو می خوای؟
البته این کارو اگه با یه تایمر انجام بدی صدای با کیفیت بیشتری رو خواهی داشت
بعنی به جای while این ور توی وقفه یک تایمر بنویس
صفحه‌ها: 1 2 3