اطلاعیه

Collapse
No announcement yet.

ارور 226 در هنگام کار با sd و مگا32

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

    ارور 226 در هنگام کار با sd و مگا32

    سلام بر همگی

    از دوستان کسی معنی ارور 226 در هنگام راه اندازی کارت میکرو اس دی رو میدونه؟
    پس از اینکه دستور درایو اینیت رو میدم این ارور صادر میشه. داخل هلپ بسکام نوشته که یعنی یه تایم اوت هنگام نوشتن و یا خواندن اتفاق افتاده. اما این یعنی چی؟
    پس چرا وقتی بجای میکرو اس دی رم ام ام سی قرار میدم راه میفته و درست کار میکنه. نکنه رم های میکرو اس دی جدیدا قابلیت spi ندارن؟؟؟

    ممنون میشم کسی جواب این همه سوالات پرت و پلای منو لطف کنه و بده
    با تشکر
    نيست بر لوح دلم جز الف قامت دوست *** چه کنم حرف دگر ياد نداد استادم

    #2
    پاسخ : ارور 226 در هنگام کار با sd و مگا32

    سلام راستش من وقتی از مگا 32 استفاده میکردم اینطوری میشد
    AV Maziton 100
    Render By Artlantis Studio
    [img width=346 height=100]http://maziyar123.persiangig.com/View.jpg[/img]

    دیدگاه


      #3
      پاسخ : ارور 226 در هنگام کار با sd و مگا32

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

      دیدگاه


        #4
        پاسخ : ارور 226 در هنگام کار با sd و مگا32

        برام عجیبه چرا کسی همکاری نمیکنه!؟؟ oo: :cry2:

        من این برنامه رو براش نوشتم

        Locate 1 , 3
        Lcd "plaese wait"
        Locate 2 , 2
        Lcd "loading memory"

        Waitms 500

        '******************************************** ************************************************** * MMC HARDWARE
        Const Cmmc_soft = 0

        Config Pinb.4 = Output
        Mmc_cs Alias Portb.4
        Set Mmc_cs

        Config Pinb.4 = Output
        Spi_ss Alias Portb.4
        Set Spi_ss

        Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
        Spsr = 1
        Spiinit
        '******************************************** ************************************************** *


        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 10
        Dim Gbdriveerror As Byte
        Dim Gbdriveerrorreg As Byte
        Dim Gbdrivestatusreg As Byte
        Dim Gbdrivedebug As Byte

        $lib "MMC.LIB"
        $external _mmc

        Gbdriveerror = Drivereset()
        Gbdriveerror = Driveinit()


        Cls
        If Gbdriveerror = 0 Then
        Locate 1 , 8
        Lcd "ok"
        Waitms 500

        Else
        Locate 1 , 7
        Lcd "error"

        Waitms 500

        Cls
        Gbdriveerror = Drivereset()
        Gbdriveerror = Driveinit()
        jmp er

        End If


        اینم اروریه که میده:


        کسی میتونه بگه مشکل از کجاست؟
        یا لااقل یه برنامه که ازش جواب گرفته باشه بزاره

        با تشکر
        نيست بر لوح دلم جز الف قامت دوست *** چه کنم حرف دگر ياد نداد استادم

        دیدگاه


          #5
          پاسخ : ارور 226 در هنگام کار با sd و مگا32

          این خطا احتمالا بدلیل اتصالات کارت حافظه هست ، بررسی کنید که اتصالات درست باشه و کارت حافظه درست به کارت خوان متصل شده باشه
          یه دور هم فرمت کنید بد نیست ، البته با فرمت Fat 16 ...
          چون من گدایی بی نشان مشکل شود یاری چنان
          سلطان کجا عیش نهان با رند بازاری کند...
          [حافظ]

          دیدگاه


            #6
            پاسخ : ارور 226 در هنگام کار با sd و مگا32

            نوشته اصلی توسط محسن 1404
            این خطا احتمالا بدلیل اتصالات کارت حافظه هست ، بررسی کنید که اتصالات درست باشه و کارت حافظه درست به کارت خوان متصل شده باشه
            یه دور هم فرمت کنید بد نیست ، البته با فرمت Fat 16 ...
            کلا سوکت رو برداشتم و از طریق سیم مستقیم رم رو با سیمهای 2 سانتی به بردبرد وصل میکنم. اما همچنان مشکل داره. ولی به محض اینکه یه رم mmc میزارم میشناستش و کار میکنه.
            گفتم شاید بخاطر ظرفیتشه که 1گیگ هست. منم گرفتم با پارتیشن منیجر رم رو کردم 512 مگ ولی بازم کار نکرد.
            ضمنا مگه در ارتباط به طریق spi مهمه که تحت fat باشه یا چیز دیگه؟؟؟
            تا اونجا که من میدونم سکتورها در این ارتباط مهم هستن.

            نيست بر لوح دلم جز الف قامت دوست *** چه کنم حرف دگر ياد نداد استادم

            دیدگاه


              #7
              پاسخ : ارور 226 در هنگام کار با sd و مگا32

              اینطوری نمیشه چیزی گفت من که بسکام رو کلا قبول ندارم
              تمام کدها و این فایل MMC.lib و ... رو برام ایمیل کنید تا تو پروتئوس با SPI Debugger ببینم چشه.
              mostafa.hk@gmail.com
              بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
              اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

              دیدگاه


                #8
                پاسخ : ارور 226 در هنگام کار با sd و مگا32

                خب به سلامتی اکانت ما هم هک شده و بالا نمیاد!!! :cry2:
                من گرفتم فایل mmc.lib رو اینجا گذاشتم براتون
                http://www.pic.iran-forum.ir/images/btfaas6qiqtnhrifry8.rar
                برنامه هم همون بالاییه که نوشته بودم
                بسیار سپاسگذارم
                نيست بر لوح دلم جز الف قامت دوست *** چه کنم حرف دگر ياد نداد استادم

                دیدگاه


                  #9
                  پاسخ : ارور 226 در هنگام کار با sd و مگا32

                  :cry:
                  علت عدم هم کاری اینه که اصلا لایب ریری avr dos
                  برای مگا 32 یا 16 نیست
                  برای همونه که هر روز یه ایراد میده یا یه مشکلی پیش میاد
                  من خودمم با مگا 32 مشکل داشتم و مشکلم این بود که هنگام نوشتن و خوندن توی مموری میکرو ریست میشد
                  خلاصه متوجه شدم که قدرت کم نرم افزار بیسکام باعث حذف بعضی از کارکتر های مهم در sram میشد که در نهایت مسیر اجرای بنامه به هم خورده و میکرو ریست میشد در حالی که هیچ اروری مبنی بر پر شدن sram هم ندیده بودم
                  ولی اگه فقط مشکل شما با میکرو 64 و 128 در نصب سطحی بودنشه
                  من کمکتون می کنم اینو بدونید که از لحیم کاری قطعات دیپ اسون تره
                  فیبر مدار چاپی رو هم خودتون میتونید چاپ کنید
                  [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                  دیدگاه


                    #10
                    پاسخ : ارور 226 در هنگام کار با sd و مگا32

                    http://avr-dos.yazdkit.com/
                    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                    دیدگاه


                      #11
                      پاسخ : ارور 226 در هنگام کار با sd و مگا32

                      بسیار سپاسگذارم
                      اما اگه توجه کرده باشید اینجا بحث راجع به SPI هست!!! oo:
                      من راجع به نصب سطحی هم به هیچ وجه مشکلی ندارم.
                      نمونش:

                      چندتایی هم برای مگا32 زدم تابحال. همشون هم با اتو زدم(البته به کمک یکی از آشنایان که توی سایت هم هستن)
                      برام عجیبه که چه ربطی به موضوع داره که مطرحش کردید!!! اینجا بحث راجع به راه اندازی اولیه هست که هنوز مشکل داره نه خواندن و نوشتن!!!
                      نيست بر لوح دلم جز الف قامت دوست *** چه کنم حرف دگر ياد نداد استادم

                      دیدگاه


                        #12
                        پاسخ : ارور 226 در هنگام کار با sd و مگا32

                        :mrgreen:
                        ترو خدا یه زره اخلاق داشته باشین !!!
                        خوب نمیدونم چه اسراریه که شما نمی خواین از میکرو های زرگتر استفاده کنید ؟؟
                        توی تاپیک قبلی تون به علت اینکه اس رم کم اوردین مجبور به استفاده از رم شدین
                        الانم میدونم اکثر مشکلتون به دلیل کم بودن فضای اس رمتون هست
                        در ضمن من کلا از اول از این پروتکل هیچ خوبی ندیدم
                        2 ماه با rfm12bpور رفتم جواب نداد !!
                        spi بود
                        با vs1003 چند ماهی ور رفتم ازم جواب نداد spi بود
                        راه اندازی mmc 2 ماه وقتم رو گرفت spi بود !!!
                        در ضمن 2 ماه من به علت استفاده از مگا 32 هدر رفت
                        زیر بار حرف هیشکی نمیرفتم میگفتم کار میکنه !!
                        ولی بعدش فهمیدم که هیچی از الکترونیک نمیدونم !!!
                        دارم دباره تاپیکو مطالعه میکنم اگه چیزی فهمیدم یا چیزی می دونستم که ا اطلا عات شما بیشتر بود حتما میگم !!
                        [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                        دیدگاه


                          #13
                          پاسخ : ارور 226 در هنگام کار با sd و مگا32

                          نوشته اصلی توسط maziyar123
                          سلام راستش من وقتی از مگا 32 استفاده میکردم اینطوری میشد
                          :sad:
                          [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                          دیدگاه


                            #14
                            پاسخ : ارور 226 در هنگام کار با sd و مگا32

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

                            تا منظور شما از اخلاق چی باشه؟!! من در این انجمن سعی میکنم رسمی صحبت کنم و زیاد به به و چه چه نکنم. باز هم اگر شما از اینطور حرف زدن من رنجشی پیدا کردید معذرت میخوام.
                            برای این درکش کمی مشکله که شما در سطح آزمایشی بهش نگاه میکنید نه تولید!!! بله برای اینکه راه اندازی یه وسیله رو یاد بگیری مهم نیست که از چی استفاده کنی. اما زمانی که میخوای طرح رو برای تولید آماده کنی باید با کمترین هزینه طرح رو اجرا کنی تا مقرون به صرفه باشه.(خودتون حساب کنید که با یه میکروی 1500 تومنی میشه کار رو انجام داد.آیا عاقلانه هستش که یه میکروی 4000 تومنی استفاده بشه و هم حجم رو بالا ببره و هم هزینه رو؟)
                            توی اون تاپیکی هم که به خاطر sram ایجادش کردم اگر دقیق تر میخوندید متوجه میشدید که من گفتم به 1024 بایت sram احتیاج دارم و برای همینم مگا8 رو کنار گذاشتم و مگا32 رو انتخاب کردم. ضمنا بهتره بدونید که دلیل اصلی کنار گذاشتن مگا8 به خاطر sram نبود چون برنامه رو یه جور بهینه اش کردم که 512 تا sram بخواد و با مگا8 هم جواب میده. اما دلیل اصلی کم آوردن 3 پایه برای کنترل بقیه موارد بود.
                            بگذریم الان میان میگن چرا بحث رو منحرف کردید و باید تاپیک منتقل بشه به گفتگوی آزاد!!!!!!! :biggrin:

                            دلیل نمیتونه از میکرو باشه اینو مطمئنم. برای بار چندم میگم:اگه از میکرو بود نباید با mmc جواب میداد اما این بیچاره داره با mmc جواب میده. پس مشکل از برنامه هستش.
                            من هم منتظرم تا یکی بیاد و بگه که بابا اینجای برنامه مثلا باید فلان کارو کنی تا sd راه بیفته. که فعلا زحمتش رو جناب حیدری دارن میکشن. :applause:






                            نيست بر لوح دلم جز الف قامت دوست *** چه کنم حرف دگر ياد نداد استادم

                            دیدگاه


                              #15
                              پاسخ : ارور 226 در هنگام کار با sd و مگا32

                              اینو تست کنید
                              mmc.lib رو تغییرات فنی دادم
                              تازه کد برنامه هم ندادید. اینی که چند تا پست قبل تر گذاشتید ناقصه.
                              در کل اگه قصد ساخت دستگاه جدی جهت تولید و اینا دارید وققتون رو با بسکام تلف نکنید.


                              Copyright = Mcs Electronics / Vögel Franz Josef
                              Www = Http : / / Www.mcselec.com / Http : / / Members.aon.at / Voegel
                              Email = Avr@mcselec.com
                              Comment = Mmc Driver For Avr -dos Compiler Library
                              Libversion = 2.00
                              Date = 25 April 2005
                              Statement = No Source Code From The Library May Be Distributed In Any Form Unless You Have Permision From The Author
                              Statement = For Support Please Check Http : / / Members.aon.at / Voegel For Contact Address
                              History = No Known Bugs.


                              [_mmc]
                              ; Error conditions:
                              ; 225: Error response Byte at Reset command
                              ; 226: Error response Byte at Init Command
                              ; 227: Error response Byte at Read Command
                              ; 228: Error response Byte at Write Command
                              ; 229: No Data response Byte from MMC at Read
                              ; 230: No Data response Byte from MMC at Write


                              _mmc_send_command:
                              *BASIC: Reset Mmc_cs ' reset Cs
                              rcall _Byte2SPI ; Send CMD
                              mov r16,r23 ; send MSB first
                              rcall _Byte2SPI
                              mov r16,r22
                              rcall _Byte2SPI
                              mov r16,r21
                              rcall _byte2spi
                              mov r16,r20 ; LSB last
                              rcall _byte2spi
                              ; now falls into get response


                              _mmc_getresponse:
                              ; Wait for non &HFF response
                              ; Not getting Byte: T-Flag set
                              push r17
                              push r18
                              ;ldi r17, 64 ; ask 64 times for response
                              clr r17
                              ;clr r18
                              Ldi R18,5 ; 2 sec delay at 16 MHZ
                              clt ; clear low level error flag
                              _mmc_getresponse1:
                              rcall _Byte2SPI_255
                              cpi r16, &HFF
                              brne _MMC_GetResponse2
                              subi r17, 1
                              sbci r18, 0
                              brne _MMC_GetResponse1
                              set
                              _mmc_getresponse2:
                              pop r18
                              pop r17
                              tst r16 ; set Z-Flag if Response = 0, do not affect C-Flag
                              ret



                              _mmc_reset:
                              *BASIC: Set Mmc_cs ' Set CS HIGH
                              ldi r17,10 ; Clock Counter, 80 pulses with CS high
                              _mmc_reset_0:
                              rcall _Byte2SPI_255
                              dec r17 ; send 80 clock pulses
                              Brne _MMC_Reset_0

                              *BASIC: Reset Mmc_cs ' Reset Cs to LOW
                              ldi r16,64 ; Send CMD0
                              rcall _Byte2SPI
                              rcall _Byte2SPI_0
                              rcall _Byte2SPI_0
                              rcall _Byte2SPI_0
                              rcall _Byte2SPI_0
                              ldi r16,149 ; first command needs proper CRC Byte
                              rcall _Byte2SPI

                              ldi r17, 100 ; try 100 times to get proper response
                              _mmc_reset1:
                              rcall _MMC_GetResponse
                              cpi r16, 1 ; 1 is proper response after reset
                              breq _MMC_Reset2
                              dec r17
                              brne _MMC_Reset1
                              * Ldi R25 , Cperrdrivereset
                              rjmp _MMC_Exit_Error
                              _mmc_reset2:
                              rjmp _MMC_Exit_Standard



                              ;---[_MMC_Init]------------------------------------------------------------------
                              ; Init the MMC-Card
                              _mmc_init0:
                              ldi r17,10 ; try 10 times to init
                              _mmc_init1:
                              *BASIC: Reset Mmc_cs ' Reset CS
                              ldi r16,65 ; CMD1
                              rcall _Byte2SPI
                              rcall _Byte2SPI_0
                              rcall _Byte2SPI_0
                              rcall _Byte2SPI_0
                              rcall _Byte2SPI_0
                              rcall _MMC_GetResponse
                              breq _MMC_Init3 ; response Byte is zero?
                              _mmc_init2:
                              rcall _MMC_Exit_Standard ; deactivate MMC_CS for new try
                              *BASIC: Waitms 50
                              dec r17
                              brne _MMC_Init1
                              * Ldi R25 , Cperrdriveinit

                              rjmp _sdc_init0

                              _mmc_init3:
                              rjmp _MMC_Exit_Standard

                              ;---[_SDC_Init]------------------------------------------------------------------
                              ; Init the SDC-Card
                              _sdc_init0:
                              ldi r17,10 ; try 10 times to init
                              _sdc_init1:
                              *BASIC: Reset Mmc_cs ' Reset CS
                              ldi r16,105 ; CMD41
                              rcall _Byte2SPI
                              rcall _Byte2SPI_0
                              rcall _Byte2SPI_0
                              rcall _Byte2SPI_0
                              rcall _Byte2SPI_0
                              ldi r16,229 ; CRC
                              rcall _Byte2SPI
                              rcall _MMC_GetResponse
                              breq _SDC_Init3 ; response Byte is zero?
                              _sdc_init2:
                              rcall _MMC_Exit_Standard ; deactivate MMC_CS for new try
                              *BASIC: Waitms 50
                              dec r17
                              brne _SDC_Init1
                              * Ldi R25 , Cperrdriveinit

                              rjmp _MMC_Exit_Error

                              _sdc_init3:
                              rjmp _MMC_Exit_Standard


                              *#IF cMMC_Soft = 1


                              _byte2spi_255:
                              ser r16
                              rjmp _Byte2SPI
                              _byte2spi_0:
                              clr r16
                              _byte2spi:
                              push r19 ; scratch register
                              push r18 ; bit loop counter
                              push r17 ; income Byte
                              clr r17
                              ldi r18, 8 ; 8 Bits to receive
                              _byte2spi_loop:
                              lsl r17
                              lsl r16 ; byte to send
                              brcs _Byte2SPI_1
                              * cbi MMC_PortMOSI, bMMC_MOSI
                              rjmp _Byte2SPI_Clock
                              _byte2spi_1:
                              * sbi MMC_PortMOSI, bMMC_MOSI
                              _byte2spi_clock:
                              * in r19, MMC_PortMISO
                              * sbi MMC_PortSCK, bMMC_SCK
                              nop
                              nop
                              nop
                              * cbi MMC_PortSCK, bMMC_SCK
                              ; nop ; following code have enough delay
                              ; nop
                              ; nop
                              * sbrc r19, bMMC_MISO
                              inc r17
                              dec r18
                              brne _Byte2SPI_Loop
                              mov r16, r17 ; return value
                              pop r17
                              pop r18
                              pop r19
                              ret

                              *#ELSE

                              _byte2spi_255:
                              ser r16 ; send 255
                              rjmp _Byte2SPI
                              _byte2spi_0:
                              Clr r16 ; send 0
                              _byte2spi:
                              * Out Spdr , R16
                              _byte2spi2:
                              * Sbis Spsr , 7 ; Wait For Spif
                              rjmp _byte2spi2
                              * In R16 , Spdr
                              ret
                              *#ENDIF



                              _shift_mmc:
                              clr r20
                              ld r21,x+ ;LSB
                              ld r22,x+
                              ld r23,x+

                              lsl r21
                              rol r22
                              rol r23
                              ret

                              [_drivereadsector]
                              ;---[_MMC_ReadSector]----------------------------------------------------------
                              ; Read Sector(s) from MMC-Card to SRAM
                              ; Entry with following parameters set:
                              ; Register X: Pointer to Sectornumber (LONG)
                              ; Register Z: SRAM-Address, where the data to transfer
                              _drivereadsector:
                              _mmc_readsector:
                              rcall _DriveClearErrorBytes
                              rcall _Shift_MMC
                              ldi r16,$51
                              rcall _MMC_Send_Command
                              breq _MMC_ReadSector1 ; response = 0?
                              * Ldi R25 , Cperrdrivereadcommand
                              rjmp _MMC_Exit_Error

                              _mmc_readsector1:
                              rcall _MMC_GetResponse
                              cpi r16, &HFE ; get data response byte
                              breq _MMC_ReadSector2
                              * Ldi R25 , Cperrdrivereadresponse
                              rjmp _MMC_Exit_Error

                              _mmc_readsector2:
                              ldi r25,2 ; 512 bytes to read
                              clr r24
                              _mmc_readsector3:
                              rcall _byte2spi_255
                              st z+,r16
                              sbiw r24,1
                              brne _MMC_ReadSector3
                              rcall _byte2spi_255 ; read first crc byte
                              rcall _byte2spi_255 ; read second crc byte
                              rjmp _MMC_Exit_Standard




                              [_drivewritesector]
                              ; write Sector(s) to MMC-Card
                              ; Entry with following parameter set:
                              ; Register X: Pointer to Sectornumber (LONG)
                              ; Register Z: SRAM-Address, at which Data to transfer starts
                              _drivewritesector:
                              _mmc_writesector:
                              rcall _DriveClearErrorBytes
                              rcall _Shift_MMC
                              ldi r16,88 ; write
                              rcall _MMC_Send_Command
                              breq _MMC_WriteSector1 ; Response = 0?
                              * Ldi R25 , Cperrdrivewritecommand
                              rjmp _MMC_Exit_Error

                              _mmc_writesector1:
                              rcall _byte2spi_255
                              ldi r16,254
                              rcall _byte2spi
                              ldi r25,2 ; counter for 512 bytes
                              clr r24
                              _mmc_writesector2:
                              ld r16,z+
                              rcall _byte2spi
                              Sbiw r24,1
                              brne _MMC_WriteSector2
                              ; dummy crc bytes
                              rcall _byte2spi_255
                              rcall _byte2spi_255
                              _mmc_writesector3:
                              rcall _Byte2SPI_255 ; read Data response byte (=xxx00101b)
                              andi r16, &H1F
                              sts {gbDriveDebug}, r16 ; save Data response byte for debug
                              clr r17
                              ldi r18, 255 ; 10000 * 10µSec = 100mSec wait for writing down
                              _mmc_writesector4:
                              rcall _DriveWaitUS10
                              rcall _Byte2SPI_255
                              tst r16 ; end of busy
                              brne _MMC_WriteSector5
                              subi r17, 1
                              sbci r18, 0
                              brne _MMC_WriteSector4 ; Wait ~ 65536 * 25 Cycles for end of busy
                              ; ~ 100mSec at 16MHz Crystal, should be long enough
                              * Ldi R25 , Cperrdrivewriteresponse
                              rjmp _MMC_Exit_Error
                              _mmc_writesector5:
                              rjmp _MMC_Exit_Standard



                              [_driveinit]
                              ;---[_DriveInit]----------------------------------------------------------------
                              ; Setup the pins needed for the CF-Card
                              _driveinit:
                              _mmc_init:
                              *#IF cMMC_Soft = 0
                              *BASIC: Spiinit
                              *#ENDIF
                              rcall _DriveClearErrorBytes
                              rcall _MMC_Reset
                              brcc _DriveInit1
                              ret
                              _driveinit1:
                              rjmp _MMC_Init0


                              [_drivereset]
                              ;---[_DriveReset]---------------------------------------------------------------
                              ; force MMC-Card to a Hardware-reset
                              _drivereset:
                              rcall _DriveClearErrorBytes
                              rjmp _MMC_Reset




                              [_drivecheck]
                              ;---[_DriveCheck]---------------------------------------------------------------
                              ; Checks, whether Card is plugged in: not yet supported with this driver
                              ; if OK r24 = 1; otherwise 0
                              _drivecheck:
                              rcall _DriveClearErrorBytes
                              ldi r24, 1
                              rjmp _MMC_Exit_Standard1


                              [_drivegetidentity]
                              _drivegetidentity:
                              rcall _DriveClearErrorBytes
                              * Ldi R25 , Cperrdrivenotsupported
                              rjmp _driveSetError



                              _driveclearerrorbytes:
                              ; clear all drive according error bytes
                              clr r25
                              clc
                              * Sts {gbdriveerror} , R25
                              * Sts {gbdrivestatusreg} , R25
                              * Sts {gbdriveerrorreg} , R25
                              ret



                              _mmc_exit_standard:
                              *BASIC: Set Mmc_cs
                              rcall _Byte2SPI_255 ; send 255
                              _mmc_exit_standard1:
                              clr r25 ; clear error byte
                              clc ; clear error flag
                              ret



                              _mmc_exit_error:
                              rcall _DriveSetError
                              *BASIC: Set Mmc_cs
                              rcall _Byte2SPI_255
                              sec ; set error flag
                              ret



                              ; Entry with Error-Code in r25
                              ; Last response from mmc in r16
                              _driveseterror:
                              * Sts {gbdriveerror} , R25
                              * Sts {gbdrivestatusreg} , R16
                              sec ; Error flag for AVR-DOS
                              ret


                              _drivewaitus10:
                              * ldi r25, ( ( _XTAL * 10 ) / 3000000 ) ; 1 loop needs 3 cycles
                              _drivewaitus10a:
                              dec r25
                              brne _DriveWaitUS10a
                              ret

                              [end]
                              بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
                              اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

                              دیدگاه

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