اطلاعیه

Collapse
No announcement yet.

کتابخانه ff.h

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

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

    مهندس جان خدمت شما عرض کردم که من از کتابخانه کدوِیژن استفاده کردم جواب هم داده تازه disk_timerproc هم دقیق فراخوانی نکنی جواب میده
    مشکل اینجا هست که سرعتش برای MEGA64 من پایینه و جواب کاری من که می خوام انجام بدمو نمیده
    اگر بلد هستید که چطور میشه سرعت کلاک را با کتابخانه کدویژن بالا برد ممنون می شوم که کمکم کنی
    چون من SRSR و SRCR را فراخونی کردم دیدم که SPI غیرفعال هست

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

    دیدگاه


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

      سلام خدمت دوستان عزیز و زحمت کش
      یه سوال!!!
      اینکه همزمان با mmc میتونیم از یه وسیله دیگه هم برای ارتباط با spi استفاده کنیم یا نه!!!! oo:
      برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

      دیدگاه


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

        نوشته اصلی توسط hossein_tomari007
        سلام خدمت دوستان عزیز و زحمت کش
        یه سوال!!!
        اینکه همزمان با mmc میتونیم از یه وسیله دیگه هم برای ارتباط با spi استفاده کنیم یا نه!!!! oo:
        بله چرا نشه ...
        فقط باید سرعت spi رو برای اون دیوایس جدید تنظیم کنید . مثلا آقای اسدی توی پروژه ی mp3 player با السیدی رنگی از یه spi هم توی mmc هم برای تاچ السیدی و هم برای آیسی vs1003 استفاده کردند

        دیدگاه


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

          اگه بخواهیم USE_LFN رو تغییر بدیم باید دو تا تابع اضافه کنیم به پروژمون :eek:
          که اسماشون ff_convertو ff_wtoupper هستش
          این توابع توی فولدر پشن هستش ولی با هم فرق میکنن :redface:
          کدوم رو باید انتخاب کرد
          همینطور USE_LFN مقدارش رو چند باشه بهتره
          "من میخوام حداقل فایل هایی با نام بیشتر از 12 تا کاراکتر رو بخونه"
          برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

          دیدگاه


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

            دوستان با avr میشه رم رو فرمت کرد؟؟؟ :eek:
            اگه آره
            چجوری؟ oo:
            برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

            دیدگاه


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

              نوشته اصلی توسط hossein_tomari007
              دوستان با avr میشه رم رو فرمت کرد؟؟؟ :eek:
              اگه آره
              چجوری؟ oo:
              با سلام،

              اگر مد USE_MKFS_ فعال باشه، میشه....

              با این دستور :
              fm <logi drv#> <part type> <bytes/clust>
              مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

              Sh_Nourbakhsh@Yahoo.com

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

              دیدگاه


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

                نوشته اصلی توسط aivhl
                با سلام،

                اگر مد USE_MKFS_ فعال باشه، میشه....

                با این دستور :
                fm <logi drv#> <part type> <bytes/clust>
                خیلی ممنون ولی میشه دستور رو واضح تر بنویسید
                من که متوجه نشدم چی به چیه :eek:
                برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

                دیدگاه


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

                  نوشته اصلی توسط hossein_tomari007
                  خیلی ممنون ولی میشه دستور رو واضح تر بنویسید
                  من که متوجه نشدم چی به چیه :eek:
                  در فایل ff.c به روتین زیر مراجعه کنید و در فایل main.c مثال آقای ChaN هم به قسمت File و Create file system یا همون fm مراجعه کنید. ( البته در ff.c جزئیات واضح تر معلومه! )


                  FRESULT f_mkfs (
                  BYTE drv, /* Logical drive number */
                  BYTE sfd, /* Partitioning rule 0:FDISK, 1:SFD */
                  UINT au /* Allocation unit size [bytes] */
                  )
                  مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                  Sh_Nourbakhsh@Yahoo.com

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

                  دیدگاه


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

                    سلام به همگی
                    چند صفحه پیش یکی از دوستان سوالی در مورد die پرسیده بود که این دستور چیکار میکنه ولی یکی دیگر از دوستان جواب داده بود
                    اصلا این دستور توی cv وجود نداره

                    همین سوال هم برای من پیش اومد این دستور die که آقای اسدی از اون استفاده کردن چیکار میکنه
                    خوب این هم یک سوال دیگه؟؟؟؟؟؟؟؟؟؟؟

                    دیدگاه


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

                      نوشته اصلی توسط ShahiMV
                      سلام به همگی
                      چند صفحه پیش یکی از دوستان سوالی در مورد die پرسیده بود که این دستور چیکار میکنه ولی یکی دیگر از دوستان جواب داده بود
                      اصلا این دستور توی cv وجود نداره

                      همین سوال هم برای من پیش اومد این دستور die که آقای اسدی از اون استفاده کردن چیکار میکنه
                      خوب این هم یک سوال دیگه؟؟؟؟؟؟؟؟؟؟؟
                      با سلام،

                      سید جون، همچین دستوری وجود نداره، شاید یه ماکرو باشه، این دستور دقیقا توی کدوم پروژه استفاده شده، نشونم بده تا خدمتش برسم :biggrin:
                      مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                      Sh_Nourbakhsh@Yahoo.com

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

                      دیدگاه


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

                        صفحه ی 4 پاسخ اول

                        کد:
                        void main (void)
                            {
                            FATFS fs;     	// Work area (file system object) for the volume
                            FIL fs;   		// file objects 
                            BYTE buff[16];   	// File read buffer
                            UINT br;      	// File read count
                            FRESULT res;    	// Petit FatFs function common result code
                        
                        
                            // Mount the volume
                            f_mount(0, &fs);
                            
                            if (res) die(res);
                        
                            //در درایو 0 srcfile.dat  باز کزدن فایل 
                            res = f_open(&fs, "0:srcfile.dat", FA_OPEN_EXISTING | FA_READ);
                            if (res) die(res); 
                            // حلقه خواندن فایل و انجام کاری که قراره روی فایل انجام بدیم 
                            do{
                            	
                                // خوندن 16 بایت از فایل 
                            	res = f_read(&fs, buff, 16, &br);  
                                // کارهایی که قراره روی دیتای خونده شده فایل انجام بدیم
                                .
                                .
                                .
                                . 
                            // چک کردن مقدار خطا که بزرگتر از صفر نباشه و مقدار دیتای خونده شده تا کمتر از 16 نباشه
                            }while (res || br != 16); 
                            
                            // بستن فایل
                            f_close(&fs);
                            // بستن درایو
                            f_mount(0, NULL);

                        خط نهم if (res) die(res);

                        ولی این بین خودمون باشه ها بچه های ECA حرف ندارن کارشون درسته

                        دیدگاه


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

                          نوشته اصلی توسط ShahiMV
                          صفحه ی 4 پاسخ اول

                          کد:
                          void main (void)
                              {
                              FATFS fs;     	// Work area (file system object) for the volume
                              FIL fs;   		// file objects 
                              BYTE buff[16];   	// File read buffer
                              UINT br;      	// File read count
                              FRESULT res;    	// Petit FatFs function common result code
                          
                          
                              // Mount the volume
                              f_mount(0, &fs);
                              
                              if (res) die(res);
                          
                              //در درایو 0 srcfile.dat  باز کزدن فایل 
                              res = f_open(&fs, "0:srcfile.dat", FA_OPEN_EXISTING | FA_READ);
                              if (res) die(res); 
                              // حلقه خواندن فایل و انجام کاری که قراره روی فایل انجام بدیم 
                              do{
                              	
                                  // خوندن 16 بایت از فایل 
                              	res = f_read(&fs, buff, 16, &br);  
                                  // کارهایی که قراره روی دیتای خونده شده فایل انجام بدیم
                                  .
                                  .
                                  .
                                  . 
                              // چک کردن مقدار خطا که بزرگتر از صفر نباشه و مقدار دیتای خونده شده تا کمتر از 16 نباشه
                              }while (res || br != 16); 
                              
                              // بستن فایل
                              f_close(&fs);
                              // بستن درایو
                              f_mount(0, NULL);

                          خط نهم if (res) die(res);

                          ولی این بین خودمون باشه ها بچه های ECA حرف ندارن کارشون درسته
                          با سلام،

                          کار درستی از خودتونه برادر!

                          و اما این ()die یه چیز تو مایه های ()return خودمونه که در java وجود داره، البته یه خورده پیشرفته تره، که میتونه یه کد خطا و یا حتی یک آبجکت رو پس از بروز خطا در اجرای روند عادی برنامه برگردونه، چیز بیشتری ازش یادم نمیاد ( همین هم کلی زور زدم تا یادم اومده! )

                          حالا چطور شده که این برادر ChaN ازش استفاده کرده، نمیدونم؟ ولی در هر صورت، توی سی نیست! :mrgreen:
                          مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                          Sh_Nourbakhsh@Yahoo.com

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

                          دیدگاه


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

                            با سلام

                            دوستان شرمنده که دیر جوابتونو میدم واقعا سرم شلوغه
                            البته سر میزنم ولی وقتی میبینم دوستان خوش ذوق دیگه جواب سوالهارو میدم دیگه نیازی به دادن پاسخ نمیبینم

                            اما دیدم این تابع die دیگه داره مشکل ساز میشه گفتم یه توضیحی هم من بدم

                            دوستانی که چندتا زبان برنامه نویسی بلدند میدونند که توی بعضی از زبانهای برنامه نویسی برخی ار توابع و دستورات که خیلی به درد بخورند توی برخی از زبانها وجود ندارن و مخصوص اون زبان خاص میشن لذا وقتی کسی مثل اقای چان میاد یه برنامرو مینویسه و یه جاش قراره کاری مشابه یه دستور یا تابعی که در خود سی وجود نداره انجام بده میاد به نام همون تابه یه تابع مینویسه

                            مثل این تابع die


                            کد:
                            void die (		// Stop with dying message
                            	FRESULT rc	// FatFs return value 
                            	)
                            	{
                            	printf("Failed with rc=%u.\n", rc);
                            	for (;;) ;
                            	}

                            حالا کارش چی هست ؟؟

                            این تابع خطای به وجود اومده رو از طریق USART یا همون سریال خودمون ارسال میکنه و توی یه لوپ نا محدود میفته همین !!!

                            اگر دقت کنید توی main سمپلهای خود اقای چان این تابع نوشته شده البته باید بگم من هم برای راحتی کار چون این توضیحات و مثالهارو از سایت خود اقای چان کپی کردم این مشکل به وجود اومده ولی خودم توی پوژه هایی که در انجمن قرار دادم

                            wave player & fat
                            یا پروژه
                            شما هم میتونید MP3 Player بسازید اونهم با LCD رنگی لمسی

                            و از این لایبری استفاده کردم همچین تابعی به کار نبردم
                            در هر صورت شرمنده

                            به همین سادگی :nice:
                            تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
                            به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

                            دیدگاه


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

                              یعنی یکی نباید به من جواب بده :angry:
                              چــــــــــــــــــــــــــرا این کتابخونه ها ناقصــــــــــــــــــــــــــــــــــــــــــــــ ــــه :angry:
                              تابع ff_convert رو نداره :angry:
                              نمیشه فایل ساخت :angry:
                              اــــــــــــی خدا به کی بگم :angry:

                              [move] :angry: :angry: :angry: :angry: :angry:[/move]
                              دلا خو کن به تنهایی که از تنها بلا خیزد

                              دیدگاه


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

                                نوشته اصلی توسط Navid_Micro
                                یعنی یکی نباید به من جواب بده :angry:
                                چــــــــــــــــــــــــــرا این کتابخونه ها ناقصــــــــــــــــــــــــــــــــــــــــــــــ ــــه :angry:
                                تابع ff_convert رو نداره :angry:
                                نمیشه فایل ساخت :angry:
                                اــــــــــــی خدا به کی بگم :angry:
                                با سلام
                                حالا دیگه چرا خودتو میزنی ؟؟؟؟؟؟؟
                                این تابعی که میگی چی هست؟؟؟؟
                                اصلا میخوای چیکار کنی؟
                                اگر فقط میخوای یه فایل ایجاد کنی باید از تابع f_open استفاده کنید

                                به این صورت


                                کد:
                                f_open(&fsrc, "1:test.txt", FA_CREATE_NEW )

                                با این دستور متونید یک فایل با نام test.txt در درایو 1 ایجاد کنید
                                همه اینهارو در پست 25 توضیح دادم لطفا کمی مطاله کنید

                                http://www.eca.ir/forum2/index.php?topic=55074.msg295429#msg295429

                                نوشته اصلی توسط POLESTAR
                                تابع دوم

                                کد:
                                FRESULT f_open (
                                 FIL* FileObject,    /* Pointer to the blank file object structure */
                                 const TCHAR* FileName, /* Pointer to the file neme */
                                 BYTE ModeFlags     /* Mode flags */
                                );

                                (نوع دسترسی , نام فایل , اشاره گر فایل)f_open
                                هست
                                حالا این تابع چیه به چه درد میخوره؟
                                برای ایجاد یا باز کردن فایل به کار میره

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

                                ورودی و خروجی هاش؟
                                سه تا ورودی داره
                                1- اشاره گر فایل FileObject یه اشاره گر به متغیری که باید قبل از این تابع از نوع استراکچر FIL تعریف شده باشه
                                2- اشاره گر اسم فایل FileName یه اشاره گر به متغیری که باید قبل از این تابع از نوع TCHAR تعریف و مقدا دهی شده باشه البته میشه مستقیما
                                هم نام فایل رو در فلش تعریفش کرد یا مثل مثال پایین بصورت مستقیم وارد تابع کرد
                                3- نوع دسترسی ModeFlags یه متغیر از نوع بایت هست که میتونه 6 حالت مختلف داشته باشه
                                - FA_READ = 0x01 دسترسی برای فقط خواندن فایل
                                - FA_WRITE = 0x02 دسترسی برای فقط نوشتن فایل
                                - FA_OPEN_EXISTING = 0x00 دسترسی فقط برای باز کردن فایل
                                - FA_OPEN_ALWAYS = 0x10 فایل را در صورتی که وجود ندارد ایجاد میکند در غیر این صورت از ادرس صفر فایل بازش میکند
                                - FA_CREATE_NEW = 0x04 فقط فایل رو ایجاد میکند در غیر این صورت FR_EXIST باز گردانده خواهد شد
                                - FA_CREATE_ALWAYS = 0x08 فقط فایل رو ایجاد میکند در صورت وجود فایل اطلاعات فایل پاک خواهد شد


                                و یک خروجی خطا داره که 17 حالت داره
                                FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, FR_DENIED, FR_EXIST, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_LOCKED, FR_NOT_ENOUGH_CORE, FR_TOO_MANY_OPEN_FILES
                                در مورد این خطا ها باید بگم کلا 20 نوع مختلف داره و در توابع مشترک هستند و هر تابه یه تعداد خواصی شو برمیگردونه
                                پس بعد از این برای خروجی توابع میتونید با چک کردن مقدارش بفهمید که تابع چه کاری کرده

                                - FR_OK = 0x00 عملکرد موفق ی(مشکلی نبوده و تابع به درستی اجرا شده)
                                - FR_DISK_ERR = 0x01 خطا در توابع دیسک (مشکلی در ارتباط با دیسک به وجود امده است) دیسک وجود ندارد
                                - FR_INT_ERR = 0x02 خطا در ساختار فت یا سرریز شدن مقادیر متغیر های FATFS یا FIL یا دیگر متغیر های مرتبط
                                - FR_NOT_READY = 0x03 خطا در دیسک با لول پایین یا انیشیال نشدن درست دیسک با تابع disk_initialize منظور از لول پایین یعنی دیسک وجود دارد ولی ارتباط درست نیست
                                - FR_NO_FILE = 0x04 فایل وجود ندارد
                                - FR_NO_PATH = 0x05 مسیر داده شده درست نیست
                                - FR_INVALID_NAME = 0x06 رشته داده به عنوان نام مسیر نامعتبر است
                                - FR_DENIED = 0x07 دسترسی به مورد با توجه به یکی از موارد زیر محدود شده است
                                + برای فایلی با ویژگی فقط خواندنی حالت نوشتن یا باز را بنویسید
                                + حذف فایل یا دایرکتوری با ویژگی فقط خواندنی
                                + حذف دایرکتوری غیر خالی یا دایرکتوری جاری
                                + خواندن فایلی که بدون پرچم FA_READ باز شده باشه
                                + نوشتن یا تغییر فایلی که بدون پرچم FA_WRITE باز شده باشه
                                + ایجاد فایل یا دایرکتوری در درایو پر شده
                                + حجم دایرکتوری ایجاد شده بیشتر از حجم خالی درایو باشد
                                - FR_EXIST = 0x08 این یعنی همنامی یا هر شی که دارای همین نام است و یا در حال حاضر موجود است
                                - FR_INVALID_OBJECT = 0x09 با توجه به ساختار فایل یا دایرکتوری شی نامعتبر است
                                - FR_WRITE_PROTECTED = 0x0A حفاظت شده در برابر هرگونه نوشتن
                                - FR_INVALID_DRIVE = 0x0B شماره درایو انتخاب شده نا معتبر است
                                - FR_NOT_ENABLED = 0x0C درایو مورد نظر توسط تابع f_mount تعریف نشده است
                                - FR_NO_FILESYSTEM = 0x0D درایو پارتیشن بندی نشده یا فرمت نا معتبر است
                                - FR_MKFS_ABORTED = 0x0E اندازه کلاستر برای این دیسک نامعتبر است و زمانی به وجود می اید که شماره کلاستر نزدیک 0xFF7 یا 0xFFF7 باشد
                                - FR_TIMEOUT = 0x0F زمان پاسخ گویی به پایان رسید ولی جوابی نیامد
                                - FR_LOCKED = 0x10 دسترسی به فایل توسط کنترل به اشتراک گذاری فایل رد شده است
                                - FR_NOT_ENOUGH_CORE = 0x11 به یکی دلایل زیر حافظه به اندازه کافی برای عملیات وجود ندارد
                                + بافری برای LFN تعریف نشده است
                                + با توجه به اندازه جدول نیاز به اندازه کافی است
                                - FR_TOO_MANY_OPEN_FILES = 0x12 تعداد فایل های باز شده به حداکثر رسیده و فایل بیشتر نمی توان باز کرد
                                - FR_INVALID_PARAMETER = 0x13 پارامتر داده شده نامعتبر است
                                به همین سادگی :nice:
                                تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
                                به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

                                دیدگاه

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