اطلاعیه

Collapse
No announcement yet.

[آموزش] نحوه استفاده از کتابخانه pff.h

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

    #91
    پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

    با سلام
    من امروز عصر تا رسیدم خونه اولین کاری که کردم رفتم سراغ مثال 3 که سوران عزیز گذاشتند.
    این مثال برای کمپایل روی سخت افزار من نیاز به چند تغییر داشت که من اون تغییرات را اعمال کردم :
    1- میکروی من atmega64 هستش که هم توی پروژه و هم توی فایل pff.hj تغییرات رو اعمال کردم
    2 من lcd ندارم و اطلاعات رو روی پورت صفر میکرو بیرون فرستادم
    3- کریستال من 14 مگلاهرتز بود .

    من یک فایل بزرگ که روی ssd داشتم رو برای باز کردن بهش دادم و البته دیتا روش نوشتم و خوندم و همه چیز درست بود و مشکلی نداشت !!!

    البته تابع اتمام نوشتن رو من هیچ وقت چک نمی کردم که آیا 0 بر می گردونه یا نه و اینجا هم چک نکردم و تنها یکبار اونرو صدا کردم کل پروژه رو میذارم و لی تنها همون چند تغییر رو که گفتم دادم و مشکل نداره.

    http://www.uplooder.net/cgi-bin/dl.cgi?key=96c038b86fa4fba79da31be0255cb4e1

    بازهم مشکلی بود تا جایی که وقت داشته باشم در خدمتم البته این چند روزه سرم خیلی شلوغه ولی هفته آینده بیشتر می تونم وقت بذارم

    دیدگاه


      #92
      پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

      نوشته اصلی توسط سوران آراسته
      با سلام

      قبل از هر چیز از همه دوستان عذر می خوام متاسفانه این مدت به دلیل مشکلاتی اصلا نمی تونم کمکی بهتون بکنم و باید به بزرگی خودتون ببخشید.

      چند تا از دوستان در پیغام خصوصی درخواست کردن تا برنامه ای رو برای نوشتن اطلاعات بر روی کارت حافظه با استفاده از کتابخانه نام برده قرار بدم.
      قبلا اقای عباسی همچین درخواستی رو کردن و تا جایی که می شد و می تونستم کمک ناچیزی بهشون کردم و خب اصل ماجرا این که در این کتابخانه تابعی برای بستن فایل وجود نداره و مشکل اصلی از همین جا ناشی میشه.
      البته با خوندن توضیحات تابع pf_write متوجه میشید که نوشته شده با جاگذاری NULL یا همون صفر به دو ارگومان تابع یعنی فایل بسته شود.
      در زیر سورسی رو قرار میدم که ممنون میشم اقای عباسی بر روی سخت افزار خودشون اون رو تست کنن و نتیجه رو به دوستان اطلاع بدن.
      به شخصه برنامه های نمونه ای رو با این کتابخانه نوشتم ولی متاسفانه اطلاعات گاها نوشته میشد و از 10 بار عملیات نوشتن اونم کاملا اتفاقی یکیش درست کار می کرد.
      توجه کنید که با اجرای تابع FR_OK برگشت داده میشه اما اطلاعات ثبت نخواهد شد.

      دانلود سورس : http://eca.ir/sharing/uploads/13936805721.rar

      موفق باشید
      من برنامه سوران رو جرا کردم
      هم توی پروتئوس هم روی سخت افزار ولی کار نمیکنه
      تقریبا شبیه برنامه های خودمونه
      آقا به نظر شما کلا ارزش داره روی pff وقت بذاریم یا کلا بریم سراغ همون ff؟!!!!
      من تقریبا میشه گفت فقط با نوشتن کار دارم ( data Logger ) هست
      کسی دیگه نتونسته جواب بگیره از تابع pf_write ؟!!!
      درایور شبکه و nRF24L01
      کاتالوگ محصولات
      کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
      شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
      فروش اسیلوسکوپ GWinstek GOS-630FC

      دیدگاه


        #93
        پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

        نوشته اصلی توسط بسطام بیرامی
        من برنامه سوران رو جرا کردم
        هم توی پروتئوس هم روی سخت افزار ولی کار نمیکنه
        تقریبا شبیه برنامه های خودمونه
        آقا به نظر شما کلا ارزش داره روی pff وقت بذاریم یا کلا بریم سراغ همون ff؟!!!!
        من تقریبا میشه گفت فقط با نوشتن کار دارم ( data Logger ) هست
        کسی دیگه نتونسته جواب بگیره از تابع pf_write ؟!!!
        من دیشب تست کردم کار می کنه ( البته با اعمال تغییراتی که گفتم )
        راستش من حدود 40 روز پیش که شروع به کار کردم همون اوایل یکم با ff.h کار کردم روی اون هم توی نوشتن مشکلاتی داشتم که الان بادم نیست دقیقا چی بود ولی بعد دیدم همه دارن از این استفاده می کنن و اومدم سراغ این کتابخونه !
        همانطور که خودش هم گفته این کتابخونه ساده شده ff.h است و قطعا یکسری چیزیهایی که زیاد لزومی نداشته رو حذف کرده ولی اینطور نیوده که واقعا کاراییش رو خراب کنه و نشه باهاش کار کرد .
        من دارم باهاش کار می کنم و اون قسمت پروژم تقریبا تموم شده و الن دارم قسمتهای دیگش رو ادامه می دم .
        نمی گم خوب کار می کنه ولی با کارهایی که کردم داره جواب می ده !
        در مورد پروتیوس زیاد مطمن نیستم واصلا درست و حسابی من باهاش کار نکردم که بگم جواب می ده یا نه ؟
        ولی در عمل تست کن و سعی کن از اول با دقت بیشتری سخت افزارت رو چک کنی ان شا اله جواب می گیری

        دیدگاه


          #94
          پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

          نوشته اصلی توسط داریوش عباسی
          من دیشب تست کردم کار می کنه ( البته با اعمال تغییراتی که گفتم )
          راستش من حدود 40 روز پیش که شروع به کار کردم همون اوایل یکم با ff.h کار کردم روی اون هم توی نوشتن مشکلاتی داشتم که الان بادم نیست دقیقا چی بود ولی بعد دیدم همه دارن از این استفاده می کنن و اومدم سراغ این کتابخونه !
          همانطور که خودش هم گفته این کتابخونه ساده شده ff.h است و قطعا یکسری چیزیهایی که زیاد لزومی نداشته رو حذف کرده ولی اینطور نیوده که واقعا کاراییش رو خراب کنه و نشه باهاش کار کرد .
          من دارم باهاش کار می کنم و اون قسمت پروژم تقریبا تموم شده و الن دارم قسمتهای دیگش رو ادامه می دم .
          نمی گم خوب کار می کنه ولی با کارهایی که کردم داره جواب می ده !
          در مورد پروتیوس زیاد مطمن نیستم واصلا درست و حسابی من باهاش کار نکردم که بگم جواب می ده یا نه ؟
          ولی در عمل تست کن و سعی کن از اول با دقت بیشتری سخت افزارت رو چک کنی ان شا اله جواب می گیری
          با سلام

          ببینید شما به متغیر buffer یک رشته می دهید تا بنویسد سپس از همان متغیر در خواندن استفاده میکنید متغیر مذکور همان داده ای را که برای نوشتن به آن دادید بدون انکه چیزی نوشته باشد تا بخواند پس مقدار متغیر تغییر نکرده همان را برای شما برمیگرداند وشما فکر میکنید که نوشته و خوانده در حالی که اگر متغیر خواندن ونوشتن باهم فرق بکند مثلا متغیر جدیدی ایجاد کنید به نام buff_1 و موقع خواندن از آن استفاده کنید خواهید دید که داخل متغیر خالی است و چیزی نوشته نشده که خوانده شود

          دیدگاه


            #95
            پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

            نوشته اصلی توسط Shapour-Ardebil
            با سلام

            ببینید شما به متغیر buffer یک رشته می دهید تا بنویسد سپس از همان متغیر در خواندن استفاده میکنید متغیر مذکور همان داده ای را که برای نوشتن به آن دادید بدون انکه چیزی نوشته باشد تا بخواند پس مقدار متغیر تغییر نکرده همان را برای شما برمیگرداند وشما فکر میکنید که نوشته و خوانده در حالی که اگر متغیر خواندن ونوشتن باهم فرق بکند مثلا متغیر جدیدی ایجاد کنید به نام buff_1 و موقع خواندن از آن استفاده کنید خواهید دید که داخل متغیر خالی است و چیزی نوشته نشده که خوانده شود
            با تشکر از شما بله در این مثال 4 حق با شماست من امشب دوباره تست می کنم و بافر رو خالی میکنم و بعد نتبجه را می گذارم .
            ولی در مورد برنامه اصلی خودم که مدام دیتاها درحال عوض شدن هست و دیتاها از فایلهای مختلف خوانده می شود و در فابلهای مختلف نوشته می شود مطمن هستم که چنین مشکلی نبوده .

            دیدگاه


              #96
              پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

              نوشته اصلی توسط Abbas Sarami
              در سایت chaN نوشته

              The write function has some restrictions listed below:
              Cannot create file. Only existing file can be written.
              Cannot expand file size.
              Cannot update time stamp of the file.
              Write operation can start/stop on the sector boundary.
              Read-only attribute of the file cannot block write operation.
              تابع نوشتن بنا به گفته خودش نمیتونه اندازه فایل را بزرگتر کنه
              من نمیتونم تست کنم لطفاً دوستان نتیجه آزمایشاتشون را اعلام کنن
              اتفاقا من قبل از کار سایتش رو زیر و رو کردم و به این مطلب هم دقت کردم و خب تست هایی هم روش انجام دادم.
              ابتدا یه فایل تکست رو در سیستم بر روی کارت ایجاد کردم داخلش 100 کاراکتر F قرار دادم.
              در این حالت هم گاها اطلاعات نوشته می شد و به فرض من داخل کارت 20 کاراکتر ذخیره می کردم خودش بقیه رو NULL می نوشت.
              چرا ناراحتی پاتریک!
              + امروز ی بچه دیدم سرچهارراه گل میفروخت
              - از دیدنش ناراحت شدی؟
              + نه
              پس چی ناراحتت کرده
              + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
              ------------------------------------------------------------------------------------------------------
              تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
              ------------------------------------------------------------------------------------------------------
              محصولات

              دیدگاه


                #97
                پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

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

                کد:
                char flash str[] =
                		"OK\0" "DISK_ERR\0" "NOT_READY\0" "NO_FILE\0" "NO_PATH\0"
                		"NOT_OPENED\0" "NOT_ENABLED\0" "NO_FILE_SYSTEM\0";
                سپس تابعی را تعریف میکنیم که ایرادات را در صفحه نمایش به ما نمایش دهد

                کد:
                void display_result (FRESULT rc)
                {
                	flash char *p;
                	FRESULT i;
                
                	for (p = str, i = (FRESULT) 0; (i != rc) && (*p); i++) {
                		while(*p++);
                	}
                  lcd_gotoxy(1,1);
                  lcd_putsf(p);
                  delay_ms(1500);
                }
                سپس هریک از دستورات را طوری مینویسیم که وضعیت بوجود آمده را بدانیم

                کد:
                  /* di - Initialize physical drive */ 
                  lcd_clear();
                  lcd_putsf("Init File");
                	res = disk_initialize();
                	display_result(res);
                  
                  /* fi - Mount the volume */
                  lcd_clear();
                  lcd_putsf("Mount File");
                	display_result(pf_mount(&fs));
                
                  /* fo <file> - Open a file */
                  lcd_clear();
                  lcd_putsf("Open File");
                	display_result(pf_open("test.txt"));
                سپس می رسیم به غول بی شاخ ودم نوشتن ما برای اینکه بدانیم عمل نوشتن درست صورت گرفته یا نه بایستی
                کد:
                pf_write(buffer, strlen(buffer), &w);
                strlen(buffer) تعدادکاراکتری که بایستی نوشته شود برابر با w (تعداد کاراکتر نوشته شده ) باشد چون من از lcd استفاده میکنم بایستی با تابع sprinf به کد اسکی تبدیل کنم و برای استفاده از تابع sprintf باید فایل stdio.h اینکلود بشه و هر وقت اینکلود میکنم کلی ایراد میگیرد پس مجبورا از طریق مقایسه اینکار را میکنم

                کد:
                  /* Write data to the file */
                  lcd_clear();
                  lcd_putsf("Write file");
                  strcat(buffer, "\r\n");
                	res = pf_write(buffer, strlen(buffer), &w);
                  display_result(res); 
                  if(w == (strlen(buffer)))
                  {
                    lcd_clear(); 
                    lcd_putsf("OK OK OK"); 
                  }else{
                    lcd_clear();
                    lcd_putsf("Error Writing");
                  }  
                  delay_ms(1500);
                و ملاحظه میکنید که علارغم اینکه OK را نمایش می دهد
                اگر داخل فایل خالی باشد تعداد بایت نوشته شده صفر است پس نوشتن درست انجام نشده
                ولی اگر تعدادی کاراکتر نوشته شده باشد "OK OK OK" نمایش داده میشود باز همچیزی نوشه نمیشود

                و اما در مورد گفتار شما :

                نوشته اصلی توسط سوران آراسته
                اتفاقا من قبل از کار سایتش رو زیر و رو کردم و به این مطلب هم دقت کردم و خب تست هایی هم روش انجام دادم.
                ابتدا یه فایل تکست رو در سیستم بر روی کارت ایجاد کردم داخلش 100 کاراکتر F قرار دادم.
                در این حالت هم گاها اطلاعات نوشته می شد و به فرض من داخل کارت 20 کاراکتر ذخیره می کردم خودش بقیه رو NULL می نوشت.
                ملاحظه بفرمایید :

                کد:
                  /* Finalize the write process */
                  lcd_clear();
                  lcd_putsf("Finalize Write");
                  do
                	{
                		res = pf_write(0, 0, &w);		
                		display_result(res);
                	}while(res != 0);
                اگر داخل فایل خالی باشد OK برگشت داده می شود واز حلقه خارج میشود ولی اگر داخل فایل خالی نباشد"DISK_ERR" و در مراجعه بعدی به تابع NOT_OPENED"

                فایل codevision و Proteuse

                http://s5.picofile.com/file/81154279...f_2_h.zip.html

                بنا براین یا فایلهایی که همه ما (mmc , ....) استفاده میکنیم اشکال دارد ویا کلا pff بدرد نوشتن نمی خورد

                با توجه با تفاسیر بالا من از این pff نا امید شدم وتا بدست آوردن یک مثال کامل دیگر وقت روی این نمی گذارم

                والسلام

                دیدگاه


                  #98
                  پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                  آقای اردبیلی عزیز
                  بسیار عالی
                  من هم الان دیگه نمیتونم فردا گفته سورا رو تست میکنم ببینم چی میشه
                  ولی باز هم اگر مشکل داشت و نشد بیا با هم بریم سراغ ff.h و اون رو یه کاریش بکنیم که درست شه
                  من مشکل جا ندارم و میکروی نهاییم ATMega128 هست ولی فعلا با 32 کار میکنم
                  به امید خدا
                  درایور شبکه و nRF24L01
                  کاتالوگ محصولات
                  کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                  شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                  فروش اسیلوسکوپ GWinstek GOS-630FC

                  دیدگاه


                    #99
                    پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                    نوشته اصلی توسط بسطام بیرامی
                    آقای اردبیلی عزیز
                    بسیار عالی
                    من هم الان دیگه نمیتونم فردا گفته سورا رو تست میکنم ببینم چی میشه
                    ولی باز هم اگر مشکل داشت و نشد بیا با هم بریم سراغ ff.h و اون رو یه کاریش بکنیم که درست شه
                    من مشکل جا ندارم و میکروی نهاییم ATMega128 هست ولی فعلا با 32 کار میکنم
                    به امید خدا
                    با سلام

                    من با ff هرکاری بخوام میکنم فقط مشکل من بخاطر اشغال حجم زیاد فلش بود که میخواستم با pff کار کنم من در مورد ff یک مقاله هم نوشتم که در وبلاگ شخصی من هست

                    http://azarmicro.blogsky.com/1392/05...7-%D9%87%D8%A7

                    اگه مشکلی هم داشته باشید در خدمت هستم

                    دیدگاه


                      پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                      نوشته اصلی توسط Shapour-Ardebil
                      با سلام

                      من با ff هرکاری بخوام میکنم فقط مشکل من بخاطر اشغال حجم زیاد فلش بود که میخواستم با pff کار کنم من در مورد ff یک مقاله هم نوشتم که در وبلاگ شخصی من هست

                      http://azarmicro.blogsky.com/1392/05...7-%D9%87%D8%A7

                      اگه مشکلی هم داشته باشید در خدمت هستم
                      آقا عالیه
                      پس من دیگه بیشتر مزاحمتون میشم
                      خب آقای اردبیلی عزیز شما چرا نمیاید و امکانات اضافی ff.h رو پاک کنید و فقط چیزایی که نیاز داریدو نگه دارید
                      بنظرم میشه حجم کد رو به اندازه کار شما کاهش داد ( مثلا کار با پوشه ها و ... نیاز نمیشه )
                      در هر صورت ممنونم از شما و این که اجازه میخوام مطالبتونو توی PDF آموزشیم قرار بدم ( با ذکر نام خودتون )
                      ممنون
                      درایور شبکه و nRF24L01
                      کاتالوگ محصولات
                      کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                      شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                      فروش اسیلوسکوپ GWinstek GOS-630FC

                      دیدگاه


                        پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                        ببینید شما به متغیر buffer یک رشته می دهید تا بنویسد سپس از همان متغیر در خواندن استفاده میکنید متغیر مذکور همان داده ای را که برای نوشتن به آن دادید بدون انکه چیزی نوشته باشد تا بخواند پس مقدار متغیر تغییر نکرده همان را برای شما برمیگرداند وشما فکر میکنید که نوشته و خوانده در حالی که اگر متغیر خواندن ونوشتن باهم فرق بکند مثلا متغیر جدیدی ایجاد کنید به نام buff_1 و موقع خواندن از آن استفاده کنید خواهید دید که داخل متغیر خالی است و چیزی نوشته نشده که خوانده شود
                        آقا به خدا من تست کردم و اینبار حتی بعد از نوشتن microsd را از روی برد بیرون آوردم و با ram reader فایل مربوطه را باز کردم دقیقا همون چیزها توش نوشته شده بود .

                        دلیلی هم ندارم که دروغ بگم!!!
                        شماها دارید یک جایی رو اشتباه می کنید والا این کتابخونه با وجود تمام ضعفهاش ، مشکل اینچنینی نداره و من باهاش مشکلی ندارم .
                        به نظر من پروتوس رو بیخیال بشید چون من خیلی بهش مطمن نیستم ولی در عمل با دقت سخت افزارتون رو تست کنید .
                        من هم اگه کمکی از دستم بر بیاد در خدمتم ولی اگه خودتون تصمیم گرفتید که واقعا کتابخونه رو عوض کنید مطمن باشید لااقل این اشکال مربوط به این کتابخونه نیست !!

                        دیدگاه


                          پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

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

                          حالا نکته های مهم تابع رایت
                          1 - نمیشه فایل ایجاد کرد و فقط باید فایل موجود رو ادیت کنید
                          2 - نمیتوان زمان و تایخ فایل رو ادیت شده را تغییر داد
                          3 - حجم فایل محدود است و امکان تغییر ان وجود ندارد
                          4 - شروع و پایان نوشتن باید در یک سکتور باشد
                          5 - قبل از نوشتن Read-only بودن فایل چک نمیشه
                          6 - نوشتن فایل حتما باید پشت سر هم و به این ترتیب انجام بشه


                          کد:
                          1 - pf_lseek(ofs);                    برای رفتن به ادرسی که باید از اونجا نوشتن شروع بشه
                          2 - pf_write(buff, btw, &bw);              برای اینیشیال شروع نوشتن در عمل هیچ کاری نمیکنه فقط پوینترهارو اینیشیال میکنه
                          3 - pf_write(buff, btw, &bw);              نوشتن دیتا "در حال اجرای این تابع امکان دسترسی به فایل دیگری ممکن نیست "
                          4 - pf_write(0, 0, &bw);                 مهم مهم مهم پابان عملیات نوشتن
                          برای ادامه نوشتن میتونید مورد 3 رو قبل از 4 هر چند بار که دوست داشتید استفاده کنید.
                          یعنی موارد 1 و 2 و 4 فقط یک بار استفاده میشه ولی مورد 3 مونه تا پایان نوشت دیتا پشت سر هم استفاده بشه

                          در صورتی که شرط bw < btw* برقرار شد یعنی به انتهای فایل رسیدید و دیگه امکان نوشتن رو نخواهید داشت
                          در ضمن باید مقدار دیفاین USE_WRITE_ حتما 1 باشد
                          خوش باشید و پیشاپیش عیدتون مبارک

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

                          دیدگاه


                            پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                            مورد دوم و سوم دقیقا مثل همند پس بار اول که از تابع استفاده میکنید هیچ کاری نخواهد کرد و فقط برای اینیشیال هست که حتما باید به این نکته توجه کنید
                            و فایل حتما باید قبلا دیتا داشته باشه چون امکان تغییر سایز فایل رو ندارید برای این کار میتونید فایل رو با هگز ادیتور باز کرده و تا هر اندازه که دوست دارید مقدار صفر بدید

                            اگر بازم موردی بود بفرمایید درخدمتم

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

                            دیدگاه


                              پاسخ : پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                              نوشته اصلی توسط POLESTAR
                              مورد دوم و سوم دقیقا مثل همند پس بار اول که از تابع استفاده میکنید هیچ کاری نخواهد کرد و فقط برای اینیشیال هست که حتما باید به این نکته توجه کنید
                              و فایل حتما باید قبلا دیتا داشته باشه چون امکان تغییر سایز فایل رو ندارید برای این کار میتونید فایل رو با هگز ادیتور باز کرده و تا هر اندازه که دوست دارید مقدار صفر بدید

                              اگر بازم موردی بود بفرمایید درخدمتم

                              به همین سادگی :nice:
                              سلام آقای اسدی عزیز
                              آقا من همین کارایی که گفتیدو کردم
                              ببینید :
                              کد:
                              /*****************************************************
                              This program was produced by the
                              CodeWizardAVR V2.05.3 Standard
                              Automatic Program Generator
                              © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
                              http://www.hpinfotech.com
                              
                              Project : Write Micro SD
                              Version : 1.0
                              Date  : 3/1/2014
                              Author : Bastam Beyrami
                              Company : ITACo
                              Comments: 
                              Special Thanks to Abbas Sarami
                              
                              
                              Chip type        : ATmega32L
                              Program type      : Application
                              AVR Core Clock frequency: 8.000000 MHz
                              Memory model      : Small
                              External RAM size    : 0
                              Data Stack size     : 512
                              *****************************************************/
                              
                              #include <mega32.h>
                              
                              // Alphanumeric LCD functions
                              #include <alcd.h>
                              #include <delay.h>
                              #include "SD_Driver/mmc.c"   
                              #include "SD_Driver/pff.c"
                              #define xtal 8000000
                              
                              // Declare your global variables here
                              
                              #define BUFFER_SIZE 16
                              
                              FATFS Fs;
                              WORD w_br;
                              
                              unsigned char MyBuffer[15] = {'S','A','L','A','M','\r','\n','F','A','T','g','T','E','S','\0'};
                              FRESULT _result;
                              WORD WriteIndex;
                              
                              // Declare your global variables here
                              
                              void main(void)
                              {
                              // Declare your local variables here
                              char buffer[BUFFER_SIZE];
                              
                              
                              // Alphanumeric LCD initialization
                              // Connections are specified in the
                              // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
                              // RS - PORTA Bit 0
                              // RD - PORTA Bit 1
                              // EN - PORTA Bit 2
                              // D4 - PORTA Bit 4
                              // D5 - PORTA Bit 5
                              // D6 - PORTA Bit 6
                              // D7 - PORTA Bit 7
                              // Characters/line: 16
                              lcd_init(16);
                              
                              
                              lcd_gotoxy(1,0);
                              lcd_putsf("Write Micro SD");
                              lcd_gotoxy(1,1);
                              lcd_putsf("PFF Library");
                              delay_ms(1000);
                              lcd_clear();
                              ////////////Write to SD/////////
                              
                              lcd_clear();
                              lcd_putsf("Init Drive");
                              while(disk_initialize()!=FR_OK) delay_ms(100);
                              lcd_putsf("-->OK");
                              delay_ms(1000);
                              
                              lcd_clear();
                              lcd_putsf("OPEN Drive");
                              while(pf_mount(&Fs)!=FR_OK) delay_ms(100);
                              lcd_putsf("-->OK");
                              delay_ms(1000);
                              
                              
                              lcd_clear();
                              lcd_putsf("Open File");
                              while(pf_open("Bastam.txt")!=FR_OK) delay_ms(100);
                              lcd_putsf("-->OK");
                              delay_ms(1000);
                              
                              
                              lcd_clear();
                              lcd_putsf("LSeek File");
                              while(pf_lseek(0)!=FR_OK) delay_ms(100);
                              lcd_putsf("-->OK");
                              delay_ms(1000);
                              
                              
                              lcd_clear();
                              lcd_putsf("Write1 File");
                              while (pf_write(&MyBuffer,15, &WriteIndex) != FR_OK);
                              delay_ms(100);
                              lcd_putsf("-->OK");
                              delay_ms(1000);
                              
                              lcd_clear();
                              lcd_putsf("Write2 File");
                              while (pf_write(&MyBuffer,15, &WriteIndex) != FR_OK);
                              delay_ms(100);
                              lcd_putsf("-->OK");
                              delay_ms(1000);
                              
                              lcd_clear();
                              lcd_putsf("Write3 File");
                              while (pf_write(&MyBuffer,15, &WriteIndex) != FR_OK);
                              delay_ms(100);
                              lcd_putsf("-->OK");
                              delay_ms(1000);
                              
                              
                              lcd_clear();
                              lcd_putsf("Finilize");
                              pf_write(0,0, &WriteIndex);
                              delay_ms(100);
                              pf_write(0,0, &WriteIndex);
                              delay_ms(100);
                              pf_write(0,0, &WriteIndex);
                              delay_ms(100);
                              pf_write(0,0, &WriteIndex);
                              delay_ms(100);
                              lcd_putsf("-->OK");
                              delay_ms(1000);
                              
                              lcd_clear();
                              lcd_putsf("CLOSE Drive");
                              while(pf_mount(0)!=FR_OK) delay_ms(100);
                              lcd_putsf("-->OK");
                              delay_ms(1000);
                              
                              
                              ////////////////////////////////
                              
                              
                              while (1)
                                 {
                                 // Place your code here
                              
                                 }
                              }
                              چنتا سوال :
                              1 - من فایل رو با هگزادیتور باز نمیکنم ، با نوت پد باز میکنم و همش توش مثلا FFFF مینویسم ، آیا این هم میشه یا باید حتما با هگزادیتور 0 بنویسم؟!!
                              2 - تابع مهم مهم مهم شما
                              کد:
                              pf_write(0,0, &WriteIndex);
                              که اجرا میکنم FR_OK برنمیگردونه و اگه توی while باشه گیر میکنه برای همین چند بار نوشتمش
                              میشه برنامه منو یه نگاه بکنید ببینید اشکال چییه؟!
                              من نه توی پروتئوس و نه روی برد واقعی نتونستم چیزی بنویسم :sad:

                              کل پروژه رو فایل ها و پروتئوس و ... رو هم میدارم شما بتونید بهتر بررسی کنید
                              واقعا ممنونم از راهنمایی هاتون
                              http://eca.ir/sharing/uploads/13938313111.rar
                              درایور شبکه و nRF24L01
                              کاتالوگ محصولات
                              کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                              شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                              فروش اسیلوسکوپ GWinstek GOS-630FC

                              دیدگاه


                                پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                                نوشته اصلی توسط بسطام بیرامی
                                سلام آقای اسدی عزیز
                                آقا من همین کارایی که گفتیدو کردم
                                ببینید :

                                چنتا سوال :
                                1 - من فایل رو با هگزادیتور باز نمیکنم ، با نوت پد باز میکنم و همش توش مثلا FFFF مینویسم ، آیا این هم میشه یا باید حتما با هگزادیتور 0 بنویسم؟!!
                                2 - تابع مهم مهم مهم شما
                                کد:
                                pf_write(0,0, &WriteIndex);
                                که اجرا میکنم FR_OK برنمیگردونه و اگه توی while باشه گیر میکنه برای همین چند بار نوشتمش
                                میشه برنامه منو یه نگاه بکنید ببینید اشکال چییه؟!
                                من نه توی پروتئوس و نه روی برد واقعی نتونستم چیزی بنویسم :sad:

                                کل پروژه رو فایل ها و پروتئوس و ... رو هم میدارم شما بتونید بهتر بررسی کنید
                                واقعا ممنونم از راهنمایی هاتون
                                http://eca.ir/sharing/uploads/13938313111.rar
                                با سلام مجدد

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

                                کد:
                                
                                
                                #include <stdio.h>
                                #include "pff.h"
                                
                                void die (FRESULT rc)
                                {
                                	BYTE buff[16];
                                	lcd_clear();
                                	lcd_gotoxy(1,0);
                                	sprintf(buff, "Failed rc = %u", rc);
                                	lcd_puts(buff);
                                	for (;;);
                                }
                                
                                int main (void)
                                {
                                	FATFS fatfs;
                                	WORD bw;
                                
                                	lcd_gotoxy(1,0);
                                	lcd_putsf("Mount a volume");
                                	rc = pf_mount(&fatfs);
                                	if (rc) die(rc);
                                	delay_ms(1000);
                                
                                
                                #if _USE_WRITE
                                	lcd_clear();
                                	lcd_gotoxy(1,0);
                                	lcd_putsf("Open a file to write");
                                	lcd_gotoxy(1,1);
                                	lcd_putsf("write.txt");
                                	rc = pf_open("WRITE.TXT");
                                	if (rc) die(rc);
                                	delay_ms(1000);
                                
                                	lcd_clear();
                                	lcd_gotoxy(1,0);
                                	lcd_putsf("Write a text data");
                                	lcd_gotoxy(1,1);
                                	lcd_putsf("Hello world!");
                                	for (;;) {
                                		rc = pf_write("Hello world!\r\n", 14, &bw);
                                		if (rc || !bw) break;
                                	}
                                	if (rc) die(rc);
                                	delay_ms(1000);
                                
                                	lcd_clear();
                                	lcd_gotoxy(1,0);
                                	lcd_putsf("Terminate the file");
                                	lcd_gotoxy(1,1);
                                	lcd_putsf("write process");
                                	rc = pf_write(0, 0, &bw);
                                	if (rc) die(rc);
                                #endif
                                	for (;;) ;
                                }

                                در مورد دیتای فایل هم یه فایل تکست ایجاد کن و تا میتونی توش اسپیس بزن همین یا یه 100 تا کاراکتر فاصله (اسپیس) رو کپی کن و بعد یه یک دقیقه انگشتتو بزار روی کلید های کنترل و V

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

                                دیدگاه

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