NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4521 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 4 از 4

موضوع: wave player

  1. #1
    کاربر علاقه مند wiki آواتار ها
    تاریخ عضویت
    Feb 2010
    نوشته ها
    54
    تشکر
    74
    تشکر شده 32 بار در 15 پست

    پیش فرض wave player

    سلام
    دوستان مدتي است دنبال ساخت موزيك پلير با avr هستم با توجه به تحقيقاتي كه كردم اكثرا فرمت wave را براي اينكار معرفي كردن منتها من مداراتي در اين زمينه پيدا كردم كه برايم يك سئوال ايجاد كرده اينكه بعد ازاينكه فرمت موزيك را از كارت حافظه mmc ميخواند انرا مستقيما توسط ميكرو به بلندگو متصل ميكند با اينكه در برنامه از pwm استفاده كرده يعني درواقع موج مربعي ،اما چطوري امكان داره اين موج مربعي را بتونيم بشنويم چون صدا يك سيگنال سينوسي وآنالوگ است .
    ايا غير از فرمت wave فرمت mp3 با ميكرو امكان پذير است ؟من عنوان اين پروژه را زياد ديدم اما ميگويند براي فرمت mp3 به فركانس كاري بالايي نياز هست كه ميكرو نميتواند داشته باشد .
    بعد ازاينكه از روي كارت حافظه mmc موزيك توسط ميكرو خوانده شد چطوري بايد از نظر سخت افزاري به بلندگو داد آيا در اين بين ايسي يا مدار ديكد يا مدارات ديجيتال به آنالوگ لازم هست ؟

  2. تشکرها از این نوشته :


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  4. #2
    کاربر فعال sajjad_AD آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    سجاد
    نوشته ها
    307
    تشکر
    336
    تشکر شده 471 بار در 181 پست

    پیش فرض

    سلام
    MCS Electronics یه پروژه MP3 Player تو سایتش گذاشته که با AVR خودمونم هست:
    کد:
    '///////////////////////////////////////////////////////////////////////////////
    '///////////////////////////////////////////////////////////////////////////////
    '
    ' MP_3_PLAYER with VS1001k FOR MP3.FILES FORMAT Name 8.3 FAT16 AVR-DOS 5.5
    ' data 14-06-2007 versione BASCOM 1.8.11.3 AVR-DOS 5.5
    ' written by GIOVANNI DE LUCA
    ' HTTP://delucagiovanni.interfree.it robot applications and others
    ' HTTP://WWW.LNS.INFN.IT nuclear phisics applications
    ' HTTP://www.youtube.com/tubincolo my video mobile-robots
    ' deluca@lns.infn.it my e-mail
    ' to control it's used serial port com1 and pul "UP" to change songs
    ' to make test I used 64Mb MMC with 20 songs in the MMC
    ' but I thing that it's possible read bigger MMC memory without problem
    '
    '///////////////////////////////////////////////////////////////////////////////
    '///////////////////////////////////////////////////////////////////////////////
    
    $prog&HFF ,&H4F ,&HC5 ,&HFF 'FUSE BITS generated
    $regfile="M128def.dat"'IT'S POSSIBLE USE DIFFERENT AVR-CHIPS
    $crystal= 14745600 'BUT this NOT TESTED
    $baud= 115200
    '-------------------------------------------------------------------------------
    ConfigTimer1=Timer, Prescale = 64
    Config Clock = Soft
    EnableInterrupts
    EnableTimer1
    Enable Urxc 'abilita rs232
    OnTimer1 Timer_1
    On Urxc Rs_232 'salto per rs232
    ConfigDate= Dmy , Separator =.
    '-------------------------------------------------------------------------------
     Avanti AliasPing.0
     Led AliasPortg.1
     Vs_miso AliasPinc.0
     Vs_mosi AliasPortc.1
    Vs_clock AliasPortc.2
     Xcs AliasPortc.3
     Xreset AliasPortc.4
     Dreq AliasPinc.5
     Bsync AliasPortc.6
    '-------------------------------------------------------------------------------
    Config Avanti =Input'pulsante avanti
    Config Led =Output'led
    Config Vs_miso =Input'serial input vs-1001
    Config Vs_mosi =Output'serial out vs-1001
    Config Vs_clock =Output'serial clock vs-1001
    Config Xcs =Output'VS Chip Select
    Config Xreset =Output'VS Reset
    Config Dreq =Input'VS Data Request
    Config Bsync =Output'VS Stream Request
    '-------------------------------------------------------------------------------
    DeclareSub Vs_init()
    DeclareSub Soft_reset()
    DeclareSub Vs_write(byval Vs_address AsByte,Byval Data1 AsByte,Byval Data2 AsByte)
    DeclareFunction Vs_read(byval Vs_address AsByte)AsWord
    DeclareSub Send_mp3(byval Filename AsString)
    '-------------------------------------------------------------------------------
    Const Vs_rd =&B0000_0011 'Write command vs1001
    Const Vs_wr =&B0000_0010 'Read command vs1001
    Const Vs_mode = 0
    Const Vs_status = 1
    Const Vs_clockf = 3
    Const Vs_decode_time = 4
    Const Vs_audata = 5
    Const Vs_volume = 11
    '-------------------------------------------------------------------------------
    Dim B AsByte
    Dim I AsInteger
    Dim J AsLong
    Dim Curbyte AsLong
    Dim S AsString* 20
    Dim Sample_rate AsWord
    Dim Bit_rate AsWord
    Dim Is_stereo AsWord
    Dim Audata AsWord
    Dim Filename AsString* 11
    Dim Mmc_data(512)AsByte'512 byte
    Dim Tempo_new AsWord
    Dim Tempo_old AsWord
    Dim Flag_read AsBit
    Dim Flag_play AsBit
    Dim Comando AsString* 10
    Dim Mode_low AsByte
    Dim Mode_hig AsByte
    Dim Volume AsWord
    Dim Volume_low AsByte
    Dim Volume_hig AsByte
    '-------------------------------------------------------------------------------
    $Include"Config_MMC.bas"'include mmc
    
    If Gbdriveerror <> 0 ThenEnd
    $Include"Config_AVR-DOS.BAS"'include avr-dos
    
    B =Initfilesystem(1)'init file system
    If B <> 0 ThenPrint"Errore MMC"'se errore
    '-------------------------------------------------------------------------------
    Bsync = 0
    Xreset = 0
    Xcs = 1
    Portg.0 = 1  'res pull up
    Flag_play = 0 'sta suonando ?
    Flag_read = 1 'gia letto ?
    '-------------------------------------------------------------------------------
    '-------------------------- PROGRAM START -------------------------------------
    '-------------------------------------------------------------------------------
    Print"Dir *.mp3"'dir mp3
    Print
    '-------------------------------------------------------------------------------
    '---------------------- crea una lista dei brani mp3 presenti sulla MMC --------
    '-------------------------------------------------------------------------------
    Open"Lista.txt"ForOutputAs#9 'create file.list in MMC
    S =Dir("*.mp3")
    WhileLen(s)> 0
     Print S ;" ";Filedate();" ";Filetime();" ";Filelen()
     Print#9 , S 'memorizza la lista
     S =Dir()
    Wend
    Close#9
    '-------------------------------------------------------------------------------
    Print"VS1001 Init"
    Vs_init 'reset hardware e inizializza
    '-------------------------------------------------------------------------------
    '--------------------------- MAIN PROGRAMM -------------------------------------
    '-------------------------------------------------------------------------------
    Do
    
    Open"Lista.txt"ForInputAs#9 'OPEN LA LISTA
    WhileEof(#9)= 0
    LineInput#9 , S 'READ filename Mp3
    Call Send_mp3(s)'play mp3
    Wend
    Close#9
    
    Loop
    End
    '-------------------------------------------------------------------------------
    '---------------------------- TIMER 1 ------------------------------------------
    '-------------------------------------------------------------------------------
    Timer_1:
      If Bsync = 0 And Flag_play = 1 And Flag_read = 1 Then'per leggere inforamzioni
    
     Flag_read = 0
      Audata = Vs_read(vs_audata)
      Sample_rate = Audata And&H1E00
    Rotate Sample_rate ,Right, 9
      Bit_rate = Audata And&H1FF
       Is_stereo = Audata And&H8000
    Rotate Is_stereo ,Right, 15
    Print Sample_rate ;","; Bit_rate ;" Kbs,"; Is_stereo 'print informations
    
    EndIf
    
     If Bsync = 0 And Flag_play = 1 And Flag_read = 0 Then
     Tempo_new = Vs_read(vs_decode_time)
    
     If Tempo_new <> Tempo_old ThenPrint Tempo_new ;" Sec"
    
     Tempo_old = Tempo_new
    
    EndIf
    
    Return
    '-------------------------------------------------------------------------------
    '---------------------- RS 232 -------------------------------------------------
    '-------------------------------------------------------------------------------
    Rs_232:
     Comando =Inkey()
     If Comando ="1"Then
    
     Mode_low.7 = 1
      Bsync = 0
      Vs_write Vs_mode ,&H0 , Mode_low 'no loudness
    
    EndIf
     If Comando ="2"Then
    
     Mode_low.7 = 0
      Bsync = 0
      Vs_write Vs_mode ,&H0 , Mode_low 'loudness
    
    EndIf
     If Comando ="3"Then
    
     Mode_low.1 = 0
      Bsync = 0
      Vs_write Vs_mode ,&H0 , Mode_low 'play normale
    
    EndIf
     If Comando ="4"Then
    
     Mode_low.1 = 1
      Bsync = 0
      Vs_write Vs_mode ,&H0 , Mode_low 'play veloce
    
    EndIf
     If Comando ="5"And Volume_low < 250 Then
    
     Volume_hig = Volume_hig + 5
      Volume_low = Volume_low + 5
      Bsync = 0
      Vs_write Vs_volume , Volume_hig , Volume_low 'volume down
    
    EndIf
     If Comando ="6"And Volume_low > 0 Then
    
     Volume_hig = Volume_hig - 5
      Volume_low = Volume_low - 5
      Bsync = 0
      Vs_write Vs_volume , Volume_hig , Volume_low 'volume up
    
    EndIf
     Comando =""
    Return
    '-------------------------------------------------------------------------------
    '------------------------------ MP3 SUBROUTINES --------------------------------
    '-------------------------------------------------------------------------------
    Function Vs_read(byval Vs_address AsByte)AsWord
    
     Xcs = 0 'Xcs low
      B = Vs_rd
    Shiftout Vs_mosi , Vs_clock , B , 1
    Shiftout Vs_mosi , Vs_clock , Vs_address , 1
      B = 0
    Shiftin Vs_miso , Vs_clock , B , 1
      Vs_read = B
    Shift Vs_read ,Left, 8
      B = 0
    Shiftin Vs_miso , Vs_clock , B , 1
      Vs_read = Vs_read + B
      Xcs = 1 'Xcs high
    
    EndFunction
    '-------------------------------------------------------------------------------
    '-------------------------------- WRITE ROUTINE --------------------------------
    '-------------------------------------------------------------------------------
    Sub Vs_write(byval Vs_address AsByte,Byval Data1 AsByte,Byval Data2 AsByte)
    
     Xcs = 0
      B = Vs_wr
    Shiftout Vs_mosi , Vs_clock , B , 1
    Shiftout Vs_mosi , Vs_clock , Vs_address , 1
    Shiftout Vs_mosi , Vs_clock , Data1 , 1
    Shiftout Vs_mosi , Vs_clock , Data2 , 1
      Xcs = 1
    
    EndSub
    '-------------------------------------------------------------------------------
    '------------------------------- RESETTA E INIZILIZZA --------------------------
    '-------------------------------------------------------------------------------
    Sub Vs_init()
    
     Xreset = 0
    Waitms 5
      Xreset = 1
    Waitms 10
    
     
    
    Do: Led = Dreq :LoopUntil Dreq = 1
      Vs_write Vs_mode ,&H0 ,&H4 'reset
    
    Do: Led = Dreq :LoopUntil Dreq = 1
      Mode_low.7 = 1
      Vs_write Vs_mode ,&H0 , Mode_low 'bass
    
    Do: Led = Dreq :LoopUntil Dreq = 1
      Vs_write Vs_clockf ,&H0 ,&H0 'clockf 24,xx MHz
    
    Do: Led = Dreq :LoopUntil Dreq = 1
      Vs_write Vs_volume ,&H0 ,&H0 'volume =0 massimo
    
    
    EndSub
    '-------------------------------------------------------------------------------
    '--------------------------- SOFT RESET VS1001 ---------------------------------
    '-------------------------------------------------------------------------------
    Sub Soft_reset
    
    Do: Led = Dreq :LoopUntil Dreq = 1 'wait Dreq
      Vs_write Vs_mode ,&H0 ,&H4 'reset
    
    EndSub
    '-------------------------------------------------------------------------------
    '---------------------------- SEND FILE MP3 ------------------------------------
    '-------------------------------------------------------------------------------
    Sub Send_mp3(byval Filename AsString)
    
    Print"Play : "; Filename
      Soft_reset 'resetta vs1001
      Flag_read = 1 'per leggere una volta sample rate etc
      Flag_play = 0 'inizia a leggere dopo che č stato letto il primo pacchetto
    
    Open Filename ForBinaryAs#10 'apri il file mp3 e play song
    
    Do: Led = Dreq :LoopUntil Dreq = 1 'wait Dreq
    
    WhileEof(#10)= 0
    Get#10 , Mmc_data(1),, 512 'preleva 512 byte
    Do: Led = Dreq :LoopUntil Dreq = 1 'wait Dreq
    
    For I = 1 To 16
    For J = 1 To 32
     Bsync = 1
    Shiftout Vs_mosi , Vs_clock , Mmc_data(curbyte), 1
      Bsync = 0
    Incr Curbyte
    
    Next J
    Do: Led = Dreq :LoopUntil Dreq = 1 'wait Dreq
    Next I 'first 32
      Curbyte = 1 'after 16 16x32=512 byte
    If Avanti = 0 ThenGoto Esci 'pulsante up
      Flag_play = 1 'playing primo pacchetto
    
    Wend
    
    Esci:
     Flag_play = 0 'stop play
     Close#10
     For I = 1 To 2048 'send 2048 zeros to clear buffer
    
     B = 0
    Shiftout Vs_mosi , Vs_clock , B , 1 'send 2048 byte
    
    Next I
     Print"MP3 End"'end song
    
     Waitms 100 'aspetta 100
    EndSub

    اینم لینک پروژه های MCS AVR
    ویرایش توسط sajjad_AD : 07-12-2011 در ساعت 21:12

  5. کاربران : 2 تشکر کرده اند از شما sajjad_AD برای ارسال این پست سودمند:


  6. #3
    مدیر باز نشسته armstk آواتار ها
    تاریخ عضویت
    Mar 2009
    نوشته ها
    926
    تشکر
    839
    تشکر شده 1,198 بار در 573 پست

    پیش فرض

    ايا غير از فرمت wave فرمت mp3 با ميكرو امكان پذير است ؟من عنوان اين پروژه را زياد ديدم اما ميگويند براي فرمت mp3 به فركانس كاري بالايي نياز هست كه ميكرو نميتواند داشته باشد .
    بعد ازاينكه از روي كارت حافظه mmc موزيك توسط ميكرو خوانده شد چطوري بايد از نظر سخت افزاري به بلندگو داد آيا در اين بين ايسي يا مدار ديكد يا مدارات ديجيتال به آنالوگ لازم هست ؟
    سلام
    برای پخش mp3 شما به یک دیکودر vs1003 یا vs1011 نیاز دارین که تفاوتشون در فرمت های ساپورت شده و تغذیه مورد نیاز هستش , که من برای شروع vs1011 رو پیشنهاد میدم که ولتاژ سینگل میخاد
    بدون دیکودر هم که باید دیتا ها رو اگه بصورت سکتوری کار کنی , سکتور سکتور بخونی و بعضی از سکتور ها رو رد کنی تا به دیتا اصلی برسی بعد این دیتا رو بدی به pwm تا به یک مقدار آنالوگ برسه که البته در خروجی pwm نیاز به یک فیلتر rc حداقل 1 طبقه هستش
    البته میتونین از یک Dac هم برای تبدیل به صدا استفاده کنید


    میکروکنترلر STM32103-RBT6 بطور کامل راه اندازی شد !!!
    مرحله بعدی اتصال TFT 3.2 به میکرو و بوت کردن UC-OS II + GUI !!!

    .

  7. کاربران : 3 تشکر کرده اند از شما armstk برای ارسال این پست سودمند:


  8. #4
    کاربر علاقه مند wiki آواتار ها
    تاریخ عضویت
    Feb 2010
    نوشته ها
    54
    تشکر
    74
    تشکر شده 32 بار در 15 پست

    پیش فرض

    سلام
    دوستان در رابطه با اتصال ميكرو و كارت mmc‌شماتيك هاي زيادي تو اينترنت هست اما درمورد برنامه چيزي كه متوجه شدم اينه كه روش خواندن از كارت به دوروش است يكي خواندن از سكتورها ويكي ارتباط با fat16 or fat32 .
    از دوستان خواهش دارم درمورد اين دوروش توضيح بدهند در هركدام چطوري برنامه را مينويسند كدوم روش مناسبتر وبهتر جواب ميده ؟
    سئوال ديگرم : اينكه در اتصال كارت به ميكرو ، براي ميكرو محدوديتي داريم؟من در بعضي جاها ديدم كه گفته شده در ميكرو Avr فقط شماره اتمگا 128 جواب ميدهد بخاطر حافظه داخلي بالاي اين شماره ميكرو استفاده ميشود .
    آيا وقتي ما از كارت استفاده ميكنيم اطلاعات تماما وارد حافظه ميكرو ميشود براي همين ما به ميكرو با حافظه زياد نياز داريم يا اينكه ما فقط اطالاعات را از كارت ميخوانيم ؟چون اگر ما اطلاعات را بدون انتقال به ميكرو بتوانيم بخوانيم پس محدوديت براي نوع ميكرو بخاطر حجم حافظه آنها نخواهيم داشت ..
    با تشكر

موضوعات مشابه

  1. Mp3 player
    توسط king-mohsen در انجمن پیشنهادات ،انتقاد و نظرات شما در مورد انجمن
    پاسخ: 1
    آخرين نوشته: 16-09-2013, 15:47
  2. wave player ساخت
    توسط jordan77 در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 22-05-2012, 21:35
  3. wave player با اتمگا 16
    توسط sajjad85 در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 18-01-2012, 22:19
  4. wave player
    توسط nima_zeus در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 02-09-2011, 11:31
  5. wave player با spi سخت افزاري
    توسط M.ABDOLLAHI در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 12-08-2011, 16:23

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •