اطلاعیه

Collapse
No announcement yet.

چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

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

    #16
    پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

    واقعا شرمنده ام :redface: دیگه دارم از زیادی سوال کردن خجالت می کشم :redface:
    ولی....
    سپاس فراوان آقا aivhl
    :biggrin:
    من در مورد تعریف این توابع چیزی نمی دونم و تا حالا اینجوریشو ندیدم براتون مقدور هست یه مثال ساده از این توابع و نحوه فراخوانی و کارکردشون برام بزنید :redface:

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

    یه سوال دیگه هم دارم:
    FR_NOT_READY - no disk access was possible due to missing media or other reason.
    اینو توی هلپ کدویژن نوشته، منظور از media چیه؟
    بی نهایت سپاس گزارم :biggrin:
    همیشه بزرگوار تر از آن باشید که برنجید
    و نجیب تر از آن باشید که برنجانید!

    دیدگاه


      #17
      پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

      با سلام،

      از اونجائی که من اصلا کدویژن کار نکردم، بطور مشخص در مورد اون روتین هائی که شما اعلام کردید هم هیچ اطلاعی ندارم و نحوه کارکردشون رو هم نمیدونم ولی اونطور که ازشون بر میاد، برای فراخوانی و ست کردن ساعت و تاریخ RTC میکروی مگا 128 استفاده میشن. و مثال هائی هم براشون توی قسمت Sample کدویژن هست. ( البته من ندیدم، شنیدم oo: ) و در کل عملکردشون همونی هست که در پست های قبل عرض شد. ( یه جائی توی همین سایت در موردش صحبت شده ) و فکر هم نکنم که RTC به مشکل شما مربوط بشه، برای راحتی و یکی بودن مشکل، پیشنهاد میکنم که از اون تاریخ فیکس شده که توی پست های قبلی فرستادم فعلا استفاده کن و بعد از اینکه مشکلت حل شد، RTC رو هم بهش اضافه کن.....

      در ضمن در اینجا Media هم یعنی همون مموری.
      مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

      Sh_Nourbakhsh@Yahoo.com

      http://s2.picofile.com/file/7170362468/_Wall_e_.jp

      دیدگاه


        #18
        پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

        سلام به همه
        خصوصا آقا aivhl که راهنمائی های ارزنده ای کردند. :biggrin:
        آقا مشکل حل شد!
        :applause: :wow:
        سخت افزاری مشکل داشت:

        کافیه توی شماتیک بالا که توی مجله نویز 2 اومده جای مقاومتهای 1.8 کیلو رو با 3.3 کیلو عوض کنیم! :agree:
        با سپاس ویژه از آقای مهری عزیز به خاطر زحمتی که برای این مقاله کشیدند. :biggrin:
        و سپاس فراوان از آقا aivhl :biggrin:
        همیشه بزرگوار تر از آن باشید که برنجید
        و نجیب تر از آن باشید که برنجانید!

        دیدگاه


          #19
          پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

          با سلام،

          آقا تبریک میگم و از موفقیتتون خوشحالم.... ممنون از ابراز لطفتون
          خیلی - خیلی خوش گذشت....
          مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

          Sh_Nourbakhsh@Yahoo.com

          http://s2.picofile.com/file/7170362468/_Wall_e_.jp

          دیدگاه


            #20
            پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

            آقای جعفری با عرض سلام :smile:
            خوشحال شدم که مشکلتون حل شد راستش من هم چند وقت پیش خواستم که sd رو راه بندازم ولی نتونستم ولی پستتون رو دنبال میکردم , ممنونت میشم اگر امکان داره برنامه نمونه ات رو هم بگذارید تا به دیگران هم کمکی بشه :redface:
            حضرت علی(ع):
            أَشرَفُ الخَلاَئِقِ اَلوَفَا بِالعَهد.
            شریفترین خصلتها وفاى به عهد است.

            دیدگاه


              #21
              پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

              نوشته اصلی توسط RNA
              آقای جعفری با عرض سلام :smile:
              خوشحال شدم که مشکلتون حل شد راستش من هم چند وقت پیش خواستم که sd رو راه بندازم ولی نتونستم ولی پستتون رو دنبال میکردم , ممنونت میشم اگر امکان داره برنامه نمونه ات رو هم بگذارید تا به دیگران هم کمکی بشه :redface:
              با سلام مجدد :bye

              با اجازه دوستان و آقای جعفری عزیز، من برنامه تست MMC/SD خودم رو که خیلی هم دوستش میدارم، براتون میزارم. :biggrin: خودم که خیلی باهاش حال میکنم....

              http://www.4shared.com/file/ZlNJhZZN/FatFs_sample_dist.html

              برای شروع به ترتیب زیر عمل کنید :

              اول di 0 و پس از گرفتن پیام Disk Initiate, OK دستور fi 0 و Ok که گرفتید بقیه دستورات مثلا fl و ds و ....
              توجه داشته باشید که پایه های MMC رو توی فایل mmc.c و پایه های RTC رو توی فایل rtc.h تنظیم کنید و اگر RTC ندارید توی فایل main.c این رو RTC_found صفر کنید.
              توی Serial util برنامه پورت سریال و توی AVRdude GUI 32 هم رابط گرافیکی AVRdude قرار داره و ....
              مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

              Sh_Nourbakhsh@Yahoo.com

              http://s2.picofile.com/file/7170362468/_Wall_e_.jp

              دیدگاه


                #22
                پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

                با سلام مجدد به همه شما
                :biggrin:
                آقای RNA عزیز، برای راه اندازی sd card ،توضیحات مجله نویز خیلی کامل و خوبه و دستورات اصلی ایجاد فایل،باز کردن و نوشتن و خواندن و بستن فایل رو کامل توضیح داده، همان برنامه مجله نویز کاملا درست و سادست و بهتره برای بار اول از همون جواب بگیرید ،اگر جواب گرفتید متناسب با نیاز بعدا تغییرش دهید،از هلپ کدویژن هم می تونید استفاده کنید.
                اما در مورد سخت افزار از اونجایی که سطح تغذیه میکرو و کارت یکی نیست نمی توان آن ها را مستقیم به هم وصل کرد
                مدارهای مختلفی برای اینکار ارائه می شود که یکی از ساده ترین های آن همان مدار گفته شده در نویز 2 است ،فقط توجه به این نکته ضروری است که باید جای مقاومت های 3.3 کیلو و 1.8 کیلو را عوض کنید. :biggrin:
                بقیه کار خوب پیش خواهد رفت.
                آقا Aivhl ،ممنون از زحمتی که کشیدید، به منم با شما خوش گذشت و چیزای زیادی ازتون یاد گرفتم، ایشاالله همین روزها
                برنامه شما رو هم زیر و رو می کنم،بازم ممنون :biggrin:
                همیشه بزرگوار تر از آن باشید که برنجید
                و نجیب تر از آن باشید که برنجانید!

                دیدگاه


                  #23
                  پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

                  سلام به همگی

                  اگر شما توی مرحله اول یعنی while((res = disk_initialize(0)) != FR_OK); مشکل نداری یعنی مشکل سخت افزاری نداری اگر توی مرحله دوم یعنی res = f_mount(0, &fs); مشکل نداری یعنی مموری هم مشکل نداره و درست توی سوکت مربوطه نشسته و اگر در مراحل بعد مشکل نداری یعنی که دایرکتوری و فایل ها و ... هم وجود دارن.
                  یه مشکلی با micro sd برام پیش اومده اینکه تابع disk_initialize خطا میده یعنی میتونه مشکل سخت افزاری باشه؟

                  من برنامه خود code vision v رو دارم تست میکنم sdcard.1 و قسمتی از برنامش اینه:

                  printf("SD card driver test\r\nInitializing drive ...\r\n"
                  /* initialize SPI interface and card driver */
                  disk_status=disk_initialize(0);
                  /* display disk initialization result on the LCD */
                  if (disk_status & STA_NOINIT) printf("Disk init failed\r\n"
                  else
                  if (disk_status & STA_NODISK) printf("Card not present\r\n"
                  else
                  if (disk_status & STA_PROTECT) printf("Card write protected\r\n"
                  /* all status flags are 0, disk initialization OK */
                  else
                  {
                  printf("Init OK\r\n"

                  که همیشه در پاسخ Disk init failed رو جواب میده ...
                  تو این برنامه تایمر 1 رو خروجیشو داده به cs و فرکانسش 100 hz ولی من پایه خروجی تایمرو میگرفتم هیچ فرکانسی نداشتم ایا بعد از عمل initialization و بعد که میکرو sd رو شناخت این تایمرو فعالش میکنه ؟
                  ذکات علم یاد دادنه ....

                  دیدگاه


                    #24
                    پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

                    سلام

                    چند تا نکته.

                    اتصالاتتون رو چک کنید مخصوصا اون پایه ای که مربوط به تشخیص وجود SD هست.

                    یک خازن 104 و یک 100 میکرو فاراد با تغذیه ی کارت موازی کنید.

                    تو این برنامه تایمر 1 رو خروجیشو داده به cs و فرکانسش 100 hz ولی من پایه خروجی تایمرو میگرفتم هیچ فرکانسی نداشتم ایا بعد از عمل initialization و بعد که میکرو sd رو شناخت این تایمرو فعالش میکنه ؟
                    میشه یکم روی این توضیح بدید!
                    خروجی تایمر 1 وصل شده به cs کارت؟!

                    دیدگاه


                      #25
                      پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

                      این نحوه ارتباط میکرو به sd card که خود cide vision گفته

                      PORTD.6 که خروجی تایمر 1 هست رو دادمش به CS
                      حالا سوالم اینه که چرا رو PORTD.6 هیچ فرکانسی ندارم در صورتی که در ابتدای برنامه تایمر 1 برای فرکانس 100hz کانفیگ میشه



                      SD socket CD4050 ATmega128
                      pin1 /CS -----<|----- PORTD bit6
                      pin2 SI -----<|----- MOSI
                      pin3 GND
                      pin4 +3.3V
                      pin5 SCK -----<|----- SCK
                      pin6 GND
                      pin7 SO ------------ MISO
                      pin9 GND
                      pin10 CD ------------ PORTG bit4 with 10k pull-up resistor to +5V
                      pin11 WP ------------ PORTG bit3 with 10k pull-up resistor to +5V
                      pin12 GND


                      کد:
                      /* Timer1 overflow interrupt frequency [Hz] */
                      #define T1_OVF_FREQ 100
                      /* Timer1 clock prescaler value */
                      #define T1_PRESC 1024L
                      /* Timer1 initialization value after overflow */
                      #define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))
                      
                      /* USART Baud rate */
                      #define BAUD_RATE 19200
                      #define BAUD_INIT (_MCU_CLOCK_FREQUENCY_/(BAUD_RATE*16L)-1)
                      
                      /* 100Hz timer interrupt generated by ATmega128 Timer1 overflow */
                      interrupt [TIM1_OVF] void timer_comp_isr(void)
                      {
                      /* re-initialize Timer1 */
                      TCNT1H=T1_INIT>>8;
                      TCNT1L=T1_INIT&0xFF;
                      /* card access low level timing function */
                      disk_timerproc();
                      }

                      رو تغذیشم یه 100n با یه 10u تانتال موازی هست ولتاز 3.1 به sd میده

                      اتصالاتتون رو چک کنید مخصوصا اون پایه ای که مربوط به تشخیص وجود SD هست.
                      منظورتونو نفهمیدم کدوم پایه رو میفرمائید...
                      sd card من 9 پایه بیشتر نداره اون دوتا پایه اضافی که تو برنامه گفته چیه pin10 و pin11 رو میگم...
                      ذکات علم یاد دادنه ....

                      دیدگاه


                        #26
                        پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

                        سلام

                        منظورم این دو تا پایه هست :
                        pin10 CD ------------ PORTG bit4 with 10k pull-up resistor to +5V
                        pin11 WP ------------ PORTG bit3 with 10k pull-up resistor to +5V
                        یکیش مربوط به محافظته و یکیشم مربوط به وجود کارت. جفتش رو فعال کن.(یادم نیست صفر فعال بود یا یک فعال!)

                        در مورد CS هم باید بگم این پایه هیچ ربطی به تایمر یک نداره!

                        این پایه باید به پایه ی SS (Slave Select) از میکرو متصل بشه که مربوط به ارتباط SPI هست.

                        تایمر یک هم داخل پیغام خصوصی گفتم که یک سری توابع رو اجرا میکنه که MMC رو مثلا بیدار نگه داره .

                        بازم سوالی بود در خدمتیم

                        دیدگاه


                          #27
                          پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

                          یک نکته رو هم بگم که موضوع بحث کامل بشه.فردا یکی خوند هم بتونه استفاده کنه.
                          اون تایمری که شما تو برنامه میبینید فعال شده برای چک کردن وجود کارت هست.به این صورت که وقتی کارت رو داخل میکنید سیستم خودش متوجه بشه و کارت رو راه اندازی کنه.اگر این قابلیت نباشه بعد از گزاشتن کارت باید یه ریست بکنید. برای تست کردن اون قسمت تایمر رو حذف کنید و مبنا رو بر این بزارید که از اول کارت به میکرو وصل هست.
                          بدنه اون تابع که تو روتین وقفه های 1میلی ثانیه ای صدا میشه رو میزارم:
                          کد:
                          /*-----------------------------------------------------------------------*/
                          /* Device Timer Interrupt Procedure (Platform dependent)        */
                          /*-----------------------------------------------------------------------*/
                          /* This function must be called in period of 1ms             */
                          
                          void disk_timerproc (void)
                          {
                          	static BYTE pv;
                          	BYTE s, p;
                          	WORD n;
                          
                          
                          	/* 1000Hz decrement timers */
                          	if ((n = Timer[0]) > 0) Timer[0] = --n;
                          	if ((n = Timer[1]) > 0) Timer[1] = --n;
                          
                          	p = pv;
                          	pv = SOCKPORT & (SOCKINS | SOCKWP);	/* Sample socket switch */
                          
                          	if (p == pv) {					/* Contact stabled? */
                          		s = Stat;
                          
                          		if (pv & SOCKWP)			/* WP is H (write protected) */
                          			s |= STA_PROTECT;
                          		else						/* WP is L (write enabled) */
                          			s &= ~STA_PROTECT;
                          
                          		if (p & SOCKINS)			/* INS = H (Socket empty) */
                          			s |= (STA_NODISK | STA_NOINIT);
                          		else						/* INS = L (Card inserted) */
                          			s &= ~STA_NODISK;
                          
                          		Stat = s;
                          	}
                          }
                          [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                          دیدگاه


                            #28
                            پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

                            منظورم این دو تا پایه هست :
                            pin10 CD ------------ PORTG bit4 with 10k pull-up resistor to +5V
                            pin11 WP ------------ PORTG bit3 with 10k pull-up resistor to +5V
                            یکیش مربوط به محافظته و یکیشم مربوط به وجود کارت. جفتش رو فعال کن.(یادم نیست صفر فعال بود یا یک فعال!)
                            این میکرو sd که من دارم 8 تا پایه بیشتر نداره که پایه های 1و 8 بلااستفادس و بقیه پایه هاشم به این شکل وصل کردم

                            pin2 /CS -----<|----- PORTD bit6
                            pin3 SI -----<|----- MOSI
                            pin4 +3.3V
                            pin5 SCK -----<|----- SCK
                            pin6 GND
                            pin7 SO ------------ MISO

                            و اون پایه cs رو هم خود برنامه گفته وصلش کن به PORTD.6

                            یه نکته دیگه که دیدیم تو این برنامه sdcard.1 وقتی برنامه میره تو تابع disk_initialize بعد از 2 -3 دقیقه میاد بیرون و جواب Disk init failed رو میده انگار که برنامه تو این تابع گیر افتاده باشه...
                            ذکات علم یاد دادنه ....

                            دیدگاه


                              #29
                              پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

                              بزار خودمو و خودت و بقیه رو راحت کنم

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

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

                              همونطور که میبینی پایه ی CS وصل شده به SS خود ارتباط SPI

                              وقتی هم که میبینی تو تابع اینیشیلایز گیر میکنه و بعد خطا میده بیرون مطوئن باشن ارتباطت اشتباه.

                              یه چکی بکن خبرش رو بده ببینیم چی کار کردی :nerd:

                              پ.ن:

                              جای مقاومت های تقسیم ولتاژ رو برعکس در نظر بگیر.(اشتباه لپی بوده برعکس گزاشتم )
                              فایل های پیوست شده

                              دیدگاه


                                #30
                                پاسخ : چطور باید خطای FR_NOT_READY رو در اتصال SDCARD به میکرو رفع کنم؟

                                حامد جان از شماتیکی که گذاشتی ممنونم
                                سخت افزارم تقریبا مثه شماست ولی تو اون sd کارتی که من دارم پایه 10 و 11 رو نداره

                                همون جور که فرمودین پاه ss میکرو رو وصل کردم به cs و اون تقسیم مقاومتی رو هم که قبلا گذاشته بودم درست بود
                                ولتازم هم 3.1 که فکر کنم مناسبه بقیه پایه ها رو هم مثه شماتیکه شماست ...
                                ولی بازم جواب نداد :cry2:

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

                                دیدگاه

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