ايران ويج

نسخه‌ی کامل: کمک در مورد MMC
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
من در اتصال avr به کارت MMC به یه مشکلی برخوردم و مشکل اینه که با کارت 64M فقط تو آدرس 4 بلوک اول میتونم بخونم و بنویسم و با کارت 512M تا آدرس 30 :!: . وقتی هم از این آدرس ها بیشتر ارسال میکنم کارت از initialization خارج میشه. وقتی هم با cmd16 میخوام Block lenght را تغییر دهم کارت خطای response 40hex که همان parameter error است را ارسال میکند. لطفا منو راهنمایی کنید. :(
اون خطای 40 ممکنه به خاطر پشتیبانی نکردن اون کارت حافظه از این دستور باشه چون یه استانداردی نیست که همه همش رو پشتیبانی کنن
من هم یه چنین مشکلاتی داشتم که ماله بد تعریف کردن متغیر ها بود مثلا 2 بایتی در نظر گرفته بودم که به 3 بایت نیاز داشت در ضمن ممکنه unsigned داری روی متغیر حساب می کنی ولی signed تعریف شده
ولی دققیقا نمی دونم مشکل از کجاست
هادی جان سلام.
این قسمت read برنامه منه.متغییر addr هم long یعنی 32 بیتی تعریف شده.
آدرس block را تو addr می ریزم.در ضمن یه کارت 512M چند تا block داره؟512M/512=nblock? درسته????....من با کارت 64M با همین برنامه از آدرس بلوک 0 تا 4 جواب میداد وقتی کارت 512M یعنی 8 برابر شد تعداد بلوکهایی که من میتونستم بخونم و بنویسم هم 8 برابر شد یعنی آدرس 0 تا 30 شد
کد:
Readb:
Dat = &HFF
Set Cs
Spiout Dat , 1
Spiin Resp , 1
Spiout Dat , 1
Spiin Resp , 1
Reset Cs
Dat = &H51
Spiout Dat , 1
Spiout Addr , 4
Dat = &HFF
Spiout Dat , 1
Spiout Dat , 1

While Resp <> 0
Spiin Resp , 1
Print Resp
Wend
While Resp <> &HFE
Spiin Resp , 1
Wend

For I = 1 To 512
Spiin Indat(i) , 1
Next I

For I = 1 To 512
Print Indat(i
Next I

Dat = &HFF
Set Cs
Return
سلام
فکر نمی کنی یکم کدهایی که نوشتی کمه :wink:
درست initial نکردی mmc رو خوندنشم کلی دستورو اینا می خواد همین جوری که نمی شه
اینا رو ببین
http://hubbard.engr.scu.edu/avr/avrlib/d...__mmc.html
http://hubbard.engr.scu.edu/avr/avrlib/d...ource.html
من قسمت read برنامه را گذاشتم وگر نه کد های مربوط به initial کردنو کامل نوشتم .اگه برنامه ناقصه چرا تو چند تا بلوک اول کارت به طور صحیح read و write انجام میشه. :!: :!: :?: :?:
والا نمی دونم مشکل کجاست
ولی پیش نهاد می کنم دقیقا همین رو به زبانی که کار می کنی ترجمه کنی اینجوری خیلی راحت تره چون قبلا هم تست شده بنابراین مشکلی نباید داشته باشه
با config خوده bascom برنامه ای دارید mr30
فکر کنم به صورتپسش فرض روش نیست یا روی ورژن های بالاترش هست
اشکال اون برنامه این بود که شماره ای که به عنوان سکتور به mmc باید ارسال کنیم باید مضربی از 512 (همون تعداد بایت در سکتور) باشه.
برای اینکار میشه شماره سکتور دلخواه را یا 9 بیت به چپ شیفت داد و یا در 512 ضرب کرد.
ممنون :wink:
مشکل برنامه من در ارسال آدرس بلوک ها بود. نحوه ارسال آدرس به این شکله :
مثلا برای آدرس 35 باید 04-01-00-00 hex را ارسال کرد در صورتی که من قبلا 23-00-00-00 hex را ارسال میکردم.در واقع یه کارت 512 در بایت اول آدرس فقط تا آدرس 30 میتونه قبول کنه.یعنی اگه آدرستون از 30 بیشتر بود باید از بایت بعدی استفاده کنید. برای کارت 64 هم که من تست کردم بایت اول تا ادرس 4 را قبول میکرد .مثلا برای برای ادرس 5 باید 00-01-00-00 ارسال شود نه 05-00-00-00. :wink: من با این روش تو همه بلوکها میتونم بنویسم و بخونم.اما خداییش کلی مو سفید کردم تا فهمیدم چون تو هیچ pdfای ننوشته بود. :wink:
صفحه‌ها: 1 2