اطلاعیه

Collapse
No announcement yet.

مشکل با wav player با کارت حافظه mmc

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل با wav player با کارت حافظه mmc

    سلام دوستان
    من یه wave player ساختم که نقشه اش رو میبینید این همون wave player سایت avr64 هست
    حالا مشکلی که دارم چیه؟
    مشکل اینه که همه چی درسته و کاملا کار میکنه کارت حافظه به خوبی شناخته میشه فقط موقع اجرا که میشه دو یا سه ثانیه اول آهنگ پخش میشه و قطع میشه
    به نظر خودم رم کم میاره پس اومدم آهنگها رو با ریت 7kbs تبدیل کردم ولی باز همونطور بود در ضمن وقتی آهنگ رو با 22.050 تبدیل میکنم و با ماوس روی آهنگ اشاره میکنم مینویسه 176kbs و وقتی با 7kbs تبدیل میکنم مینویسه 64kbs
    هم اکنون نیازمند یاری سبزتان هستیم
    پیشاپیش ممنون


    #2
    پاسخ : مشکل با wav player با کارت حافظه mmc

    مقدار استک هات رو بالاببر احتمالا از اونه...
    اگه برنامه رو بزاری بهتر میتونم کمک کنم.
    الهم عجل لولیک الفرج

    فقط 313 نفر...

    دیدگاه


      #3
      پاسخ : مشکل با wav player با کارت حافظه mmc

      سلام دوست عزیز
      لطفا در مورد استک توضیح بدید که چی هست؟
      اینم لینک مدیافایر برنامه
      http://www.mediafire.com/?335n91kujcsk4ic
      ممنون

      دیدگاه


        #4
        پاسخ : مشکل با wav player با کارت حافظه mmc

        همین جا خود برنامه رو بزار ...
        اینم راجع به استک هاست یه نگاهی بکن...
        http://www.eca.ir/forum2/index.php?t...3813#msg283813
        الهم عجل لولیک الفرج

        فقط 313 نفر...

        دیدگاه


          #5
          پاسخ : مشکل با wav player با کارت حافظه mmc

          نوشته اصلی توسط hemati01
          سلام دوستان

          مشکل اینه که همه چی درسته و کاملا کار میکنه کارت حافظه به خوبی شناخته میشه فقط موقع اجرا که میشه دو یا سه ثانیه اول آهنگ پخش میشه و قطع میشه



          سلام دوست عزیز منم این مدارو ساختم و اولش مشکل شما رو داشتم ..تازه مشکل من بدتر بود ..همون اول متوقف میشد ... من دو تا مشکل در این مدار پیدا کردم یکی اینکه نباید بلندگو رو مستقیم به میکرو وصل کنی چون اگه بلندگو 8 اهم باشه دیگه کار نمیکنه بهتره از یه بلند گوی با اهم زیاد استفاده کنی(مثل هدفون کامپیوتر) ...یا اینکه از یه ترانزیستور npn بین بلندگو و میکرو استفاده کنی ........دوم : یه خازن 1000 uf بین ولتاژ + و - کارت حافظه وصل کن تا نویز احتمالی مدارتو از بین ببره.....من با انجام این دو کار مشکلم حل شد و مدارو روی pcb پیاده کردم... ..اگه سوالی بود بپرس.

          دیدگاه


            #6
            پاسخ : مشکل با wav player با کارت حافظه mmc

            سلام اینم برنامه کامل

            'Download from www.picpars.com
            '---------------------------------------------------------------
            'Simple Wave Player (SD/MMC)<Wave1.0.bas>
            'Programmer: Behnam Zakizadeh (Behnamzaki@hotmail.com) AVR64.com
            '>>> ALL MMC INTERFACE SUBROUTINES WRITTED BY: Ranjit Diol
            ' rsdiol@compsys1.com
            ' http://www.compsys1.com/workbench
            ' >Many thanks to Diol, who gave permission to use the MMC Code
            'Compiler : BASCOM 1.11.9.1
            'Creation Date: Dec 05, 2009 (1388.09.14)
            'Copyright: (C) 2009 By www.avr64.com
            'Licence: This Is A Free Firmware, NOT FOR COMMERCIAL USE Ver: 1.00
            '---------------------------------------------------------------
            $regfile = "m8def.dat"
            $crystal = 16000000
            $hwstack = 64
            $swstack = 64
            $framesize = 64

            'LCD
            Config Lcdpin = Pin , Db4 = Pind.2 , Db5 = Pind.3 , Db6 = Pind.4 , Db7 = _
            Pind.5 , E = Pind.1 , Rs = Pind.0
            Config Lcd = 16 * 2
            Cursor Off : Cls
            Deflcdchar 0 , 32 , 32 , 31 , 31 , 31 , 31 , 31 , 32 'First #
            Deflcdchar 1 , 32 , 32 , 18 , 26 , 30 , 26 , 18 , 32 'Play/Pause >|
            Deflcdchar 2 , 32 , 32 , 2 , 6 , 14 , 6 , 2 , 32 'Back <<
            Deflcdchar 3 , 32 , 32 , 8 , 12 , 14 , 12 , 8 , 32 'Forward >>
            'PWM
            Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1

            'Constants
            Const Msbl = 0

            'Variables
            Dim Indat(512) As Byte 'Memory buffer
            Dim Dat As Byte
            Dim Resp As Byte
            Dim I As Word
            Dim Addr As Long
            Dim Address As Long
            Dim Fat As String * 5
            Dim Firstaddr As Long
            Dim Play As Bit

            'Aliases
            Cs Alias Portc.5
            Clk Alias Portc.3
            Miso Alias Pinc.2 'Mcu inp <- MMC
            Mosi Alias Portc.4 'Mcu out -> MMC

            'Declarations
            Declare Sub Minit
            Declare Sub Mread(byval Addr As Long)
            Declare Sub Msearch
            Declare Sub Mfirstfile
            Declare Sub Menu

            Config Pinc.5 = Output
            Config Pinc.3 = Output
            Config Pinc.4 = Output
            Config Pinc.2 = Input
            Waitms 300
            Config Spi = Soft , Din = Pinc.2 , Dout = Portc.4 , Ss = Portc.5 , Clock = Portc.3
            Spiinit

            'Keys
            Config Pind.6 = Input
            Config Pind.7 = Input
            Config Pinb.2 = Input
            Config Pinb.3 = Input

            'Set Pullup
            Portd.6 = 1
            Portd.7 = 1
            Portb.2 = 1
            Portb.3 = 1

            'Alias
            First_key Alias Pind.6
            Play_key Alias Pind.7
            Prev_key Alias Pinb.2
            Next_key Alias Pinb.3

            '____________________________________________ ___________________________________
            'Main Prog Start Here:
            For I = 1 To 100
            Pwm1a = 0
            Waitms 1
            Pwm1a = 64
            Waitms 1
            Next I

            Cls : Lcd " Search Card..."
            Call Minit
            Call Msearch
            Call Mfirstfile
            Call Menu

            'Adrrr = 281600 '256MB Micro SD FAT16 Start Addr
            'Adrrr = 265728 '1GB Micro SD FAT16 Start Addr
            'Adrrr = 396288 '1GB DVRS MMC FAT16 Start Addr
            'Adrrr = 2113024 '1GB DVRS MMC FAT32 Start Addr

            'FAT Addr
            'Adrrr = 19968 '256 Micro SD FAT16/32 Addr
            'Adrrr = 0 '1GB Micro SD FAT16/32 Addr
            'Adrrr = 130560 '1GB DVRS MMC FAT16/32 Addr

            Xloop:
            Set Cs
            Shiftout Mosi , Clk , Dat , Msbl
            End
            '____________________________________________ ___________________________________
            'Init SD/MMC By Diol [Compsys1.com]
            Sub Minit
            Set Cs
            Dat = &HFF
            For I = 1 To 10
            Shiftout Mosi , Clk , Dat , Msbl
            Next I
            Resp = 255
            Reset Cs
            Cmd0:
            Dat = &H40
            Shiftout Mosi , Clk , Dat , Msbl
            Addr = &H00000000
            Shiftout Mosi , Clk , Addr , Msbl
            Dat = &H95
            Shiftout Mosi , Clk , Dat , Msbl
            While Resp <> &H01
            Shiftin Miso , Clk , Resp , Msbl
            Wend
            Set Cs
            Waitms 50
            Reset Cs
            Dat = &HFF
            Cmd1:
            While Resp <> &H00
            Set Cs
            Shiftout Mosi , Clk , Dat , Msbl
            Shiftin Miso , Clk , Resp , Msbl
            Reset Cs
            Dat = &H41
            Shiftout Mosi , Clk , Dat , Msbl
            Addr = 0
            Shiftout Mosi , Clk , Addr , Msbl
            Dat = &HFF
            Shiftout Mosi , Clk , Dat , Msbl
            Shiftout Mosi , Clk , Dat , Msbl
            Shiftin Miso , Clk , Resp , Msbl
            Wend
            Dat = &HFF
            Set Cs
            End Sub
            '____________________________________________ ___________________________________
            'Read SD/MMC Sector By Diol [Compsys1.com]
            Sub Mread(byval Addr As Long)
            Set Cs
            Dat = &HFF
            Shiftout Mosi , Clk , Dat , Msbl
            Shiftin Miso , Clk , Resp , Msbl
            Reset Cs
            Dat = &H51
            Shiftout Mosi , Clk , Dat , Msbl
            Shiftout Mosi , Clk , Addr , Msbl
            Dat = &HFF
            Shiftout Mosi , Clk , Dat , Msbl
            Shiftin Miso , Clk , Resp , Msbl
            While Resp <> 0
            Shiftin Miso , Clk , Resp , Msbl
            Wend
            While Resp <> &HFE
            Shiftin Miso , Clk , Resp , Msbl
            Wend
            Dim Stn As Byte , A As String * 20 , C As Byte , J1 As Byte
            For I = 1 To 512
            Shiftin Miso , Clk , Resp , Msbl
            Indat(i) = Resp
            If Play = 1 Then
            Pwm1a = Resp
            Waitus 30
            End If
            Next I
            Shiftin Miso , Clk , Resp , Msbl
            Shiftin Miso , Clk , Resp , Msbl
            Set Cs
            End Sub
            '____________________________________________ ___________________________________
            'Search FAT Table Of SD/MMC By Behnam [AVR64.com]
            Sub Msearch
            Address = 0
            Do
            Call Mread(address)
            For I = 1 To 512
            'M is First Char Of "MSDOS5.0" In FAT Sector
            If Indat(i) = "M" Then Exit Do
            Next I
            Address = Address + 512
            Home L : Lcd "Addr:" ; Address
            Loop
            Cls : Lcd "MMC OK"
            Lowerline
            Lcd "MMC FAT: "
            '------------------------ Byte 55 to 59 Contain "FAT16" String, IF FATis16
            For I = 55 To 59
            Fat = Fat + Chr(indat(i))
            Next I
            If Fat = "FAT16" Then
            Lcd "FAT16"
            End If
            '------------------------ Byte 83 to 87 Contain "FAT32" String, IF FATis32
            For I = 83 To 87
            Fat = Fat + Chr(indat(i))
            Next I
            If Fat = "FAT32" Then
            Lcd "FAT32"
            End If
            Wait 2
            End Sub
            '____________________________________________ ___________________________________
            'Find First File Address Of SD/MMC By Behnam [AVR64.com]
            Sub Mfirstfile
            Cls : Lcd " Search File..."
            Address = 0
            Do
            Call Mread(address)
            For I = 1 To 512
            '1 is Last Char Of "F1" In First File Sector
            If Indat(i) = "1" And Indat(i -1) = "F" Then Exit Do
            Next I
            Address = Address + 512
            Home L : Lcd "Addr:" ; Address
            Loop
            Cls : Lcd "First File:"
            Lowerline
            Lcd Address
            Firstaddr = Address 'Copy FirstFile Addr
            Wait 2
            End Sub
            '____________________________________________ ___________________________________
            Sub Menu
            Address = Firstaddr
            Play = 1
            Cls : Lcd " Wave Player"
            Lowerline
            Lcd Chr(0) ; Spc(4) ; Chr(1) ; Spc(4) ; Chr(2) ; Spc(4) ; Chr(3)
            Do
            'Read Keys
            If Play_key = 0 Then 'Pause
            Waitms 300
            Do
            If Play_key = 0 Then Exit Do 'Play
            Loop
            Waitms 300
            End If
            If First_key = 0 Then Address = Firstaddr 'First
            If Prev_key = 0 Then 'Prev
            If Address > Firstaddr Then Address = Address - 1048576
            Waitms 50
            End If
            If Next_key = 0 Then 'Next
            Address = Address + 1048576
            Waitms 50
            End If
            Call Mread(address)
            Address = Address + 512
            Loop
            End Sub

            دیدگاه


              #7
              پاسخ : مشکل با wav player با کارت حافظه mmc

              دوستان مشکلم حل شد ممنون
              راه حل هم همون بود که جناب sutedelan فرمودن
              من خروجی رو به یه ترانزیستور دادم و بعد به گوشی وصل کردم و کاملا درست جواب داد
              ممنون آقای sutedelan

              دیدگاه


                #8
                پاسخ : مشکل با wav player با کارت حافظه mmc

                خواهش میکنم. :smile:

                دیدگاه


                  #9
                  پاسخ : مشکل با wav player با کارت حافظه mmc

                  دوست عزیز این wave player مفت نمی ازه ..
                  برو از AVR dos library استفاده کن
                  واسه پخش هم از تایمر 0 با مقدار 223 و زمان تاخیر لود کردن دیتا در PWM 8bit هم 3 میکرو ثانیه ، استفاده کن بعد wave ی هم که استفاده میکنی 48khz 8bit mono باید باشه بعد برو از کیفیت بالا حالشو ببر
                  دلا خو کن به تنهایی که از تنها بلا خیزد

                  دیدگاه


                    #10
                    پاسخ : مشکل با wav player با کارت حافظه mmc

                    سلام
                    مشکلی دارم میخواستم بدونم کسی جوابی برام داره . می خوام بدونم فرکانس و تعداد بیت فایل wav رو چی تعیین میکنه . من الان یه wav player 8khz, 8bit mono دارم اما وقتی فایل رو تبدیل می کنم حتی تو کامپیوترم کیفیت صدا حسابی افت میکنه :cry2:

                    دیدگاه


                      #11
                      پاسخ : مشکل با wav player با کارت حافظه mmc

                      شما خودت نگا کن ، داری میگی Wave 8khz کیفیتش مفت نمی ارزه ، من گفتم Wave 48 khz ، اونی که من بستم کیفیتش حرف نداره
                      دلا خو کن به تنهایی که از تنها بلا خیزد

                      دیدگاه


                        #12
                        پاسخ : مشکل با wav player با کارت حافظه mmc

                        سلام،
                        میشه بگید چطور میشه این پروژه رو تو پروتیوس شبیه سازی کرد؟
                        یه فایل mmc. باید لود کرد یا IMA.

                        وقتی mmC. میدم به کارت، خطای برنامه اینه که فایل IMA. پیدا نکرده و وقتی فایل IMA. میدم بهش خطای
                        simulation is not running in real time due to excessive CPU load
                        میده.
                        چطور میشه موسیقی پخش و ضبط کرد ؟؟؟

                        و برای اینکه کیفیت رو بالا برد، تغییری در نرم افزار باید انجام شه یا سخت افزار هم باید تغییر داد؟؟
                        ممنون

                        دیدگاه

                        لطفا صبر کنید...
                        X