اطلاعیه

Collapse
No announcement yet.

ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

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

    پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

    یه نگاه به این فایل بنداز: http://malavanfc.persiangig.com/Eca/mmc.rar
    خیلی جالبه(البته اگه تا حالا ندیده باشی)

    دیدگاه


      پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

      نوشته اصلی توسط hamid67
      یه نگاه به این فایل بنداز: http://malavanfc.persiangig.com/Eca/mmc.rar
      خیلی جالبه(البته اگه تا حالا ندیده باشی)
      این یکی از ساده ترین آموزش های راه اندازی MMC هستش .قدیما خود من هم با این فایل تمام ابهاماتم رو در مورد کار با مموری ها برطرف کردم. اینجا واقعا جا داره که از آقای تروشه تشکر کنیم که چنین مقاله ای رو نوشتند. :applause:
      آموزش این مقاله با زبان اسمبلی هستش و در آخر یه برنامه ی کلی با C داره که برای میکرو های ARM هستش.شما این فایل رو بخونید توضیحاتش کافی هست. اما اگر هرکجاش رو که اشکال داشتید بگید تا من براتون بیشتر توضیح بدم. :agree:
      [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

      دیدگاه


        پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

        همینه دیگه :NO:من اصلا سورسمو از روی این برداشتم که الآن اینجا میام و مشکل دارم
        کسی کارت SD رو با این روش راه انداخته؟
        من MMC راه ننداختم ولی فکر کنم SD یه ذره بد قلقه
        وقتی وصلش میکنم هیچ دیتایی نمیگیرم :cry2:

        دیدگاه


          پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

          حافظه های mmc و SDC/SDHC/SDXC نیاز به روال متفاوتی برای initialization دارند و خود حافظه های SD به نسخه های Ver1.x و Ver2.00 یا بالاتر تقسیم می شوند. بنابراین یک روتین اصولی برای با کار با این نوع حافظه ها باید بتواند در ابتدا نوع حافظه را تشخیص بدهد و بر اساس آن نوشتن و خواندن sector را انجام بدهد. اگر توابع نوشتن و خواندن sector به درستی عمل کنند، نوع فرمت حافظه که FAT16 یا FAT32 باشد در لایه دیگری از برنامه انجام می شود.
          اگر قصدی برای نوشتن برنامه ای در این مورد به زبان C وجود دارد، یک نقطه شروع بسیار معتبر و نسبتا کامل، سورس هایی است که آقای Chan در سایت خود قرار داده اند و از کلیه موارد فوق پشتیبانی می کند.
          http://www.elm-chan.org
          در AVRLIB هم کتابخانه ای در این مورد وجود دارد، اما فقط از mmc پشتیبانی می کند و برای SDC/SDHC/SDXC تمهیدات لازم در نظر گرفته نشده است.
          برای خواندن و نوشتن یک sector از حافظه های مذکور شخصا در هر دو مورد فوق زمان زیادی را صرف کرده ام و عملکرد نرم افزار های آقای Chan(البته با تغییراتی) کاملا مطلوب است. البته این کدها برای کار با XMEGA و در یک شرایط خاص تغییر داده شده اند و برای AVR باید بصورت متفاوتی بکار روند، اما با توجه به کمبود وقتی که دارم اگر دوستانی خود را در این حد ببینند که بخواهند از پایه روی روتین های کار با این حافظه ها کار کنند می توانم در حد راهنمایی تجربیات خود را در اختیار آنها قرار دهم.
          مورد آخر اینکه اخیرا سورس اسمبلی کتابخانه MMCSD_HC نرم افزار BASCOM را هم از اساس تغییر دادم تا بتوان با XMEGA و SPI سخت افزاری با حافظه های بزرگتر از 2GByte ارتباط برقرار کرد. اما در جایی که هنوز چشمک زدن یک LED هم محقق نشده است، لزومی برای مطرح کردن این موارد احساس نمی شود.
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


            پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

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

            دیدگاه


              پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

              اگر قصدی برای نوشتن برنامه ای در این مورد به زبان C وجود دارد، یک نقطه شروع بسیار معتبر و نسبتا کامل، سورس هایی است که آقای Chan در سایت خود قرار داده اند و از کلیه موارد فوق پشتیبانی می کند.
              برای شروع یه مقدار سنگین نیست؟ من از توی یه کتابخونه ی دیگه تابع های open - seek - get_dir رو خوندم خیلی راحت متوجه کارشون شدم .اما متاسفانه اون کتابخونه فقط همون توابع رو داشت و هنوز با قسمت های اصلی فت مشکل دارم.مثل فولدر ها و move کردن و......شاید کتابخونه ی chan به خاطر جامع بودنش اینقدر تو در تو شده باشه. شما کتابخونه ای سبک تر از chan سراغ ندارید که فهمش راحت تر باشه؟
              در AVRLIB هم کتابخانه ای در این مورد وجود دارد، اما فقط از mmc پشتیبانی می کند و برای SDC/SDHC/SDXC تمهیدات لازم در نظر گرفته نشده است.
              کتابخونه AVRLIB که برای هارد دیسک ها نوشته شده.اول برنامه ata.h به برنامه اضافه شده .البته اگر توابع خوندن و نوشتن SD رو داشته باشی تغییر دادنش کار چندان سختی نیست. شما کدوم نسخه ی AVRLIB رو دارید؟ مال من حدودا مال دو سال پیشه.

              حافظه های mmc و SDC/SDHC/SDXC نیاز به روال متفاوتی برای initialization دارند و خود حافظه های SD به نسخه های Ver1.x و Ver2.00 یا بالاتر تقسیم می شوند. بنابراین یک روتین اصولی برای با کار با این نوع حافظه ها باید بتواند در ابتدا نوع حافظه را تشخیص بدهد و بر اساس آن نوشتن و خواندن sector را انجام بدهد.
              منظور شما همون چارتی که براساس جواب برگشتی کارت از دستور 1 و 59 نوع کارت رو مشخص میکرد؟ یا راه دیگه ای داره؟
              [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

              دیدگاه


                پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

                نوشته اصلی توسط شهریار رجب زاده
                سایتی که گفتید کار نمیکنه
                www نمیخواد. لینکه قسمت فت اینه
                http://elm-chan.org/fsw/ff/00index_e.html
                [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                دیدگاه


                  پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

                  توی اون سایت نوشته ولتاژ به 2.2 رسید کار رو شروع کنیم ولی مگه ولتاژ3.3 نبود اینو چی کارش کنیم؟

                  دیدگاه


                    پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

                    برای شروع یه مقدار سنگین نیست؟ من از توی یه کتابخونه ی دیگه تابع های open - seek - get_dir رو خوندم خیلی راحت متوجه کارشون شدم .اما متاسفانه اون کتابخونه فقط همون توابع رو داشت و هنوز با قسمت های اصلی فت مشکل دارم.مثل فولدر ها و move کردن و......شاید کتابخونه ی chan به خاطر جامع بودنش اینقدر تو در تو شده باشه. شما کتابخونه ای سبک تر از chan سراغ ندارید که فهمش راحت تر باشه؟
                    همانطور که فرمودید این کتابخانه ها بسیار جامع هستند و به تبع آن درک آنها هم ممکن است مشکل تر از کتابخانه های ساده تر باشد. نکته بعدی این است که اگر بتوانیم برنامه های نوشته شده توسط برنامه نویسان حرفه ای را تحلیل کنیم، تاثیر مهمی در قدرت برنامه نویسی ما خواهد گذاشت. در مورد کتابخانه های ساده تر در فرصتی بررسی می کنم و در صورت وجود به اطلاع شما خواهم رساند.

                    کتابخونه AVRLIB که برای هارد دیسک ها نوشته شده
                    در نسخه ای که اخیرا از AVRLib دانلود شده، کتابخانه mmc وجود دارد.

                    منظور شما همون چارتی که براساس جواب برگشتی کارت از دستور 1 و 59 نوع کارت رو مشخص میکرد؟ یا راه دیگه ای داره؟
                    منظور نوع دستوراتی است که در ابتدا به حافظه داده می شود و بر حسب نوع پاسخ، نسخه حافظه مشخص می شود. CMD0 و CMD8 از جمله این دستورات هستند.
                    اوژن: به معنای افکننده و شکست دهنده است
                    دانایی، توانایی است-Knowledge is POWER
                    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                    دیدگاه


                      پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

                      سلام من همین الآن رفتم و سورسم رو تغییر دادم به طرز عجیبی جواب داد :wow:
                      حالا یه سوال این واقعا راه افتاده؟؟؟ oo: یا حاصل نویز دور و بر هستش؟
                      سورس من اینه
                      کد:
                      #include <mega32.h>
                      
                      // Alphanumeric LCD Module functions
                      #asm
                        .equ __lcd_port=0x15 ;PORTC
                      #endasm
                      #include <lcd.h>
                      
                      // SPI functions
                      #include <spi.h>
                      #include <stdlib.h>
                      #include <delay.h>
                      #define cs PORTB.4
                      // Declare your global variables here
                      unsigned char a;
                      unsigned char b;
                      unsigned char x;
                      unsigned char z[4];
                      void main(void)
                      {
                      // Port B initialization
                      // Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In 
                      // State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T 
                      PORTB=0x00;
                      DDRB=0xB0;
                      
                      ACSR=0x80;
                      SFIOR=0x00;
                      // SPI initialization
                      // SPI Type: Master
                      // SPI Clock Rate: 250.000 kHz
                      // SPI Clock Phase: Cycle Half
                      // SPI Clock Polarity: Low
                      // SPI Data Order: MSB First
                      SPCR=0x50;
                      SPSR=0x00;
                      // LCD module initialization
                      lcd_init(16);
                      delay_ms(1);
                      while (a<11)
                      {cs=1;
                      spi(0xFF);
                      a++;
                      }
                      cs=0;
                      b=spi(0x40);
                      itoa(b,z);
                      lcd_puts(z);
                      b=spi(0);
                      itoa(b,z);
                      lcd_puts(z);
                      b=spi(0);
                      itoa(b,z);
                      lcd_puts(z);
                      b=spi(0);
                      itoa(b,z);
                      lcd_puts(z);
                      b=spi(0);
                      itoa(b,z);
                      lcd_puts(z);
                      x=spi(0x95);
                      itoa(x,z);
                      lcd_puts(z);
                      if (x!=0x01)
                      {
                      x=spi(0xFF);
                      itoa(x,z);
                      lcd_puts(z);
                      }
                      cs=1;
                      lcd_putsf("Reset OK");
                      delay_ms(2000);
                      lcd_clear();
                      cs=0;
                      b=spi(0x41);
                      itoa(b,z);
                      lcd_puts(z);
                      b=spi(0);
                      itoa(b,z);
                      lcd_puts(z);
                      b=spi(0);  
                      itoa(b,z);
                      lcd_puts(z);
                      b=spi(0);
                      itoa(b,z);
                      lcd_puts(z);
                      x=spi(0);
                      itoa(x,z);
                      lcd_puts(z);
                      if (x!=0){
                      x=spi(0xFF);
                      itoa(x,z);
                      lcd_puts(z);
                      }
                      cs=1;
                      lcd_putsf("Init OK");
                      while (1)
                         {
                         // Place your code here
                      
                         };
                      }
                      شما نظر بدید این سورس میاد و reset و init رو انجام میده کد های بازگشتی از کارت رو روی LCD نشون میده و میگه کار انجام شده یا نه تغییراتی که انجام دادم اینا بود
                      1- سرعت spi رو روی 250KHz گذاشتم قبلش روی 4MHz بود
                      2- یه تاخیر قبل از کار با کارت اضافه کردم
                      حالا یه سوال کی میشه سرعت کارت رو بالا برد؟
                      من رفتم ببینم میتونم روش بنویسم و بخونم نتیجه رو میگم

                      دیدگاه


                        پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

                        آقا رجب زاده میتونید به جای این تابع که خوتون نوشتید از کتابخونه ی زیر استفاده کنید(قبلا هم گزاشته بودم!).

                        شخصا با SD تست کردم جواب داده...(به صورت معمولی)

                        موفق باشید
                        فایل های پیوست شده

                        دیدگاه


                          پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

                          منظور نوع دستوراتی است که در ابتدا به حافظه داده می شود و بر حسب نوع پاسخ، نسخه حافظه مشخص می شود. CMD0 و CMD8 از جمله این دستورات هستند.
                          CMD8 چی کار میکنه؟؟؟ توی جدول دستوراتی که من دارم نوشته رزرو شده ولی مثل اینکه استفاده هم داره :nerd:
                          [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                          دیدگاه


                            پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

                            برادر ها چرا اینقدر لقمه رو میپیچونید کد ویژن ورژن 2.4.4 ماژول elm_chan رو پورت کرده هم fat 16 هم fat32 هم mmc هم sdhc رو مثل پنیر ساپورت میکنه هلپ خودش کامله کامل هست الان یک ساله کار میکنم باش خودشم چنتا مثال زده آموزش های سایت خود elm_chan هم بسیار عالیه کتابخون خوندن و نوشن سکتور به سکتورشم یادم رفت بگم هست بدون ایراد بدون باگ سریع و باکیفیت

                            دیدگاه


                              پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

                              نوشته اصلی توسط samisin
                              برادر ها چرا اینقدر لقمه رو میپیچونید کد ویژن ورژن 2.4.4 ماژول elm_chan رو پورت کرده هم fat 16 هم fat32 هم mmc هم sdhc رو مثل پنیر ساپورت میکنه هلپ خودش کامله کامل هست الان یک ساله کار میکنم باش خودشم چنتا مثال زده آموزش های سایت خود elm_chan هم بسیار عالیه کتابخون خوندن و نوشن سکتور به سکتورشم یادم رفت بگم هست بدون ایراد بدون باگ سریع و باکیفیت
                              من با کد ویژن کار نمیکنم که.
                              winavr خودش کتابخونه برای این کار داره ولی کتابخونش زیاد قوی نیست.پس برآن شدیم که کتابخونه ای براش بنویسیم.چقدر ادبی شد قرار نیست که همه کار رو از اول بکنیم. از روی یه کتابخونه ی قوی میخونیم و اون قسمت هایی که لازم داریم رو کپی paste میکنیم و بسته به برنامه ی خودمون تغییرش میدیم. میخوایم راه رفته رو کامل تر کنیم نه اینکه اون راه رو دوباره بریم. :agree:
                              [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                              دیدگاه


                                پاسخ : ساختار FAT32 و سایر فایل ها و اجرای آن با AVR

                                نوشته اصلی توسط shahinbahari
                                من با کد ویژن کار نمیکنم که.
                                winavr خودش کتابخونه برای این کار داره ولی کتابخونش زیاد قوی نیست.پس برآن شدیم که کتابخونه ای براش بنویسیم.چقدر ادبی شد قرار نیست که همه کار رو از اول بکنیم. از روی یه کتابخونه ی قوی میخونیم و اون قسمت هایی که لازم داریم رو کپی paste میکنیم و بسته به برنامه ی خودمون تغییرش میدیم. میخوایم راه رفته رو کامل تر کنیم نه اینکه اون راه رو دوباره بریم. :agree:
                                خوب من اون رو هم دیدم وباهاش کارکردم اونیک ه تو avrlib هست اون نسخه ناقص elm_chan هست متاسفانه avrlib بروز نمیشه نمی دونم چرا ولی نسخه کاملش هم به winavr پورت شده در ضمن elm_chan سالهاست بار ها وبارها توسط توسعه دهنده های زیادی بهینه شده و از 8051 بگیر تا آرم داره کار میکنه یه گوگلی بکنی پیداش میکنی ولی اگه قراره دوباره کاری کنید من مزاحم نمیشم :mrgreen:

                                دیدگاه

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