اطلاعیه

Collapse
No announcement yet.

راه اندازی MMC

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

    راه اندازی MMC

    با درود . . .

    من میخوام mmc رو به mega16 از طریق نرم افزاری وصل کنم و اطلاعات داخل اونرو از خونه اولش یکی یکی بخونم و روی lcd نمایش بدم. از طریق سخت افزاری یه کارایی کردم. تقریبا 63 بار با روشهای متفاوت امتحان کردم اما نشد.
    میشه یکی لطف کنه یه کمکی کنه؟؟؟
    فقط توروخدا نگید تو انجمن سرچ کن.... مطالب اونقدر پراکنده اس که هیچی نمیشه فهمید.

    برنامه ای رو که روش کار میکردم از داخل یکی از همون تاپیکها برداشتم و یه خورده تغییرش دادم...


    $regfile = "M16def.dat"
    $crystal = 4000000

    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6_
    , Db7 = Portc.7 , Rs = Portc.2 , E = Portc.3
    Cursor Off
    Config Lcd = 16 * 2

    $swstack = 64
    $hwstack = 128
    $framesize = 128

    Waitms 1
    $include "Config_MMC.bas"
    $external _mmc
    Gbdriveerror = Driveinit()
    Gbdriveerror = Drivecheck()
    Dim Abuffer(512)as Byte
    Dim Wsrampointer As Word
    Dim Lsectornumber As Long
    Dim Cop_lsec As Integer
    Lsectornumber = 100
    Dim I As Integer



    For I = 1 To 512
    Abuffer(i) = 0

    Next
    I = 1


    Lsectornumber = 100
    Wsrampointer = Varptr(abuffer(1))
    Gbdriveerror = Drivereadsector(wsrampointer , Lsectornumber)


    Do

    I = 1
    For I = 1 To 512
    Locate 1 , 5
    Lcd Abuffer(i)
    Wait 1
    Cls

    Next
    Lsectornumber = Lsectornumber + 1
    Gbdriveerror = Drivereadsector(wsrampointer , Lsectornumber)

    Loop

    '******************************************** *****************************8



    End



    اگه یکی لطف کنه و یه نمونه برنامه برام بزاره واقعا ممنونش میشم. :rolleyes:
    درد من تنهایی نیست؛ بلکه مرگ ملتی است که گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حکمت خداوند می‏ نامند! "گاندی"

    به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
    بدرود . . .

    #2
    پاسخ : راه اندازی MMC

    سلام.

    حالا چرا نرم افزاری؟؟؟؟
    http://ceworld.ir/images/ads/dornablogcom_ads.gif

    دیدگاه


      #3
      پاسخ : راه اندازی MMC

      آقا اصلا بیخیالش همون سخت افزاری فقط جواب بده. :angry:
      دیشب تا 4:30 صبح داشتم کار میکردم

      فقط میخوام خونه های حافظه رو از صفر به بالا بخونه(اینم بگم که قبلا کارت رو با یه اطلاعاتی پر کردم....و باید اونها رو بخونه)
      درد من تنهایی نیست؛ بلکه مرگ ملتی است که گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حکمت خداوند می‏ نامند! "گاندی"

      به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
      بدرود . . .

      دیدگاه


        #4
        پاسخ : راه اندازی MMC

        با تشکر ولی اینجا رو دیده بودم کار نکرد (با mega128 طراحی شده )
        درد من تنهایی نیست؛ بلکه مرگ ملتی است که گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حکمت خداوند می‏ نامند! "گاندی"

        به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
        بدرود . . .

        دیدگاه


          #5
          پاسخ : راه اندازی MMC

          نوشته اصلی توسط وحید نصیری
          با تشکر ولی اینجا رو دیده بودم کار نکرد (با mega128 طراحی شده )
          دوست عزیز میخوای با mmc بصورت fat کار کنی یا سکتور؟ اگه با fat میخوای کار کنی خوب با مگا 16 نمیشه!!!!! حداقل باید مگا 64 باشه! اگه نه که با مگا 8 هم میشه!

          دقیقا بگو مشکلت از کجاست؟؟؟
          http://ceworld.ir/images/ads/dornablogcom_ads.gif

          دیدگاه


            #6
            پاسخ : راه اندازی MMC




            تو این برنامه ساعت و تاریخ رو توی mmc توی یه فایل txt میریزه



            کد:
            $regfile = "M64def.dat "                  'IT'S POSSIBLE USE DIFFERENT AVR-CHIPS
            $crystal = 16000000                     'or any
            $baud = 9600
            $swstack = 64
            $hwstack = 128
            $framesize = 128
            Config Clock = Soft
            Config Date = Dmy , Separator = .
            Enable Interrupts
            Time$ = "20:22:33"
            Date$ = "16.04.08"
            Dim B As Byte
            Dim L As Byte
            Dim Ff As Byte
            Dim S As String * 20
            Dim Diskf As Long
            Dim Disks As Long
            Dim Acc As Long
            Cls
            Print "Initation..."
            $include "Config_AVR-DOS.BAS"
            $include "Config_MMC.bas"                  'include mmc
            
            Ff = Drivereset()
            Ff = Driveinit()
            
            $external Waitms
            
            If Gbdriveerror <> 0 Then
            
            Print "Error Config"
            
            Print Gbdriveerror
            End
            End If
            
            'include avr-dos
            
            B = Initfilesystem(1)                    'init file system
            If B <> 0 Then Print "Error MMC"
            '-------------------------------------------------------------------------------
            '------------------------ PROGRAM START ------------------------------
            '-------------------------------------------------------------------------------
            Do
            Wait 2                           'you can type your calling subroutine and another code
            Gosub A                           'for example
            Loop
            
            End
            
            
            A:
            Print "Now Create file"
            Ff = Freefile()
            Open "ALI.txt" For Binary As #ff
            Acc = Lof(#ff)
            Print "acc:" ; Acc
            Seek #ff , Acc
            Print #ff , ""
            Print #ff , Time$
            Print #ff , Date$
            Close #ff
            Print Time$
            Return
            علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

            دیدگاه


              #7
              پاسخ : راه اندازی MMC

              نوشته اصلی توسط behnam_kh2002


              دوست عزیز میخوای با mmc بصورت fat کار کنی یا سکتور؟ اگه با fat میخوای کار کنی خوب با مگا 16 نمیشه!!!!! حداقل باید مگا 64 باشه! اگه نه که با مگا 8 هم میشه!

              دقیقا بگو مشکلت از کجاست؟؟؟
              با درود . . .
              من تابحال با mmc کار نکردم.اما خیلی فرضم ... :mrgreen:
              همون طور که میدونید برای ساختن تابلو روان هر کسی روش خودش رو داره.حدود دو ماه قبل من داخل یه تاپیک شروع به آموزش ساخت تابلو روان کردم.اتفاقا استقبال خوبی هم از این موضوع شد.اما به دلیل مشکلات شخصی تقریبا یه دو ماهی اینجا نبودم و کل کارهام به هم ریخت و حتی آدرس تاپیک رو هم یادم رفت
              اما حالا میخوام دوباره شروع کنم و مباحث متحرک سازی و انتقال داده ها رو روی تابلو بگم. :nerd:

              برای همین موضوع (و البته یه پروزه دیگه ) من از mmc میخوام استفاده کنم.
              ساختار کار به این صورته که کدهای لازم رو با کامپیوتر روی mmc میریزم و بعدا باید میکرو اونها رو بازیابی و اجرا کنه.

              ساده بگم:
              فرض کنید من قبلا داخل mmc کدهایی رو به ترتیب 08 20 04 65 08 213 142 01 23 45 96 . . . قرار دادم(مثلا یه فایل ایجاد کردم که از خونه یک حافظه به بالا این کدها رو گذاشته باشه)
              حالا من فقط به یه برنامه کم حجم احتیاج دارم تا این کدها رو از خونه اول mmc برام بازیابی کنه.
              برنامه های زیادی هم پیدا کردم اما هیچ کدوم کار نکردن oo:
              مثلا یه برنامه ای که پیدا کردم فایل wav رو از روی mmc میخوند و روی pwm بارگذاری میکرد.تقریبا با یه خورده تغییر همون کاری رو که میخواستم باید انجام میداد که نداد. اینم برنامشه (البته نام مولف رو هم بگم که آقای محمد حسن بدون فامیلی هستند و این پروزه رو روی سایت کویر الکترونیک گذاشتن)



              $regfile = "m16def.dat"
              $crystal = 11059200 '



              Config Pinc.4 = Input
              Pause Alias Pinc.4
              '-------------------------------
              Config Pinc.5 = Input
              Kelid Alias Pinc.5
              '--------------------------------
              Config Pinc.6 = Input
              Kelid2 Alias Pinc.6
              '-------------------------------
              Config Pinb.4 = Output


              Config Pind.3 = Output
              Set Portd.3
              '---------------------------------
              Config Debounce = 20
              '-------------------------------------
              Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
              Pwm1a = 255
              Pwm1b = 255
              'Constants
              'warter are FAM & Behnam


              Const Msbl = 0
              Const Msbh = 1
              Const Dly = 2
              Const Bits8 = 8
              Const Bits16 = 16
              Const Bits32 = 32

              'Dim
              Dim Dat As Byte
              Dim Resp As Byte
              Dim I As Word
              Dim Addr As Long
              Dim Adres As Long
              Dim Tanzim As Byte
              Dim Ali As Byte
              Dim Test As Long
              Dim Copy As Long
              Dim Shomare As Long
              Dim Hassan As Byte
              'Aliases
              Cs Alias Portb.0
              Mosi Alias Portb.1
              Clk Alias Portb.3
              Miso Alias Pinb.2

              'Declarations
              Declare Sub Minit
              Declare Sub Mread(byval Addr As Long )
              'Configs
              Config Portb.2 = Output
              Config Portb.0 = Output
              Config Portb.3 = Output
              Config Pinb.1 = Input


              Waitms 300
              Config Spi = Soft , Din = Pinb.2 , Dout = Portb.1 , Ss = Portb.0 , Clock = Portb.3

              Enable Interrupts
              Enable Spi

              Spiinit

              '******** MAIN PROGRAM *************

              Reset Portd.3
              Main:
              'Initialize the MMCC
              Minit
              Adres = 1048576
              Ali = 0
              Reset Portd.3

              Inja:
              Toggle Portb.4
              Mread Adres

              Debounce Pause , 1 , Stop_play , Sub
              Debounce Kelid2 , 1 , Jolo2 , Sub
              Debounce Kelid , 1 , Jolo , Sub

              Adres = Adres + 512

              'baraye in ke ta dastgah roshan shod peygham 1 ra ped konad
              '-----------------------------------------------------------------
              If Ali = 0 Then
              Adres = Adres + 5120000
              Test = 512 * 7800
              'Test = 512 * 8000
              Adres = Adres - Test
              Ali = 1

              Test = Adres
              End If
              '-------------------------------------------------------------------
              Goto Inja

              Xloop:
              Set Cs
              Shiftout Mosi , Clk , Dat , Msbl
              Endloop:
              Goto Endloop
              End 'end program
              '***************************** END OF PROGRAM **********************************
              '======= SUB ROUTINES AND FUNCTIONS =======
              'warter are FAM & Behnam
              '*** INITIALIZATION OF MMC ***
              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
              'warter are FAM & Behnam
              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




              'warter are FAM & Behnam
              '**** READ routine assumes ADDR uses Status subroutine *****
              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

              For I = 1 To 512
              Shiftin Miso , Clk , Resp , Msbl

              Pwm1a = Resp
              Pwm1b = Resp
              Waitus 29
              'Waitus 3 'ÓÑÚÊ
              Next I

              Shiftin Miso , Clk , Resp , Msbl
              Shiftin Miso , Clk , Resp , Msbl
              Set Cs
              'warter are FAM & Behnam
              End Sub








              Jolo:
              Adres = Adres + 153600

              For Shomare = 1 To 500
              If Kelid = 0 Then Return
              Waitms 1
              Next

              Adres = Adres + 972800


              Return





              Jolo2:
              Adres = Adres - 153600

              For Shomare = 1 To 500
              If Kelid2 = 0 Then Return
              Waitms 1
              Next


              Adres = Adres - 972800

              If Adres < Test Then Adres = Test
              Return



              Stop_play:
              Set Portd.3
              Pwm1a = 255
              Pwm1b = 255
              Copy = Adres
              Do
              Debounce Pause , 1 , Play
              Loop
              Play:
              Reset Portd.3
              Adres = Copy
              Return


              من که تغییرش دادم تا اطلاعاتی رو که میگیره هر 500ms به ترتیب روی lcd نمایش بده اما نشد(فقط صفر میداد)

              حالا شما میتونید یه نمونه عملی از یه برنامه رو که واقعا کار کنه توضیح بدید؟؟
              راستی من هنوزم توی اتصال پایه ها شک دارم هر چند همه جورش رو امتحان کردم اما نشد،ولی اگه ممکنه یه توضیح یا یه شماتیک عملی رو بزارید ممنون میشم.
              درد من تنهایی نیست؛ بلکه مرگ ملتی است که گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حکمت خداوند می‏ نامند! "گاندی"

              به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
              بدرود . . .

              دیدگاه


                #8
                پاسخ : راه اندازی MMC

                دوست عزیز وقتی که به قول شما با برنامه های مختلف تست کردین و جواب نگرفتین، اشکال باید از سخت افزار باشه! سخت افزارش هم بسیار ساده هست اگه یه سرچ تو گوگل بزنی حتما پیدا میکنی!

                http://www.google.com/search?hl=fa&q...88+Avr&lr=
                http://ceworld.ir/images/ads/dornablogcom_ads.gif

                دیدگاه


                  #9
                  پاسخ : راه اندازی MMC

                  این کار رو کردم
                  اگه ممکنه یه نگاهی به برنامه ای که گذاشتم بندازید.ببینید اصلا احتمال داره که کار کنه؟؟؟

                  کسی هست یه چنین چیزی درست کرده باشه و ازش جواب گرفته باشه؟؟؟
                  درد من تنهایی نیست؛ بلکه مرگ ملتی است که گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حکمت خداوند می‏ نامند! "گاندی"

                  به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
                  بدرود . . .

                  دیدگاه


                    #10
                    پاسخ : راه اندازی MMC

                    نوشته اصلی توسط وحید نصیری
                    کسی نیست جواب مارو بده؟؟؟
                    :angry: :angry: :angry:
                    برنامه ظاهرا که درسته!
                    1- روی LCD چی میبینی؟
                    2- از سخت افزار کاملا مطمئن هستی؟ ولتاژ 3.3 ولت دادی به MMC ؟ مقاومتهاش درسته؟
                    3- آیا کارت MMC سالم هست؟ (با یه کارت دیگه هم تست کنی بد نیست!)
                    4- چطوری اطلاعات رو روی MMC ریختی؟؟؟؟ مطمئن هستی که اطلاعاتی روی MMC وجود داره؟؟؟

                    یه برنامه بنویس که فقط یه بایت بنویسه روی MMC بعدش ببین میتونی همون یه بایتو بخونی؟! (یعنی اطلاعاتی که میخوای روی MMC بریزی توسط میکرو باشه نه چیز دیگه ای!)

                    اینارو چک کن نتیجه رو بگو دوست عزیز
                    http://ceworld.ir/images/ads/dornablogcom_ads.gif

                    دیدگاه


                      #11
                      پاسخ : راه اندازی MMC

                      قبل از هر چیزی تشکر میکنم که لااقل شما جواب میدید...

                      1) فقط صفر
                      بعضی وقتا قاطی میکنه و به ترتیب 0 34 1 34 2 34 3 34 4 34 5 34 . . . رو شروع به شمردن میکنه و وقتی به 255 میرسه 34 تبدیل به 35 میشه. oo:
                      2)سخت افزارش رو دقیقا از روی فایل همراهش بستم.
                      3)داخل رم ریدر که به درستی عمل میکنه(32 مگابایتیه . ربطی هم داره؟؟)
                      4)یه نرم افزار هکریه .هر نوع فایلی رو بخای با هر ظرفیتی میتونه ایجاد کنه (اینم بگم ها من هکر نیستم اما هکرها را دوست دارم ) :twisted:. من یه فایل معمولی باهاش ایجاد کردم که فقط اعداد رو داره. بغیر از این کار هم یه فایل wav 22khz به صورت 8 بیتی بهش دادم (طبق گفته نویسندش) اما نشد.

                      ""یه برنامه بنویس که فقط یه بایت بنویسه روی MMC بعدش ببین میتونی همون یه بایتو بخونی؟! (یعنی اطلاعاتی که میخوای روی MMC بریزی توسط میکرو باشه نه چیز دیگه ای!)
                      ""

                      بهنام جون این یه قلم جنس رو نداریم چه جوریاست؟؟
                      اگه به صفحه 9 یا 10 انجمن سر بزنی یه پروژه میبینی که با سیستم fat یه mega32 رو را انداخته و صدای یه میکرفن رو روی mmc ذخیره میکنه و بعدا پخشش میکنه. هر چند که این برنامه کار نمیکنه(باید یه تغییراتی توی فایل config_mmc.bas داده بشه تا برای mega32 هم جواب بده) اما تغییرش دادم و جالب اینکه mmc رو تست میکرد و صحت اونرو اعلام میکرد اما اونم صفر میداد ...

                      با تشکر مجدد . . .
                      درد من تنهایی نیست؛ بلکه مرگ ملتی است که گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حکمت خداوند می‏ نامند! "گاندی"

                      به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
                      بدرود . . .

                      دیدگاه


                        #12
                        پاسخ : راه اندازی MMC

                        'پروژه خوانده و نوشتن از MMC
                        'برای امتحان است و جنبه ی آموزشی دارد
                        'نوشته شده توسط:سید پوریا محتشمی

                        'خواندن و نوشتن رو یام ام سی به صورت سکتوری است

                        'پایه های MMC
                        'MMC M32
                        '1 MMC_CS
                        '2 MOSI
                        '3 GND
                        '4 +3.3V
                        '5 CLOCK
                        '6 GND
                        '7 MISO

                        'شما میتوانید هم از پیکربندی سخت افزاری یا نرم افزاری استفاده کنید


                        'پیکر بندی سخت افزاریcMMC_Soft = 0
                        'پیکربندی نرم افزاری: cMMC_Soft = 1

                        $regfile = "m32def.dat"
                        $crystal = 8000000
                        Const Cmmc_soft = 1

                        'در این جا به صورت نرم افزاری است
                        Config Portd = Output

                        #if Cmmc_soft = 0

                        ' --------- پیکر بندی سخت افزاری ----------------------------------------

                        ' Chip-Select مشخص کردن پایه
                        Config Pinb.2 = Output
                        Mmc_cs Alias Portb.2
                        Set Mmc_cs

                        'مشخص کردن پایه SS
                        Config Pinb.2 = Output
                        Spi_ss Alias Portb.2
                        Set Spi_ss


                        ' پیکر بندی SPI
                        Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
                        Spsr = 1
                        Spiinit 'عمل برقراری ارتباط

                        ' --------- اتمام ------------------------------------------

                        #else

                        ' --------- پیکر بندی نرم افزاری --------------------------------------

                        ' پایه یک از MMC/SD
                        ' Chip-Select مشخص کردن پایه
                        Config Pinb.0 = Output
                        Mmc_cs Alias Portb.0
                        Set Mmc_cs

                        ' MOSI پایه دو از MMC/SD
                        Config Pinb.2 = Output
                        Set Pinb.2
                        Mmc_portmosi Alias Portb
                        Bmmc_mosi Alias 2

                        ' MISO پایه سه MMC/SD
                        Config Pinb.3 = Input
                        Mmc_portmiso Alias Pinb
                        Bmmc_miso Alias 3

                        ' SCK پایه سه از MMC/SD
                        Config Pinb.1 = Output
                        Set Pinb.1
                        Mmc_portsck Alias Portb
                        Bmmc_sck Alias 1

                        ' --------- اتمام ----------------------------------------

                        #endif

                        ' ========== پایان پیکر بندی =======================================


                        ' خطاها
                        Const Cperrdrivereset = 225
                        Const Cperrdriveinit = 226
                        Const Cperrdrivereadcommand = 227
                        Const Cperrdrivewritecommand = 228
                        Const Cperrdrivereadresponse = 229
                        Const Cperrdrivewriteresponse = 230
                        Const Cperrdrive = 231
                        Const Cperrdrivenotsupported = 232

                        Waitms 1
                        Dim Gbdriveerror As Byte
                        Dim Gbdriveerrorreg As Byte
                        Dim Gbdrivestatusreg As Byte
                        Dim Gbdrivedebug As Byte
                        $lib "MMC.LIB"
                        $external _mmc
                        Gbdriveerror = Driveinit() 'برقراری ارتباط باMMC
                        Gbdriveerror = Drivecheck() 'امتحان برقرراری ارتباط

                        'توضیح:اگر خطایی رخ دهد مقدار آن در متغیر ریخته می گردد(Gbdriveerror)

                        Dim Abuffer(512) As Byte ' متغیر ارتباطی با سکتور
                        Dim Wsrampointer As Word ' آدرس متغیر درحافظه
                        Dim Lsectornumber As Long ' سکتور شماره
                        Dim I As Integer

                        'پر کردن متغیر به صورت دلخواه
                        'در ایجا به صورت مثال این طوری پر شده است
                        For I = 1 To 512
                        If I < 256 Then Abuffer(i) = I Else Abuffer(i) = 255
                        Next


                        'گرفتن آدرس اولین بایت متغیر از حافظه
                        Wsrampointer = Varptr(abuffer(1))

                        'شماره سکتور مورد نظر
                        'شما می توانید به دلخواه و با توجه به ظرفیت ام ام سی آن را تغییر دهید
                        Lsectornumber = 20000

                        ' نوشتن مقدار متغیر در سکتور انتخاب شده
                        Gbdriveerror = Drivewritesector(wsrampointer , Lsectornumber)


                        'خالی کردن متغیر
                        For I = 1 To 512
                        Abuffer(i) = 0
                        Next

                        'برای نشان دادن خالی بودن متغیر
                        Portd = Abuffer(57)



                        'گرفتن آدرس اولین بایت متغیر از حافظه
                        Wsrampointer = Varptr(abuffer(1))

                        'شماره سکتور مورد نظر
                        'شما می توانید به دلخواه و با توجه به ظرفیت ام ام سی آن را تغییر دهید
                        Lsectornumber = 20000

                        'خواندن از سکتور مورد نظر و ریختن در متغیر
                        Gbdriveerror = Drivereadsector(wsrampointer , Lsectornumber)


                        '*
                        'نشان دادن یک بایت از سکتور مورد نظر روی پرت برای امتحان کردن
                        'برای مثال بایت شماره ی 57 انتخاب شده
                        Portd = Abuffer(57)

                        End 'اتمام برنامه

                        'برای درک بیشتر فایل پروتیوس را اجرا کنید
                        'وقتی فایل پروتیوس را اجرا می کنید آن خطی که ستاره دار است در بالا مقدار آن را اجرا می کند
                        http://ceworld.ir/images/ads/dornablogcom_ads.gif

                        دیدگاه


                          #13
                          پاسخ : راه اندازی MMC

                          با سلام خدمت دوست عزیز آقای وحید نصیری

                          در ارتباط با MMC چند تا مشکل هست که زیاد اذیت میکنه

                          یکی این تبدیل ولتاژ به 3.3 ولته که یا باید با میکروی سری L این کارو انجام بدی یا با یه تقسیم مقاومت ساده ولتاژ 5 رو به 3.3 تبدیل کنی(مثلا 1.8K و 3.3K)

                          یکی دیگه حساسیت MMC به انجام درست Reset و Initialation هست
                          در این صورت باید حتما پس از ارسال CMD های مربوط به ریست و اینیشیال جواب هایی که کارت مبفرسته رو چک کنی و اگه همون جواب مورد نظر بود بری مرحله بعد.(مثلا برای ریست کارت جواب 1 میفرسته و برای ...)
                          اینا رو از تو دیتاشیت کارت میتونی در بیاری(SanDisk MMC رو سرچ بزن)

                          برای این منظور گاهی لازم میشه دیتور های ریست و غیره رو برای راه اندازی کارت چندین بار اجرا کنی تا کارت جواب درست رو بفرسته
                          برای این منظور این دستور ها رو توی یه حلقه بزار تا وقتی که درست اجرا کنه
                          برای این کار بهتره برای بار اول هر مرحله که دستور رو میفرستی جواب کارت رو روی LCD بنویسی تا مطمئن بشی

                          نکته بعدی اینه که آدرسی که برای خواندن یا نوشتن میفرستی باید 4 بایتی باشه. بنابراین در بسکام باید متغیر مناسب تعریف بشه.در کدویژن باید long int باشه.

                          نکته بعد اینه که در خواندن و نوشتن از MMC نمیتونی یک بایت خاص رو بنویسی یا بخونی. باید بصورت بلوکی بنویسی یا بخونی(هر بلوک 512 بایته).یه کلک برای خوندن و نوشتن یک بایت هست که باشه برای بعدا.
                          در ضمن باید بعد از ریست و اینیشیال ، با اینکه اندازه بلوک 512 بایته ولی تحت عنوان تنظیم اندازه بلوک به عنوان یک دستور بفرستی

                          اگه همه این موارد درست بود حالا میتونی درست بنویسی و بخونی.
                          برای اطمینان در یک آدرس خاص یک بار بخون.
                          مجددا مقدار جدیدی بنویس و دوباره از همون آدرس بخون

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

                          نکته دیگه اینه که باید تغذیه کارت از یک رگولاتور گرفته بشه. مثلا LF33CV یا LM317 یا غیره. هرگز از تقسیم مقاومتی و یا روش دیگه ای استفاده نکن. چون MMC به تغییرات تغذیه خیلی حساسه و ممکنه بسوزه.

                          در ضمن در ابتدای کار از ram reader برای نوشتن اطلاعات روی mmc استفاده نکن که به همین راحتی ها نیست

                          اگه اینو تونستی راه بندازی بگو تا رم ریدر هم یادت بدم


                          اگه به زبان Codevision مسلطی برنامشو دارم . اگه خواستی بگو بزارم

                          دیدگاه


                            #14
                            پاسخ : راه اندازی MMC

                            با درود . . .
                            با تشکر از راهنماییهاتون.

                            مواردی رو که اشاره کردید قبلا از دوستان در تاپیکهای متفاوت شنیده بودم.
                            یه چند روزی اینجا نبودم و نتونستم به انجمن سر بزنم.
                            برنامه ای رو که آقا بهنام قرار دادن من فایل کاملشو داشتم و دو هفته پیش که امتحانش کردم یه چیزای عجیب غریبی رو lcd نشون داد. اول من فکر کردم که برنامه اشتباهه یا سخت افزار رو اشتباهی بستم برا همین بیخیالش شدم و رفتم سراغ برنامه های دیگه.اما شبی که آقا بهنام به اون برنامه اشاره کرد دوباره سراغش رفتم. با کلی کلنجار رفتن دوباره قاطی پاتی داشت کار میکرد.منم حوصلم سر رفت و بیخیالش شدم و رفتم تا شام بخورم وقتی برگشتم دیدم برنامه داره درست کارشو میکنه و همون اطلاعاتی رو که قبلا به mmc داده بودم داره بهم نمایش میده. oo: oo: oo:
                            خب چه نتیجه ای میگیرید؟؟ برنامه بدبخت از اول داشته درست کار میکرده.اون اطلاعات قاطی پاتی هم مربوط به 292 بایت اول کارت میشد(از سکتور 0 تا 584) .همون شب ادامش دادمو جواب گرفتم :wow: :wow: :wow: :applause: :applause: :applause: فعلا باهاش برا تفریح یه wav player ساختم. :mrgreen:

                            "نکته بعدی اینه که آدرسی که برای خواندن یا نوشتن میفرستی باید 4 بایتی باشه"
                            اینییییی که گفتییییی یعنی چه!!!(بررهای بخون)

                            من الان همون آدرس سکتور دلخواهمو میدمو درست کار میکنه؟؟؟

                            "نکته دیگه اینه که بعد از هر مرحله خوندن یا نوشتن برای اجرای دستور بعدی، مجددا باید دستور های ریست و اینیشیال رو اجرا کنی
                            این دو دستور قبل از هر فرمان دیگه ای باید اچرا بشن"


                            بدون این دستورات هم من جواب گرفتم!!!؟؟؟؟؟؟؟

                            "نکته دیگه اینه که باید تغذیه کارت از یک رگولاتور گرفته بشه. مثلا LF33CV یا LM317 یا غیره. هرگز از تقسیم مقاومتی و یا روش دیگه ای استفاده نکن. چون MMC به تغییرات تغذیه خیلی حساسه و ممکنه بسوزه."

                            رگولاتورو ولش کن بابا زنرو عشق است
                            شوخی کردم، تو این شهر خراب شده ما هیچی پیدا نمیشه. اگر هم پیدا بشه یه چیزی در حدود 5 یا 10 برابر قیمت واقعیشه ( مثلا مقاومت 50 تومن.فیوز شیشه ای200 تومن.آیسی 555 بین 600 تا 650 تومنو . . . )(بین خودمون بمونه : یه بار 2 سال پیش رفتم به یکیشون گفتم لامینت میخام فکر کرد دارم بهش فحش میدم!!! ) البته اینم بگم که فقط یه مغازه اینجا داریم که ازبقیه مستثناست!!!! اونم یه دو هفته اییه بستس و معلوم نیست که کجان؟؟؟؟ :angry: :angry: :angry:



                            "در ضمن در ابتدای کار از ram reader برای نوشتن اطلاعات روی mmc استفاده نکن که به همین راحتی ها نیست"

                            یعنی چی؟؟
                            میشه توضیح بدید؟

                            با تشکــــــــــــــــــــــــــــــر.



                            درد من تنهایی نیست؛ بلکه مرگ ملتی است که گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حکمت خداوند می‏ نامند! "گاندی"

                            به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
                            بدرود . . .

                            دیدگاه


                              #15
                              پاسخ : راه اندازی MMC

                              اگه از کتابخانه های Bascom استفاده میکنید مواردی چون آدرس 4 بایتی و ریست و ... در آنها در نظر گرفته شده.

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


                              در مورد تغذیه هم. اگه از تقویت کننده های توان در مدار استفاده میشه(مثل پوش پول) حتما در قسمت توان بالا از یک دیود مناسب به عنوان فریویل استفاده کنید تا در صورت قطع و وصل شدن به تغذیه کارت که زنر هست لطمه نزنه.
                              اگه فریویل نمیزاری بهتره از رگولاتور استفاده کنی.

                              در ضمن در مورد استفاده از ram reader باید بگم که در روش سکتوری شما قادر به خواندن و نوشتن از خانه اول حافظه هستی. وقتی هم از خانه های ابتدایی استفاده میکنی وقتی تو رم ریدر میزاری اونو نمیشناسه و باید فرمتش کنی.
                              علتش هم اینه که ram reader با یکی از فرمت های FAT کار میکنن.
                              در FAT در ابتدای حافظه کارت دو تا جدول فت ایجاد میشه که مشخصات کارت و روت های اونو تو خودش نگه میداره
                              در ابتدای هر نوع فایلی که ایجاد میکنی هم حدود 32 بایت اولش رو مشخصات اون فایل از قبیل اسم ، پسوند ، حجم ، آدرس ، مسیر و ... تشکیل میده که در روش سکتور این اطلاعات بدردت نمیخوره و مزاحمت میشه.

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

                              دیدگاه

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