من یه پروژه با 8051 دارم که در بخشی از اون لازمه صوتی رو پخش کنم.من از یه رام اکسترنال برای ذخیره ی داده های صوتی استفاده کردم.
برای تبدیل صوت به داده، اول فایل مورد نظر رو با فرمت wave و با فرکانس نمونه برداری 8 کیلو هرتز ذخیره کردم و بعد با استفاده از دستور wavread در متلب این صوت رو تبدیل به یه سری داده بین 0 و 255 کردم. بعد یه dac به 8051 متصل کردم و خروجی رو با استفاده از پ امپ تقویت کردم و به یه اسپیکر دادم.(البته در proteus!) برای تست یه برنامه نوشتم و بخشی از داده ها رو با استفاده از DB در رام خود میکرو ذخیره کردم،و هر 125میکروثانیه یه داده رو به dac فرستادم.مشکل اینه که وقتی فایل رو در proteus ران می کنم، از حالت real time خارج می شه و این پیغام خطا رو می ده:
simulation is not running in real time due to excessive CPU load
و طبعاً صدای مناسبی هم تولید نمی کنه.
جالب اینجاست که با بیشتر کردن تاخیر، این مشکل حل می شه ولی خب صدا به هم می ریزه.
لطفاً راهنماییم کنید.ممنون.
برای تبدیل صوت به داده، اول فایل مورد نظر رو با فرمت wave و با فرکانس نمونه برداری 8 کیلو هرتز ذخیره کردم و بعد با استفاده از دستور wavread در متلب این صوت رو تبدیل به یه سری داده بین 0 و 255 کردم. بعد یه dac به 8051 متصل کردم و خروجی رو با استفاده از پ امپ تقویت کردم و به یه اسپیکر دادم.(البته در proteus!) برای تست یه برنامه نوشتم و بخشی از داده ها رو با استفاده از DB در رام خود میکرو ذخیره کردم،و هر 125میکروثانیه یه داده رو به dac فرستادم.مشکل اینه که وقتی فایل رو در proteus ران می کنم، از حالت real time خارج می شه و این پیغام خطا رو می ده:
simulation is not running in real time due to excessive CPU load
و طبعاً صدای مناسبی هم تولید نمی کنه.
جالب اینجاست که با بیشتر کردن تاخیر، این مشکل حل می شه ولی خب صدا به هم می ریزه.
لطفاً راهنماییم کنید.ممنون.
دیدگاه