اطلاعیه

Collapse
No announcement yet.

کتابخانه ff.h

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

    پاسخ : کتابخانه ff.h

    نوشته اصلی توسط quasar
    سلام،
    آقا این تابع disk_initialize مموری رو نمیشناسه اشکال از کجا میتونه باشه؟

    اینم عکس تنظیمات: البته دو پایه آخر رها گذاشتم!

    برای پایه ی CD و WP باید تنظیم بی استفاده روبزنین
    اگر نه تو کامپایل ازش استفاده می کنه

    دیدگاه


      پاسخ : کتابخانه ff.h

      شما تو اون شکل تنظیمات بی استفاده می بینید؟؟؟؟؟؟؟
      اونی که می گید مال این ورژن نیست دوست عزیز.
      در زیر این نقاب چیزی بیشتر از گوشت هست. در زیر این نقاب یک ایده هست و ایده ها ضدگلوله هستند.

      1-به اندازه ی باورهای هر کسی ؛ با او حرف بزن …. بیشتر که بگویی ، تو را احمق فرض خواهد کرد …!!!
      2-تنها دو گروه نمى توانند افکار خود را عوض کنند: دیوانگان تیمارستان و مردگان گورستان.
      3-آدم ها مثل عکس ها هستند: زیاد بزرگشون کنی ، کیفیتشون میاد پایین!

      دیدگاه


        پاسخ : کتابخانه ff.h

        کسی با طول نام بیشتر از 8 کارنکرده؟
        دوست عزیز اگه مفید بود روی تشکر بزن

        دیدگاه


          پاسخ : کتابخانه ff.h

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

          دیدگاه


            پاسخ : کتابخانه ff.h

            دوستان کسی نیست کمک کنه؟
            در زیر بدنه اصلی برنامه را میذارم در خروجی یا همون پورت سی عدد 3 میاد که کد خطا ناشی از تابع open است لطفا کمک کنید؟
            کد:
            while(f_mount(0,&drive)!=FR_OK);
            
             switch (f_open(&file,"1.txt",FA_READ)){
             case 0:
              PORTC= 0X80;
             break;
             case 1 :
              PORTC= 1;
             break;
             case 2 :
              PORTC= 2;
             break;
             case 3 :
              PORTC=3 ;
             break;
             case 4:
              PORTC=4 ;
             break;
             case 5:
              PORTC=5 ;
             break;
             case 6:
              PORTC= 6;
             break;
            }
            برای خلاصه case بقیه کد های خطا را نذاشتم :read: :sad:

            دیدگاه


              پاسخ : کتابخانه ff.h

              ببین شماره خطات وقتی مموری کارت رو برمیداری با موقعی که کارت هست تقاوت میکنه؟ اگه فرق میکرد باید از یه مموری دیگه استفاده کنی.

              دیدگاه


                پاسخ : کتابخانه ff.h

                ممنون از پاسختون آقای Gordany نه فرقی نمیکنه یکی .
                احتمال داره به خاطر فایل mmc.c باشه ؟
                فرض کنیم این تابع کلا اینکلود نشده باشه احتمال داره به خاطر نبود این فایل این خطا را بده.
                البته برنامه کامپایل میشه و خطا هم نمیده

                دیدگاه


                  پاسخ : کتابخانه ff.h

                  دوستانی که در این زمینه کار کردن لطفا یک کمکی به من بکنند برنامه من در این خط :
                  کد:
                  f_open(&file,"1.txt",FA_READ)
                  خطای 0x03 که همون FR_NOT_READY باشه میده هرکارش میکنم جواب نمیده با ff.h هم نوشتم با pff.h که اصلا مموری نمی خونه
                  انقد که من روی راه انداختن این وقت گذاشتم اگه از اول براش تابع می نوشتم تا حالا راه افتاده بود وقتمم خیلی کم عجله دارم اگه دوستان کسی می تونه لطفا کمک کنه. :cry: :sad:
                  کل برنامه ای که نوشتم این البته این تست که ایا مموری کامل خونده شده یا نه
                  کد:
                  #include <mega32a.h>
                  #define xtal 16000000
                  #include <sdcard.h>
                  #include <ff.h>
                  #include <delay.h>
                  #include <stdlib.h>
                  interrupt [TIM0_OVF] void timer0_ovf_isr(void)
                  {
                  TCNT0=0xF5;
                  disk_timerproc();
                  }
                  void main(void)
                  {
                  FATFS drive;
                  FIL file;
                  unsigned int i;
                  char buffer[10];
                  DDRC=0xff;
                  TCCR0=0x05;
                  TCNT0=0xF5;
                  OCR0=0x00;
                  TIMSK=0x01;
                  #asm("sei")
                  
                  
                  PORTC.0= 1;
                  while(f_mount(0,&drive)!=FR_OK);
                  PORTC.1=1;
                  
                  
                  while(f_open(&file,"0:/1.txt",FA_READ)!=FR_OK);
                  PORTC.2=1;
                  
                  while(f_read(&file,buffer,5,&i)!=FR_OK);
                  PORTC.3=1;
                  
                  
                  while (1);
                  }

                  که در خروجی تا پایه 1 پورت سی روشن نمیشه یعنی فقط 0 و 1 روشن میشه که این نشون میده در قسمت open مشکل داره با یک برنامه دیگه خطا را خوندم که همون خطایی که در بالا گفتم :sad: :sad:

                  دیدگاه


                    پاسخ : کتابخانه ff.h

                    نوشته اصلی توسط mjheydari
                    دوستانی که در این زمینه کار کردن لطفا یک کمکی به من بکنند برنامه من در این خط :
                    کد:
                    f_open(&file,"1.txt",FA_READ)
                    خطای 0x03 که همون FR_NOT_READY باشه میده هرکارش میکنم جواب نمیده با ff.h هم نوشتم با pff.h که اصلا مموری نمی خونه
                    انقد که من روی راه انداختن این وقت گذاشتم اگه از اول براش تابع می نوشتم تا حالا راه افتاده بود وقتمم خیلی کم عجله دارم اگه دوستان کسی می تونه لطفا کمک کنه. :cry: :sad:
                    کل برنامه ای که نوشتم این البته این تست که ایا مموری کامل خونده شده یا نه
                    کد:
                    #include <mega32a.h>
                    #define xtal 16000000
                    #include <sdcard.h>
                    #include <ff.h>
                    #include <delay.h>
                    #include <stdlib.h>
                    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
                    {
                    TCNT0=0xF5;
                    disk_timerproc();
                    }
                    void main(void)
                    {
                    FATFS drive;
                    FIL file;
                    unsigned int i;
                    char buffer[10];
                    DDRC=0xff;
                    TCCR0=0x05;
                    TCNT0=0xF5;
                    OCR0=0x00;
                    TIMSK=0x01;
                    #asm("sei")
                    
                    
                    PORTC.0= 1;
                    while(f_mount(0,&drive)!=FR_OK);
                    PORTC.1=1;
                    
                    
                    while(f_open(&file,"0:/1.txt",FA_READ)!=FR_OK);
                    PORTC.2=1;
                    
                    while(f_read(&file,buffer,5,&i)!=FR_OK);
                    PORTC.3=1;
                    
                    
                    while (1);
                    }

                    که در خروجی تا پایه 1 پورت سی روشن نمیشه یعنی فقط 0 و 1 روشن میشه که این نشون میده در قسمت open مشکل داره با یک برنامه دیگه خطا را خوندم که همون خطایی که در بالا گفتم :sad: :sad:
                    سلام
                    استراکچرهای FATFS و FIL را بصورت public تعریف کنید(خارج از main) و تست کنید

                    موفق باشید
                    امام علی (علیه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                    دیدگاه


                      پاسخ : کتابخانه ff.h

                      بازم سلام

                      کسی با نام فایل بیشتر از 8 کار نکرده؟
                      دوست عزیز اگه مفید بود روی تشکر بزن

                      دیدگاه


                        پاسخ : کتابخانه ff.h

                        نوشته اصلی توسط Abbas Sarami
                        سلام
                        استراکچرهای FATFS و FIL را بصورت public تعریف کنید(خارج از main) و تست کنید

                        موفق باشید
                        سلام ممنون مهندس دو خط
                        کد:
                        FATFS drive;
                        FIL file;
                        را گذاشتم قبل main ولی خطای
                        Linker error: global RAM variables size: 602 bytes is too large
                        میدهد.
                        در مورد خطا سرچ کردم مواردی هم تغییر دادم اما جواب نگرفتم بازم خطا را میدهد لطفا راهنمایی نمایید :sad:

                        اضافه شده در تاریخ :
                        مشکل کمبود فضا حل شد از پست زیر حلش کردم ولی باز هم مشکل قبلی هست
                        http://www.eca.ir/forum2/index.php?topic=95173.0
                        ایا امکان داره رم درست فرمت نشده باشه یا ایرادی از خود رم باشه یا از فایل txt که داخلش؟ یا ایراد از میکرو؟ :angry: :sad:

                        اضافه شده در تاریخ :
                        لینک زیر کل برنامه است از متخصصان خواهشمندم یک نگاهی به برنامه انداخته و ایراد آن را برایم ارسال نمایند :sad:
                        حجمش 158 کیلو بایت
                        http://s6.picofile.com/file/8242102984/Read.zip.html

                        دیدگاه


                          پاسخ : کتابخانه ff.h

                          تابع disk_initialize فراموش شده :NO:
                          این کد را تست کن (خودم تست نکردم)
                          [code=c]
                          #include <mega32.h>
                          #include <sdcard.h>
                          #include <ff.h>
                          #include <delay.h>
                          #include <stdlib.h>


                          FATFS drive;
                          FIL file;

                          interrupt [TIM0_OVF] void timer0_ovf_isr(void)
                          {
                          TCNT0=0xF5;
                          disk_timerproc();
                          }


                          unsigned int i;
                          char buffer[10];
                          unsigned char Result;


                          void main(void)
                          {
                          DDRC=0xff;
                          TCCR0=0x05;
                          TCNT0=0xF5;
                          OCR0=0x00;
                          TIMSK=0x01;
                          #asm("sei&quot

                          PORTC.0=1;
                          //------------------------------- Disk Initialize
                          do
                          {
                          Result = disk_initialize(0);
                          }
                          while(Result!=RES_OK);
                          //-----------------------------------------------

                          //------------------------------------ Fat Mount
                          do
                          {
                          Result = f_mount(0,&drive);
                          }
                          while(Result!=FR_OK);
                          //---------------------------------------------

                          PORTC.1=1;

                          //------------------------------------ Open File
                          do
                          {
                          Result = f_open(&file,"1.txt",FA_READ);
                          }
                          while(Result!=FR_OK);
                          //---------------------------------------------

                          PORTC.2=1;

                          //------------------------------------ Read File
                          do
                          {
                          Result = f_read(&file,(char*)&buffer,5,&i);
                          }
                          while(Result!=FR_OK);
                          //---------------------------------------------

                          PORTC.3=1;

                          //------------------------------------ Close File
                          f_close(&file);
                          //---------------------------------------------

                          PORTC.4=1;
                          while (1)
                          {
                          }

                          }[/code]

                          موفق باشید
                          امام علی (علیه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                          دیدگاه


                            پاسخ : کتابخانه ff.h

                            ممنون اقای سرامی ولی از این خط رد نمیشه
                            کد:
                            do
                            {
                            Result = disk_initialize(0);
                            }
                            while(Result!=RES_OK);
                            یک پورت بعدش تعریف کردم روشن نشد :sad:
                            بعدش اومدم خط های فوق حذف کردم یعنی شبیه کد قبل دوباره تابع f_mount را خواند ولی f_open را نخواند
                            در تابع disk_initialize هم مشکل داره. :angry: :angry: :angry:

                            دیدگاه


                              پاسخ : کتابخانه ff.h

                              خدا را شکر بالاخر اشکالش پیدا شد.
                              متاسفانه در پست ها بیان شده بود خطای عدد (0x03) سخت افزاری نیست ولی ایراد مدار کاملا سخت افزاری بوده و همان برنامه اولی که ارسال کرده بودم جواب میدهد .
                              ایراد مدار این بود که اداپتوری که برای مموریmicro sd گذاشته بودم چفت نشده بود یعنی باید با دست اداپتور را فشار دهم تا مموری در اتصالاتش حتما متصل باشد.

                              دیدگاه


                                پاسخ : کتابخانه ff.h

                                با سلام :nerd:

                                یه مشکل در ساختن پوشه در میکرو sd دارم که هر چی میکنم حل نمیشه دو هفته هست که گیرشم !
                                میکرو sd من 128 مگابایت هست format هم کردم اما بازم نشده
                                تا الان تونستم فایل رو ایجاد کنم توشت بنویسم و ببندمش اما پوشه رو نتونستم :angry:
                                یعنی حتما مشکل از برنامه هست اما هیچ خطایی نمیگیره و خوب و درست کامپایل میشه

                                لطفا کمک کنید
                                این برنامه من هست نمیدونم ایرادش کجاست ( از بابت تابع disk_timerproc مشکلی نیست ) .
                                تو تابع f_mkdir گیر میکنه خطاهایی که میده اولش 0x03 بعدش یه تعداد زیاد 0x0A بعدش دیگه همش 0x05 .
                                FS_MINIMIZE_ و FS_READONLY_ هم مساوی صفر هستند.

                                [code=c]#include <mega32a.h>
                                #include <alcd.h>
                                #include <ff.h>
                                #include <stdio.h>
                                #include <delay.h>
                                #include <stdlib.h>

                                #define T1_OVF_FREQ 100
                                #define T1_PRESC 1024L
                                #define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))

                                FRESULT res;
                                unsigned int nbytes;
                                FATFS drive;
                                DIR dir;

                                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();
                                }


                                void main(void)
                                {
                                char i;
                                TCCR1A=0x00;
                                TCCR1B=(1<<CS12)|(1<<CS10);
                                TCNT1H=T1_INIT>>8;
                                TCNT1L=T1_INIT&0xFF;
                                TIMSK=1<<TOIE1;


                                #asm("sei&quot

                                lcd_init(16);
                                lcd_clear();


                                while( (res=f_mount(0,&drive))!=FR_OK)
                                lcd_putsf("FAT mounted = OK"
                                delay_ms(500);
                                lcd_clear();

                                while(1)
                                {
                                res = f_mkdir("sub1/sub2/sub3"
                                sprintf ( buff1," %X",res);
                                lcd_clear();
                                lcd_puts (buff1);
                                delay_ms(20);
                                if ( res == 0 )
                                break;
                                }
                                }

                                [/code]
                                همینطور این تابع هم کار نمیکنه اما کامپایلر هم ایرادی نمیگیره !
                                [code=c]while ( res = f_opendir(&dir,"sub1&quot != FR_OK );[/code]

                                دیدگاه

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