اطلاعیه

Collapse
No announcement yet.

avr و mmc

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

    #31
    پاسخ : avr و mmc

    ای ول . :wow: :wow: :applause:

    من هم پایه ام .

    خیلی وقته که میخواهم کار با mmc رو شروع کنم ،اما مطالب هاش خیلی پراکندست .

    من در نهایت میخواهم یه عکس رو از mmc بخونم و روی تابلو روان نمایش بدم .






    بگو که گل نفرستد کسی به خانه من
    که عطر یاد تو پر کرده آشیانه من

    دیدگاه


      #32
      پاسخ : avr و mmc

      بسیار عالیه
      ما هم منتظریم :applause: :applause: :applause: :applause: :applause:

      دیدگاه


        #33
        پاسخ : avr و mmc

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

        دیدگاه


          #34
          پاسخ : avr و mmc

          omega جان خوشمون اومد بقیه رو هم پلود کن :applause: :applause:

          دیدگاه


            #35
            پاسخ : avr و mmc

            من نتونستم هنوز با mmc کار کنم :cry2:
            از روش سکتور استفاده کردم اما جواب نمیده.
            این برنامشو شماتیک:







            $regfile = "m128def.dat"
            $crystal = 11059200
            $lib "MMC.LIB"
            $external _mmc
            '-----------------------------------------------------------------------------------------------
            Config Porta = Output
            '-----------------------------------------------------------------------------------------------
            Const Cmmc_soft = 1
            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

            Dim Abuffer(512) As Byte
            Dim Wsrampointer As Word
            Dim Lsectornumber As Long
            Dim I As Integer

            Declare Sub Select_spi
            Declare Sub Init_prog
            Declare Sub Write_mmc
            Declare Sub Read_mmc
            Declare Sub Write_var
            Declare Sub Clear_var
            '-----------------------------------------------------------------------------------------------
            Main:
            Init_prog
            Write_var
            Write_mmc
            Clear_var
            Porta = Abuffer(57)
            Read_mmc
            Porta = Abuffer(57)
            Do

            Loop
            End
            '-----------------------------------------------------------------------------------------------
            Sub Select_spi
            #if Cmmc_soft = 0
            Config Pind.3 = Output
            Mmc_cs Alias Portd.3
            Set Mmc_cs

            Config Pind.3 = Output
            Spi_ss Alias Portd.3
            Set Spi_ss

            Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
            Spsr = 1
            Spiinit
            #else
            Config Pind.3 = Output
            Mmc_cs Alias Portd.3
            Set Mmc_cs

            Config Pind.4 = Output
            Set Pind.4
            Mmc_portmosi Alias Portd
            Bmmc_mosi Alias 4

            Config Pind.2 = Input
            Mmc_portmiso Alias Pind
            Bmmc_miso Alias 2

            Config Pind.5 = Output
            Set Pind.5
            Mmc_portsck Alias Portd
            Bmmc_sck Alias 5
            #endif
            End Sub
            '-----------------------------------------------------------------------------------------------
            Sub Init_prog
            Select_spi
            Gbdriveerror = Driveinit()
            Gbdriveerror = Drivecheck()
            End Sub
            '-----------------------------------------------------------------------------------------------
            Sub Write_mmc
            Wsrampointer = Varptr(abuffer(1))
            Lsectornumber = 20000
            Gbdriveerror = Drivewritesector(wsrampointer , Lsectornumber)
            End Sub
            '-----------------------------------------------------------------------------------------------
            Sub Read_mmc
            Wsrampointer = Varptr(abuffer(1))
            Lsectornumber = 20000
            Gbdriveerror = Drivereadsector(wsrampointer , Lsectornumber)
            End Sub
            '-----------------------------------------------------------------------------------------------
            Sub Write_var
            For I = 1 To 512
            If I < 256 Then
            Abuffer(i) = I
            Else
            Abuffer(i) = 255
            End If
            Next I
            End Sub
            '-----------------------------------------------------------------------------------------------
            Sub Clear_var
            For I = 1 To 512
            Abuffer(i) = 0
            Next I
            End Sub
            '-----------------------------------------------------------------------------------------------

            دیدگاه


              #36
              پاسخ : avr و mmc

              کسی بلد نیست؟ :cry2:

              دیدگاه


                #37
                پاسخ : avr و mmc

                یه سرچ بکن به روش سکتور رو چندین جا گزاشتم میبینیش

                این تقسیم مقاومتی رو هم ورشدار به جاش میکرو رو بسیار رو 3.3 ولت
                علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

                دیدگاه


                  #38
                  پاسخ : avr و mmc

                  راستش گشتم اما پیدا نکرم.

                  دیدگاه


                    #39
                    پاسخ : avr و mmc

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

                    کد:
                    '-------------------------------------------------------------------------------
                    
                    $regfile = "M16def.dat"
                    $crystal = 1000000
                    $baud = 1200
                    
                    
                    '-------------------------- MMC Pin Configuration ------------------------------
                    ' Change this pin configuration if it is necessary in your project.
                    
                    Cs Alias Portb.4 : Config Pinb.4 = Output          'Connected to Pin No.1 Of MMC (CS)
                    Mosi Alias Portb.5 : Config Pinb.5 = Output         'Connected to Pin No.2 Of MMC (DataIn)
                    Clk Alias Portb.7 : Config Pinb.7 = Output         'Connected to Pin No.5 Of MMC (Clock)
                    Miso Alias Pinb.6 : Config Pinb.6 = Input
                    Config Portb.1 = Output
                    Reset Portb.1                        'Connected to Pin No.7 Of MMC (DataOut)
                    
                    '---------------------------- MMC Var. Define ----------------------------------
                    ' MMC function declarations and variables.
                    ' DONT TOUCH THIS PART!!!
                    
                    Declare Sub Mmc_init
                    Declare Sub Mmc_status
                    Declare Sub Mmc_singleread
                    Declare Sub Mmc_singlewrite
                    Declare Sub Mmc_printbuffer
                    
                    Dim Mmc_buffer(512) As Byte
                    Dim Sector_pointer As Word
                    Dim Free_counter As Word
                    Dim Sector_number As Long
                    Dim Addr As Long
                    Dim Mmc_dat As Byte
                    
                    Dim Mmc_resp As Byte
                    Dim Mmc_resp2 As Word
                    Dim Y As Byte
                    Dim I As Word
                    Dim V As Byte
                    Dim T As Byte
                    Dim S As String * 70
                    Dim D As String * 70
                    Dim Dd As String * 1
                    Dim Ss As String * 1
                    Dim Idx As Byte
                    Dim A As Byte
                    Const Msbl = 0 : Const Msbh = 1
                    Const Spidelay = 5
                    
                    Wait 1
                    
                    Mmc_init
                    
                    '----------------------- Your Functions Declarations ---------------------------
                    ' Write Your Functions Declarations Here:
                    
                    '-------------------------------------------------------------------------------
                    
                    '-------------------------------- M A I N --------------------------------------
                    
                    'Write Here Your Main Code :
                    'Example :
                    '$lib "MMC.LIB"
                    '$external _mmc
                    Dim My_counter As Integer
                    Dim In_char As String * 1
                    'Lets have a look at the file we created
                    
                    Print "Dir function demo"
                    
                    
                    
                    Input "pleaz insert the name and press inter" , S
                    
                    Print "------------------start for buffer--------------------------"
                    
                    Idx = Len(s)
                    Print "len(s) hast :" ; Idx
                    For A = 1 To Idx
                    Ss = Mid(s , A , 1)
                    Select Case Ss
                    Case "A" :
                          Mmc_buffer(a) = 0
                          Print "0"
                    
                    
                    Case "B":
                          Mmc_buffer(a) = 1
                          Print "1"
                    
                    Case "C":
                          Mmc_buffer(a) = 2
                          Print "2"
                    Case "D":
                    
                          Mmc_buffer(a) = 3
                          Print "3"
                    Case "E":
                    
                          Mmc_buffer(a) = 4
                          Print "4"
                    Case "F":
                    
                          Mmc_buffer(a) = 5
                          Print "5"
                    Case "G":
                    
                          Mmc_buffer(a) = 6
                          Print "6"
                    Case "H":
                    
                          Mmc_buffer(a) = 7
                          Print "7"
                    Case "I":
                    
                          Mmc_buffer(a) = 8
                          Print "8"
                    Case "J":
                    
                          Mmc_buffer(a) = 9
                          Print "9"
                    Case "K":
                    
                         Mmc_buffer(a) = 10
                    Case "L":
                    
                         Mmc_buffer(a) = 11
                    Case "M":
                    
                          Mmc_buffer(a) = 12
                    Case "N":
                    
                          Mmc_buffer(a) = 13
                    
                    Case "O":
                    
                          Mmc_buffer(a) = 14
                    
                    Case "P":
                    
                           Mmc_buffer(a) = 15
                    Case "Q":
                    
                            Mmc_buffer(a) = 16
                    Case "R":
                    
                    
                            Mmc_buffer(a) = 17
                    Case "S":
                    
                            Mmc_buffer(a) = 18
                    Case "T":                          ':
                    
                            Mmc_buffer(a) = 19
                    Case "U":
                    
                            Mmc_buffer(a) = 20
                    Case "V":
                    
                           Mmc_buffer(a) = 21
                    Case "W":
                    
                            Mmc_buffer(a) = 22
                    Case "X":
                    
                            Mmc_buffer(a) = 23
                    Case "Y":
                    
                            Mmc_buffer(a) = 24
                    Case "Z":
                    
                            Mmc_buffer(a) = 25
                            Print "z"
                    Case " ":
                    
                            Mmc_buffer(a) = 26
                            Print "space"
                    Case Else:
                    Print "----------------------------error----------------------"
                    Print Ss
                    
                    
                    
                    End Select
                    Next
                    
                    Print "---------------------CLEAR---------------------------------"
                    
                    For A = 31 To 50
                    
                    Mmc_buffer(a) = 100
                    Next
                    Input "INTER NOUMBER THEN PRES INTER" , D
                    
                    Idx = Len(d)
                    Print "len(s) hast :" ; Idx
                    Idx = Idx + 51
                    V = 1
                    For A = 51 To Idx
                    
                    Dd = Mid(d , V , 1)
                    Mmc_buffer(a) = Dd
                    Incr V
                    Next
                    
                    
                    For A = 120 To 255
                    Mmc_buffer(a) = 80
                    Next
                    
                    
                    
                    
                    
                    
                    'Wait for a key press.
                    Print "--Press Any Key To Continue..." : In_char = Waitkey()
                    'Write MMC Buffer At Sector No.10 :
                    Sector_number = 170 : Mmc_singlewrite
                    
                    'Wait for a key press.
                    Print "--Press Any Key To Continue..." : In_char = Waitkey()
                    'Read Sector No.10 And Fill MMC_Buffer With It :
                    Sector_number = 170 : Mmc_singleread
                    
                    'Wait for a key press.
                    Print "--Press Any Key To Continue..." : In_char = Waitkey()
                    'Send MMC Buffer To Serial Port :
                    Mmc_printbuffer
                    
                    
                    
                    End
                    
                    '--------------------------------- E N D ---------------------------------------
                    
                    
                    '------------------------------- Functions -------------------------------------
                    '-------------------------------------------------------------------------------
                    ' Write your functions here :
                    
                    
                    '-------------------------------------------------------------------------------
                    '---------------------------- Initializing MMC ---------------------------------
                    Sub Mmc_init
                    
                    Print "--Start Initializing MMC ..."
                    Set Portb.1
                    Set Cs
                    Mmc_dat = &HFF
                    For Free_counter = 1 To 10
                      Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                    Next Free_counter
                    Mmc_resp = 255
                    
                    Print "--Command No.=0"
                    Reset Cs
                    '40 dar asl argooman ast
                    'yani bite aval 0(start)bit 2vom(1){safhey 473 va 474 ketab}va 6 bit cmd ast}
                    Cmd0:
                    Mmc_dat = &H40 : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay    '8 bite avval
                       Addr = 0 : Shiftout Mosi , Clk , Addr , Msbl , 32 , Spidelay    '32 bit argooman
                    Mmc_dat = &H95 : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay    'crc(tashkise khata)
                    While Mmc_resp <> &H01                   'mitoni inja beshmari bebini chand ta klock mizaneh
                      Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    Wend
                    Print "--Command Response :" ; Hex(mmc_resp)
                    
                    Set Cs
                    Waitms 50
                    
                    Print "--Command No.=1"
                    Reset Cs
                    Mmc_dat = &HFF
                    Cmd1:
                    While Mmc_resp <> &H00
                      Set Cs
                      Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                      Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    
                      Reset Cs
                      Mmc_dat = &H41 : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                         Addr = 0 : Shiftout Mosi , Clk , Addr , Msbl , 32 , Spidelay
                      Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                              Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                      Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    Wend
                    Mmc_dat = &HFF
                    Set Cs
                    
                    Print "--Command Response :" ; Hex(mmc_resp)
                    Print ""
                    Mmc_status                         '***************************chek for status
                    Print "--Initialize Complete."
                    
                    
                    End Sub
                    '-------------------------- MMC Initializing END -------------------------------
                    
                    '-------------------------------------------------------------------------------
                    
                    '---------------------------- Read MMC Status ----------------------------------
                    Sub Mmc_status
                    
                    Cmd13:
                    Set Cs
                    Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                    Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    
                    Reset Cs
                    Mmc_dat = &H4D : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay    'mmc dat=4d yani 4 ro bi khial d=13
                    'ya dakhele dastore cmd 1=mishe 41 va to cmd 0 mishe 40(yooohooo)
                       Addr = 0 : Shiftout Mosi , Clk , Addr , Msbl , 32 , Spidelay
                    Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                             Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                    Shiftin Miso , Clk , Mmc_resp2 , Msbl , 8 , Spidelay
                    Print "" : Print "--Status :" ; Hex(mmc_resp2)
                    Set Cs
                    
                    End Sub
                    '--------------------------- Read MMC Status END -------------------------------
                    
                    '-------------------------------------------------------------------------------
                    
                    '------------------------- MMC Read Single Sector ------------------------------
                    Sub Mmc_singleread
                    
                    Addr = Sector_number * 512
                    Print "----------------------------------"
                    Print "--Start Sector Reading ..."
                    Print "--Read Sector Address :" ; Addr
                    Print "--Command No.=17,(Read Single Block)"
                    
                    Set Cs
                    Mmc_dat = &HFF
                    Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                    Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    
                    Cmd17:
                    Reset Cs
                    Mmc_dat = &H51 : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                             Shiftout Mosi , Clk , Addr , Msbl , 32 , Spidelay
                    Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                    
                    Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    While Mmc_resp <> 0
                      Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    Wend
                    Print "--Command Response :" ; Hex(mmc_resp) : Print ""
                    
                    While Mmc_resp <> &HFE
                      Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    Wend
                    
                    For Sector_pointer = 1 To 512
                       Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                       Mmc_buffer(sector_pointer) = Mmc_resp
                    Next Sector_pointer
                    
                    Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    
                    Set Cs
                    Mmc_status                         '***************************chek for status
                    Print "--Sector Reading Finished."
                    
                    End Sub
                    '----------------------- MMC Read Single Sector END ----------------------------
                    
                    '-------------------------------------------------------------------------------
                    
                    '------------------------ MMC Write Single Sector ------------------------------
                    Sub Mmc_singlewrite
                    
                    Addr = Sector_number * 512
                    
                    Print "--Start Sector Writing ..."
                    Print "--Write Sector Address :" ; Addr
                    Print "--Command No.=24(Write Single Block)"
                    
                    Set Cs
                    Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                             Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    
                    Cmd24:
                    Reset Cs
                    Mmc_dat = &H58 : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                             Shiftout Mosi , Clk , Addr , Msbl , 32 , Spidelay
                    Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                             Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                    
                    Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    While Mmc_resp <> 0
                      Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    Wend
                    Print "--Command Response :" ; Hex(mmc_resp) : Print ""
                    
                    Mmc_dat = &HFE : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                      For Sector_pointer = 1 To 512
                       Mmc_dat = Mmc_buffer(sector_pointer)
                       Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                      Next Sector_pointer
                    
                    Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                    Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
                    
                    Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    Y = Mmc_resp And &H0F
                    If Y = &H05 Then                      'if mmcrecp=5 shod data accept misheh jigar
                      Print "" : Print "--Data Accepted."
                    End If
                    
                    Waitms 10
                    
                    Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    If Mmc_resp = 0 Then Print "--MMC Is Busy!"
                    While Mmc_resp = 0
                      Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
                    Wend
                    Print "--MMC Is Ready!"
                    
                    Set Cs
                    Mmc_status
                    Print "--Sector Writing Finished."
                    
                    
                    End Sub
                    '----------------------- MMC Write Single Sector END ---------------------------
                    
                    '-------------------------------------------------------------------------------
                    
                    '---------------------------- MMC Print Buffer ---------------------------------
                    Sub Mmc_printbuffer
                    
                    Print "--Start Reading MMC Buffer ..."
                    
                    S = ""
                    T = 1
                       Print "--MEGGGGGGGGGGA CHIP ADIBAN"
                    
                      For Sector_pointer = 1 To 512
                    
                       'If Mmc_buffer(sector_pointer) < 30 Then
                    
                    
                    
                       'Ss = Lookupstr(mmc_buffer(sector_pointer) , Sdata)
                       'Mid(s , T , 1) = Ss
                       'Print "  " ; S
                       'Print Mmc_buffer(sector_pointer)
                       'Incr T
                       'Else
                       Print Asc(mmc_buffer(sector_pointer)) ; ",";
                       'End If
                    
                    
                    
                       Free_counter = Sector_pointer Mod 16
                       If Free_counter = 0 Then Print ""
                      Next Sector_pointer
                    
                    
                    Print "--Reading MMC Buffer Finished."
                    
                    End Sub
                    '-------------------------- MMC Print Buffer END -------------------------------
                    '-------------------------------------------------------------------------------
                    '-------------------------------------------------------------------------------
                    
                    
                    
                    Sdata:
                    Data "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , _
                             "N" , "O" , "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "X" , "Y" , "Z" , " "
                    علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

                    دیدگاه


                      #40
                      پاسخ : avr و mmc

                      اینجا کسی با اسمبلی کار نکرده؟

                      دیدگاه


                        #41
                        پاسخ : avr و mmc

                        من که چیزی از برنامه نفهمیدم. :redface:

                        دیدگاه


                          #42
                          پاسخ : avr و mmc

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

                          این AVR-DOS چی هست؟
                          چرا همه در این مورد با bascom کار کردن ؟ نمیشه با اسمبلی و c کار کرد؟
                          چرا بعضی جاها گفته شده که از atmega8 نمیشه استفاده کرد؟
                          وقتی میخوایم فایل با فرمت wav رو از رو mmc یا sd بخونیم ، نحوه ذخیره این فایلها در mmc یا sd به چه صورت خواهد بود ؟ یعنی فایل رو همینجوری میریزیم رو مموری؟

                          دیدگاه


                            #43
                            پاسخ : avr و mmc

                            قاصدک جان یه فایل از آقای تروشه براتون پلود کردم انشالله به دردتون بخوره.

                            http://www.4shared.com/file/131655497/8aaea26d/avr-dos.html
                            It's nice to be important but it's important to be nice!

                            از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

                            دیدگاه


                              #44
                              پاسخ : avr و mmc

                              سلام
                              با تشکر از همه دوستان که تو این تاپیک اظهار نظر کردند و تشکر ویژه از آقای شفقی به خاطر قرار دادن مطلب بسیار مفید آقای تروشه
                              به دوستان پیشنهاد می کنم این فایل رو بخونن و سوالامونو تو همین تاپیک بر اساس اون بپرسیم
                              نوشته اصلی توسط رضا شفقی
                              http://www.4shared.com/file/131655497/8aaea26d/avr-dos.html
                              واسه شروع من خودم یه سری سوال دارم که به مرور اینجا قرار میدم.

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

                              امیدوارم این تاپیک پس از سوال و جوابای مفید، تیدیل به یه مرجع خوب واسه کار با mmc بشه،انشاالله
                              پیشاپیش از همه دوستانی که با سوالا و جواباشون در پیشبرد این تاپیک کمک میکنن ممنون

                              دیدگاه


                                #45
                                پاسخ : avr و mmc

                                سوالامو از config_mmc.bas شروع میکنم
                                واسه اینکه در دسترس باشه اینجا قرارش میدم :

                                ' THIS IS AN INCLUDE FILE
                                ' DO NOT COMPILE
                                $nocompile
                                '-------------------------------------------------------------------------------
                                ' Config_MMC.BAS
                                ' Config File for MMC Flash Cards Driver
                                ' (c) 2003-2005 , MCS Electronics / Vögel Franz Josef
                                '-------------------------------------------------------------------------------
                                ' Place MMC.LIB in the LIB-Path of BASCOM-AVR installation
                                '
                                'Connection as following
                                'MMC M128/M103
                                '1 MMC_CS PORTB.0
                                '2 MOSI PORTB.2
                                '3 GND
                                '4 +3.3V
                                '5 CLOCK PORTB.1
                                '6 GND
                                '7 MISO, PORTB.3

                                ' you can vary MMC_CS on HW-SPI and all pins on SOFT-SPI, check settings
                                ' ========== Start of user definable range =====================================

                                ' you can use HW-SPI of the AVR (recommended) or a driver build in Soft-SPI, if
                                ' the HW-SPI of the AVR is occupied by an other SPI-Device with different settings

                                ' Declare here you SPI-Mode
                                ' using HW-SPI: cMMC_Soft = 0
                                ' not using HW_SPI: cMMC_Soft = 1

                                Const Cmmc_soft = 0

                                #if Cmmc_soft = 0

                                ' --------- Start of Section for HW-SPI ----------------------------------------

                                ' define Chip-Select Pin
                                Config Pinb.0 = Output ' define here Pin for CS of MMC/SD Card
                                Mmc_cs Alias Portb.0
                                Set Mmc_cs

                                ' Define here SS Pin of HW-SPI of the CPU (f.e. Pinb.0 on M128)
                                Config Pinb.0 = Output ' define here Pin of SPI SS
                                Spi_ss Alias Portb.0
                                Set Spi_ss ' Set SPI-SS to Output and High por Proper work of
                                ' SPI as Master

                                ' HW-SPI is configured to highest Speed
                                Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
                                Spsr = 1 ' Double speed on ATMega128
                                Spiinit ' Init SPI

                                ' --------- End of Section for HW-SPI ------------------------------------------

                                #else ' Config here SPI pins, if not using HW SPI

                                ' --------- Start of Section for Soft-SPI --------------------------------------

                                ' Chip Select Pin => Pin 1 of MMC/SD
                                Config Pinb.0 = Output
                                Mmc_cs Alias Portb.0
                                Set Mmc_cs

                                ' MOSI - Pin => Pin 2 of MMC/SD
                                Config Pinb.2 = Output
                                Set Pinb.2
                                Mmc_portmosi Alias Portb
                                Bmmc_mosi Alias 2

                                ' MISO - Pin => Pin 7 of MMC/SD
                                Config Pinb.3 = Input
                                Mmc_portmiso Alias Pinb
                                Bmmc_miso Alias 3

                                ' SCK - Pin => Pin 5 of MMC/SD
                                Config Pinb.1 = Output
                                Set Pinb.1
                                Mmc_portsck Alias Portb
                                Bmmc_sck Alias 1

                                ' --------- End of Section for Soft-SPI ----------------------------------------

                                #endif

                                ' ========== End of user definable range =======================================


                                ' Error
                                Const Cperrdrivereset = 225 ' Error response Byte at Reset command
                                Const Cperrdriveinit = 226 ' Error response Byte at Init Command
                                Const Cperrdrivereadcommand = 227 ' Error response Byte at Read Command
                                Const Cperrdrivewritecommand = 228 ' Error response Byte at Write Command
                                Const Cperrdrivereadresponse = 229 ' No Data response Byte from MMC at Read
                                Const Cperrdrivewriteresponse = 230 ' No Data response Byte from MMC at Write
                                Const Cperrdrive = 231
                                Const Cperrdrivenotsupported = 232 ' return code for DriveGetIdentity, not supported yet

                                Waitms 1 ' Wait some time before initialising MMC/SD
                                Dim Gbdriveerror As Byte ' General Driver Error register
                                Dim Gbdriveerrorreg As Byte ' Driver load Error-Register of HD in case of error
                                Dim Gbdrivestatusreg As Byte ' Driver load Status-Register of HD on case of error
                                Dim Gbdrivedebug As Byte
                                $lib "MMC.LIB" ' link driver library
                                $external _mmc
                                Gbdriveerror = Driveinit() ' Init MMC/SD Card

                                دیدگاه

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