الوسائط المتعددة مساعدة؟

C

conkhicon

Guest
لا أستطيع أن أتلو من بطاقة الوسائط المتعددة عند استخدام PIC18F8720
-- أنا لا الحرف الأول أنه موافق
-- أنا أكتب في موافق (تنتمي إلى حالة من عودة)
-- قرأت في معالجة 512
العودة إلى الوسائط المتعددة لي 0 (R1 موافق)
ولكنني حلقة ارسال 0xff لwating لتبدأ من 0xfebut datatoken لا تتطابق.
هل يمكنك مساعدتي؟

تعريف # BLOCK_LEN 16

ندائي :

readBlockMMC (0512 ، bufMMC) ؛

بلدي sourcecode :

غير الموقعة readBlockMMC شار (غير موقعة طويلة كثافة العمليات DWAddr ، الحرف غير الموقعة * المعادلات التفاضلية الجزئية)
(
الحرف غير الموقعة localRD ؛
غير الموقعة dataToken شار ؛

نوب () ؛
lowerSS () ؛ / / بطاقة بالموقع
writeCMD (17 ، DWAddr ، 0xff) ؛ / / قراءة سطر (بلا لجنة حقوق الطفل)
إذا كان (MCCResponse ()! = 0) (
MMC_Err = 0x30 ؛
العودة (1) ؛
)
نوب () ؛
في حين (1) (/ / في انتظار بيانات مساء
WriteSPI (0xff) ؛
dataToken = ReadSPI () ؛
إذا كان (dataToken == 0xfe) كسر ؛ / / نجاح
اذا كان ((dataToken & 0xE0) == 0) (/ / رمز خطأ
نوب () ؛
MMC_Err = 0x31 ؛
العودة (1) ؛
)
)
نوب () ؛
ل(localRD = 0 ؛ localRD <BLOCK_LEN ؛ localRD ) (
WriteSPI (0xff) ؛
* = ReadSPI المعادلات التفاضلية الجزئية () ؛
المعادلات التفاضلية الجزئية ؛
)
WriteSPI (0xff) ؛ / / لجنة حقوق الطفل
WriteSPI (0xff) ؛
raiseSS () ؛ / / بطاقة الخاملة
نوب () ؛
عودة (0) ؛
)

 
حاول إرسال والمقام في للتو قبل أقل ك.
إذا كان ذلك سيساعد ، وهنا هو رمز بلادي AVR تعدين الذهب حرفيا.رمز :

[read_sec]

'************************************************* **************

'المسألة اقرأ القطاع الأمر إلى بطاقة

'************************************************* **************

'الفرعية Read_sec (lbasector وطويل ، وكما Byval Sec2xfer بايت)

'نعم lbasector = 2 ، 3 Sec2xfer نعم 0 = نعم ، نعم 1

'نقطة دخول اذا سجلات تحتاج إلى تحميلها من قبل لينة المكدس

Read_sec :

ldd الحادي عشر ، ص 0

Xh ldd ، ص 1 'س تسجيل نقاط الزوج إلى Sec2xfer

دينار R24 ، س 'R24 يحتوي Sec2xfer

ldd الحادي عشر ، ص 2

Xh ldd ، ص 3 'س تسجيل نقاط الزوج إلى lbasector

دينار r16 ، والعاشر 'R16 يحتوي على البتات 0 -- 7 من LBA & incr مشاركة

R17 دينار ، والعاشر 'R17 يحتوي على 8 بت -- 15 من LBA & incr مشاركة

دينار r18 ، اكس 'r18 يحتوي على 16 بت -- 23 من LBA & incr مشاركة

دينار r19 ، س 'r19 يحتوي على 24 إلى 31 بت من LBA يستخدم فقط 27

'نقطة دخول اذا تسجيلات قبل تحميلها

'R24 = القطاعات لنقل ، r16 لr19 = lbasector

[Readsec]

$ الخارجي Lba2add ، Txrxspi ، Txrxspi_wait4resp ، Chk4error

Readsec :

Txrxspi255 rcall 'إرسال 255 رقاقة دون تحديد لاخراج بطاقة العازلة

البنك المركزي العراقي Spiport ، Sdmmccs 'جعل التنمية المستدامة / الوسائط المتعددة تشيب حدد نشط

Lba2add rcall 'تحويل LBA لمعالجة

ldi R23 ، Read_multiple_block

Txrxspi rcall

وسائل التحقق R23 ، r19 'ارسال عنوان مرحبا

Txrxspi rcall

وسائل التحقق R23 ، R18

Txrxspi rcall

وسائل التحقق R23 ، R17

Txrxspi rcall

وسائل التحقق R23 ، R16

Txrxspi_wait4resp rcall 'ارسال عنوان & لو انتظر رد

Chk4error rcall 'الكشف عن أي خطأ

أرجع

[نهاية][get_sec]

'************************************************* **************

'احصل دا قطاع البيانات من بطاقة وعصا في دا ذاكرة الوصول العشوائي

'************************************************* **************

'الفرعية Get_sec (العازلة () ، كما Byval Sec_expected بايت)

'العازلة () 2 = نعم ، نعم 3 Sec_expected = 0 نعم ، نعم 1

'نقطة دخول اذا سجلات تحتاج إلى تحميلها من قبل لينة المكدس

Get_sec :

ldd الحادي عشر ، ص 0

Xh ldd ، ص 1 'س تسجيل نقاط الزوج إلى Sec_expected

دينار R24 ، س 'R24 يحتوي Sec_expected

ldd الحادي عشر ، ص 2 'س تسجيل نقاط الزوج إلى العازلة

Xh ldd ، ص 3

'نقطة دخول اذا تسجيلات قبل تحميلها

'R24 = قطاع مكافحة (Sec_expected)

'اربعون & Xh = (س سجل الزوج) نقطة ليصل الى العازلة

[Getsec]

$ الخارجي Txrxspi_wait4token ، Txrxspi ، Txrxspi_wait4resp ، Chk4error

Getsec :

Txrxspi_wait4token rcall 'انتظار البيانات رمزية

ldi R25 ، 0 'كلمة عداد

Getsec_loop :

مؤشر الاسعار الاستهلاكية R25 ، والمقام في 'الذي حصلنا عليه 2 بايت أن تذهب؟

Getsec_loop1 Brně 'إذا لم يكن ، والحفاظ على حلقات

ديسمبر R24 'sec_expected decr

Getsec_loop1 Brně 'لقد انتهينا؟

ldi R23 ، Stop_transmission 'إذا كان الأمر كذلك ، ثم وقف txing

Txrxspi rcall 'الحصول على بايت في R23

العاشر الحادي والعشرين ، R23 'مخزن للالعازلة

Getsec_loop2 rjmp

Getsec_loop1 :

Txrxspi255 rcall 'الحصول على بايت في R23

العاشر الحادي والعشرين ، R23 'مخزن للالعازلة

Getsec_loop2 :

Txrxspi255 rcall

العاشر الحادي والعشرين ، R23 'مرة أخرى.
2 بايت = 1 كلمة

المؤتمر الوطني العراقي R25 'incr كلمة عداد

getsec_loop Brně 'لقد انتهينا من نقل كتلة 1

Txrxspi255 rcall 'الحصول على crc16 مرحبا وتفريغ أنها

Txrxspi255 rcall 'crc16 الحصول على تفريغ أنه لو &

اوسيفان R24 'هو قطاع مكافحة = 0

Getsec Brně 'اذا لم ينته بعد ، والحصول على بعض البيانات أكثر

Txrxspi_wait4resp rcall 'انتظار استجابة صالحة

Chk4error rcall 'الكشف عن أي خطأ

Spiport الهيئة الفرعية للتنفيذ ، Sdmmccs 'جعل التنمية المستدامة / الوسائط المتعددة تشيب اختر غير نشط

أرجع

[نهاية]

 
من أجل الموافقة المسبقة عن علم على الوصول إلى الوسائط المتعددة وجود مكتبة لطيف جدا في mikroC ، انها محاولة....

عرض متوفر على http://www.mikroelektronika.co.yu/english/product/compilers/mikroc/download.htm

تمنيات

 
يكون الفرق بين الوسائط المتعددة والتي تدعم الأمر مختلف الطبقات.

قرأت سانديسك productManual الوسائط المتعددة
، وانظر في لجنة التنمية المستدامة Rergister [95:84] الميدانية
مجلس التعاون الجمركي 0x5 = = 0b 000 000 0101 دعم الطبقات التي comand 0،2 الطبقة 0 دعم Initilize بطاقة الوسائط المتعددة
، والطبقة 2 اقرأ دعم القيادة وهلم جرا وأنا أحاول أن أكتب بطاقة الوسائط المتعددة مع كتابة بلوك (في الفئة 4) الفشل.أستطيع قراءة بطاقة مدبولى وليس كتابة.
لا أعتقد أنه صحيح؟
ولكن هذا لادخال بطاقة المتحرك.انها جيدة جدا للقراءة والكتابة.لماذا؟
هل يمكنكم مساعدتي؟

 
أحد الأسباب المحتملة لذلك على العنوان المذكور.كتلة لا يمكن إلا أن يكتب كتابة من بداية حدود كتلة ، في حين يقرأ يمكن أن تحدث في أي مكان داخل الكتلة.انا haven't تطرق MMCs لسنوات ، لكنني أذكر هذا هو واحد من القيود.

 
هل يمكنك مساعدتي؟

تعريف # BLOCK_LEN 16
ندائي :
readBlockMMC (0512 ، bufMMC) ؛
بلدي sourcecode :
غير الموقعة readBlockMMC شار (غير موقعة طويلة كثافة العمليات DWAddr ، الحرف غير الموقعة * المعادلات التفاضلية الجزئية)
(
الحرف غير الموقعة localRD ؛
غير الموقعة dataToken شار ؛

نوب () ؛
lowerSS () ؛ / / بطاقة بالموقع
writeCMD (17 ، DWAddr ، 0xff) ؛ / / قراءة سطر (بلا لجنة حقوق الطفل)
إذا كان (MCCResponse ()! = 0) (
MMC_Err = 0x30 ؛
العودة (1) ؛
)
نوب () ؛
في حين (1) (/ / في انتظار بيانات مساء
WriteSPI (0xff) ؛
dataToken = ReadSPI () ؛
إذا كان (dataToken == 0xfe) كسر ؛ / / نجاح
اذا كان ((dataToken & 0xE0) == 0) (/ / رمز خطأ
نوب () ؛
MMC_Err = 0x31 ؛
العودة (1) ؛
)
)
نوب () ؛
ل(localRD = 0 ؛ localRD <BLOCK_LEN ؛ localRD ) (
WriteSPI (0xff) ؛
* = ReadSPI المعادلات التفاضلية الجزئية () ؛
المعادلات التفاضلية الجزئية ؛
)
WriteSPI (0xff) ؛ / / لجنة حقوق الطفل
WriteSPI (0xff) ؛
raiseSS () ؛ / / بطاقة الخاملة
نوب () ؛
عودة (0) ؛
)

هل تعتقد انني صحيح؟

 
أنا استخدم C18 رقاقة مترجم
يرجى بعد الدالة على الموافقة المسبقة عن علم الذي هو رونينغ موافق.
شكرا

 

Welcome to EDABoard.com

Sponsor

Back
Top