اطلاعیه

Collapse
No announcement yet.

کتابخانه ff.h

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

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

    سلام دوستان....خواهش می کنم اگر کسی جواب سوالای زیر رو میدونه منو راهنمایی کنه :
    - تو فایل هایی که آقای اسدی در رابطه با pff.h برای دانلود گذاشتن فایلی بنام mmc.h وجود داره که از توش میشه پایه های spi رو مشخص کرد...حالا اینجا دو سوال برای من پیش اومده :

    1- این mmc.c در فایل هایی که سایت elm-chan برای دانلود گذاشته نیست....پس از کجا اومده و چطور میشه تنظیمات رو توش انجام داد.

    2- آیا استفاده از spi در این هدر بصورت نرم افزاریه یا نه....اگه نه آیا باید spi رو تو codewizard تنظیم کرد...؟

    اگه راهنماییم کنیید خیلی بهم لطف کردید... :cry:
    با تشکر.

    دیدگاه


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

      دوستان من این کد رو واسه کار با pff.h نوشتم که توش میخوام یه کارکتر از یه فایل .txt بخونم ولی جواب نمیده ...کسی میتونه راهنمایی کنه :
      کد:
      #include <mega8.h>
      
      
      #include <alcd.h>
      #include "mmc.c"
      #include "pff.c"
      
      
      FATFS drive;
      char path1[]="0:/behnam.txt";
      char buffer[2];
      WORD z;
      
      void main(void)
       {
       lcd_init(16);
       lcd_gotoxy(0,0);
       lcd_puts("reading...");
       disk_initialize();
       pf_mount(&drive);
       pf_open(path1);
       pf_read(buffer,2,&z);
       lcd_gotoxy(0,1);
       lcd_puts(buffer);
       while(1);
       }
      در ضمن تنظیمات فایل mmc.h رو هم اینجوری کردم :
      کد:
      //SPI configuration (Platform dependent)
      #define SPI_PORT	PORTB
      #define SPI_DDR		DDRB
      #define SD_MOSI		3
      #define SD_SCK		5
      #define SD_SS		2
      #define SD_LED   0
      
      #define SD_CS_PORT   PORTB
      #define SD_CS_DDR    DDRB
      #define SD_CS_PIN    1
      خواهش میکنم اگر میتونید منو راهنمایی کنید.
      با تشکر. :redface:

      دیدگاه


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

        توی کتابخونه خود کدویژن سوکت اس دی پایه هاش 12 تا هستش ولی سوکت من 10تا پایه داره الان نمی دونم پایه cd و wp را به کجا وصل کنم ؟؟؟


        یادش بخیر یه وقتایی هر روز میومدم اینجا !

        دیدگاه


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

          سلام همگی ذوستان
          آقا من از توابع کد ویزن استفاده کردم واسه خوندن فایل :agree:
          تو یه برنامه یه فایل رو 96 بایت 96 بایت میخونم. این کار انجام میشه ولی کل فایل رو نمیخونه. این اتفاق مواقعی میفته که حجم فایل از یه حدی بیشتر بشه
          برای خوندن هر 96 بایت از تابع f_lseek استفاده میکنم :cry:
          آیا این مشکل بخاطر محدودیت های توابع کدویژن هستش یا کلا اینجوریه
          لطفا یه راه حل مناسب ارائه کنید تشکر :smile:
          هر سری یه فکری داره! :read:
          ///////////////////////////////////////////////////////////

          دیدگاه


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

            سلام
            من این پروژه رو بستم، اما کار نمیکنه. تغییراتی که دادم هم واسه 3.3 از رگولاتور استفاده کردم، واسه تقسیم ولتاژ هم از cd4050 که help کدویژن معرفی کرده. اما کار نمیکنه. کسی پیشنهادی داره؟ اون 2 تا پین write pritectو card detect رو باید چیکار کنیم؟ سوکت ام ام سی من اصلا پینی واسه write protect نداره، اما card detect شو پیدا کردم! به جایی لازمه وصل باشه؟

            دیدگاه


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

              نوشته اصلی توسط havva
              سلام
              من این پروژه رو بستم، اما کار نمیکنه. تغییراتی که دادم هم واسه 3.3 از رگولاتور استفاده کردم، واسه تقسیم ولتاژ هم از cd4050 که help کدویژن معرفی کرده. اما کار نمیکنه. کسی پیشنهادی داره؟ اون 2 تا پین write pritectو card detect رو باید چیکار کنیم؟ سوکت ام ام سی من اصلا پینی واسه write protect نداره، اما card detect شو پیدا کردم! به جایی لازمه وصل باشه؟
              اون دو تا پین رو به زمین باید وصل کنی
              اگه سوکت اون دو تا پین رو داشت که بهتره به سوکت وصل کنی
              اما اگه نداره یا نیازی نمیبینی به زمین وصلشون کن
              :nice:
              برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

              دیدگاه


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

                نوشته اصلی توسط Behnam M.Omran
                سلام دوستان....خواهش می کنم اگر کسی جواب سوالای زیر رو میدونه منو راهنمایی کنه :
                - تو فایل هایی که آقای اسدی در رابطه با pff.h برای دانلود گذاشتن فایلی بنام mmc.h وجود داره که از توش میشه پایه های spi رو مشخص کرد...حالا اینجا دو سوال برای من پیش اومده :

                1- این mmc.c در فایل هایی که سایت elm-chan برای دانلود گذاشته نیست....پس از کجا اومده و چطور میشه تنظیمات رو توش انجام داد.

                2- آیا استفاده از spi در این هدر بصورت نرم افزاریه یا نه....اگه نه آیا باید spi رو تو codewizard تنظیم کرد...؟

                اگه راهنماییم کنیید خیلی بهم لطف کردید... :cry:
                با تشکر.
                1- در سایت elm Chan به آدرس (http://elm-chan.org/fsw/ff/00index_e.html) یه فایل هست به نام (ffsample.zip) یا FatFs sample projects . پس از unzip ، در فولدر avr فایل mmc.c قرار دارد.
                2-نیازی نیست شما پایه های spi رو مشخص کنید چون این کد در داخل خود از ثبات های spdr , spcr, spsr که رجیسترهای spi هستند استفاده می کند و نه نام و شماره ی پایه ها . ولی یک سری امکانات اضافی مانند select کردن sd مورد نظر ما (در حالتی که میکرو به چند مموری متصل است) وجود دارد که تنظیمات مربوط به آن ها را در فایل mmc.c می توان انجام داد ( CS_lowو CS_high و ... )

                دیدگاه


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

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

                  کد:
                  FRESULT f_stat (
                   const TCHAR* FileName, // Pointer to the file or directory name
                   FILINFO* FileInfo    // Pointer to the FILINFO structure
                  );


                  (اشاره گر ساختار فایل ، نام فایل)f_stat
                  هست

                  حالا این تابع چیه و به چه درد میخوره؟
                  برای به دست اوردن وضعیت فایل یا پوشه به کار میره

                  ورودی و خروجی هاش؟
                  دو ورودی داره
                  1 : اشاره گر یا نام فایل DirObject یه اشاره گر به متغیری که باید قبل از این تابع از نوع استراکچر DIR تعریف شده باشه
                  2- اشاره گر اسم فایل FileName یه اشاره گر به متغیری که باید قبل از این تابع از نوع TCHAR تعریف و مقدا دهی شده باشه

                  و یک خروجی خطا داره که 11 حالت داره
                  FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE

                  توضیح خطا ها هم مثل توابع قبلی هست

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

                  به همین سادگی :nice:




                  مهندس میشه بگید کجای استفاده از این تایع غلطه که اجرا نمیشه؟
                  کد:
                  FILINFO finfo;
                  void main(void)
                  {
                  char fil_n;
                  
                  if ((res=f_stat(&fil_n,&finfo))==FR_OK)
                  printf("Size: %lu bytes\r\n",finfo.fsize);
                  else
                  printf("ERROR");
                  
                  while(1);
                  }

                  دیدگاه


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

                    نوشته اصلی توسط mnavid
                    مهندس میشه بگید کجای استفاده از این تایع غلطه که اجرا نمیشه؟
                    کد:
                    FILINFO finfo;
                    void main(void)
                    {
                    char fil_n;
                    
                    if ((res=f_stat(&fil_n,&finfo))==FR_OK)
                    printf("Size: %lu bytes\r\n",finfo.fsize);
                    else
                    printf("ERROR");
                    
                    while(1);
                    }
                    با سلام،

                    شما باید به روتین f_stat اسم فایل و یا دایرکتوری رو با متغیر fil_n پاس کنید. در حالی که به متغیر fil_n قبلا مقدار دهی نشده ....
                    مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                    Sh_Nourbakhsh@Yahoo.com

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

                    دیدگاه


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

                      سلام
                      تو رو خدا میشه بگید کجای این کد غلطه که فایل مورد نظر ایجاد نمیشه ؟ :angry: :angry: :angry:
                      مطمئنم مدار درسته

                      کد:
                      #include <mega64.h>
                      #include <delay.h>
                      #include <stdio.h>
                      #include <ff.h>
                      #include <alcd.h>
                      #include <string.h>
                      
                      // Timer2 output compare interrupt service routine
                      interrupt [TIM2_COMP] void timer2_comp_isr(void)
                      {
                      disk_timerproc();
                      
                      }
                      
                      // SPI functions
                      #include <spi.h>
                      
                      
                      
                      void main(void)
                      {
                      FATFS fs;
                      FIL file;
                      FRESULT res,res1,res2;
                      char path[]="0:/sd.txt";
                      char text[]="I like codevisionAVR";
                      unsigned int nbytes;
                      
                      
                      PORTA=0x00;
                      DDRA=0x00;
                      
                      PORTB=0x00;
                      DDRB=0x07;
                      
                      PORTC=0x00;
                      DDRC=0x00;
                      
                      PORTD=0x00;
                      DDRD=0x00;
                      
                      PORTE=0x00;
                      DDRE=0x00;
                      
                      PORTF=0x00;
                      DDRF=0x00;
                      
                      PORTG=0x00;
                      DDRG=0x00;
                      
                      // Timer/Counter 2 initialization
                      // Clock source: System Clock
                      // Clock value: 7.813 kHz
                      // Mode: CTC top=OCR2
                      // OC2 output: Disconnected
                      TCCR2=0x0D;
                      TCNT2=0x00;
                      OCR2=0x4E;
                      
                      // Timer(s)/Counter(s) Interrupt(s) initialization
                      TIMSK=0x80;
                      
                      // SPI initialization
                      // SPI Type: Master
                      // SPI Clock Rate: 2000.000 kHz
                      // SPI Clock Phase: Cycle Half
                      // SPI Clock Polarity: Low
                      // SPI Data Order: MSB First
                      SPCR=0x54;
                      SPSR=0x00;
                      
                      // Alphanumeric LCD initialization
                      // Connections specified in the
                      // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
                      // RS - PORTC Bit 0
                      // RD - PORTC Bit 1
                      // EN - PORTC Bit 2
                      // D4 - PORTC Bit 4
                      // D5 - PORTC Bit 5
                      // D6 - PORTC Bit 6
                      // D7 - PORTC Bit 7
                      // Characters/line: 16
                      lcd_init(16);
                      
                      // Global enable interrupts
                      #asm("sei")
                      
                      f_mount(0,&fs);
                      res=f_mount(0,&fs);
                      if(res==FR_OK){
                      lcd_gotoxy(0,0);
                      lcd_putsf("SD CARD detected");
                      }
                      else{
                      lcd_gotoxy(0,0);
                      lcd_putsf("ERROR");
                      }
                      ///////////////////////////////////
                      res1=f_open(&file,path,FA_CREATE_ALWAYS | FA_WRITE);
                      res2=f_write(&file,text,sizeof(text)-1,&nbytes);
                      f_close(&file);
                      if((res1 & res2)==FR_OK){
                      lcd_gotoxy(0,1);
                      lcd_putsf("CREAT & WRITE");
                      }
                      else{
                      lcd_gotoxy(0,1);
                      lcd_putsf("ERROR");
                      }
                      ///////////////////////////////////
                      
                      while (1)
                         {
                         
                      
                         }
                      }
                      چی کار کنیم دیگه ، بیسوادیم !

                      دیدگاه


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

                        نوشته اصلی توسط hossein_tomari007
                        کد:
                        char bmp_info_24bit[54]={0x42,0x4d, 0x38,0x84,0x03,0x00, 0x00,0x00,0x00,0x00, 0x36,0x00,0x00,0x00, 0x28,0x00,0x00,0x00,
                         0xf0,0x00,0x00,0x00, 0x40,0x01,0x00,0x00, 0x01,0x00, 0x18,0x00, 0x00,0x00,0x00,0x00, 0x02,0x84,0x03,0x00, 0x12,0x0b,0x00,
                        0x00, 0x12,0x0b,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00};
                        
                        void crate_bmp_24bits(char* fname)
                        {
                        unsigned char byte_h,byte_l;
                        
                        if (f_open(&file,fname,FA_WRITE|FA_CREATE_ALWAYS) == FR_OK)
                        if (f_write(&file,bmp_info_24bit,sizeof(bmp_info_24bit),&nbytes) == FR_OK)
                        Lcd_SetBox(0,0,239,319);
                        
                          for(j=0;j<320;j++)
                          {
                          LCD_PORT_OUTPUT();
                          LCD_WR_REG(0x21,j);
                            for(i=0;i<720;i+=3)
                            {
                            LCD_PORT_OUTPUT();
                            LCD_WR_REG(0x20,(239-i/3));
                            LCD_WR_REG16(0x0022);
                            LCD_PORT_INPUT();
                            lcd_rs_h();
                            lcd_wr_h();
                            lcd_cs_l();
                            lcd_rd_l();
                            lcd_rd_h();
                            lcd_rd_l();
                            lcd_rd_h();
                              lcd_rd_l();
                              #asm("nop")
                              #asm("nop")
                              #asm("nop")
                              byte_h=DATA_LCD_PIN;
                              lcd_rd_h();
                              lcd_rd_l();
                              #asm("nop")
                              #asm("nop")
                              #asm("nop")
                              byte_l=DATA_LCD_PIN;
                              lcd_rd_h();
                              buffer[i]=byte_h&0b11111000; //red
                              buffer[i+1]=((byte_h&0b00000111)<<5)|(byte_l>>3);  //green
                              buffer[i+2]=byte_l<<3;  //blue
                            lcd_cs_h();
                            }
                          f_write(&file,buffer,720,&nbytes); 
                          }
                        LCD_PORT_OUTPUT();
                        f_close(&file);
                        }
                        اگه مشکلی بود مطرح کنید
                        سلام به همه ی بچه ها و خصوصا اقاهادی و اقاحسین.یه سوالی داشتم.تو این کدی که گذاشتی نباید [buffer[i اول سه واحد به راست شیفت داده بشه؟(منظورم اون خطیه که توش کامنت گذاشتی red )
                        ممنون میشم جواب بدید دوستان.
                        موفق باشید دوستان :nerd:

                        دیدگاه


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

                          سلام

                          چند تا سوال صریح داشتم ممنون می شم از دوستانی که مطمئن هستند جواب بدن.
                          1- این دستور مربوط به pff.c هست. متغییرdi از نوع استراکچر هست. می خواستم بدونم اون & قبل متغییر چیکار می کنه؟

                          (res = follow_path(&dj, "x.wav



                          typedef struct _DIR_ {
                          WORD index; /* Current read/write index number */
                          BYTE* fn; /* Pointer to the SFN (in/out) {file[8],ext[3],status[1]} */
                          CLUST sclust; /* Table start cluster (0:Static table) */
                          CLUST clust; /* Current cluster */
                          DWORD sect; /* Current sector */
                          }



                          سوال دومم هم اینه که من می خوام یه فایل جدید تو درایو 0 ایجاد کنم جنس دستور open تو این کتابخونه با ff.h متفاوته و تنها یه ورودی نام فایلو میگیره.
                          FRESULT pf_open (
                          const char *path /* Pointer to the file name */
                          )
                          {
                          unsigned char *data;

                          من یه فایل دلخواه رو فراخونی کردم که وجود نداره ولی چیزی ایجاد نمی شه و در عوض خطای FR_NOT_READY = 0x03
                          (خطا در دیسک با لول پایین یا انیشیال نشدن درست دیسک با تابع منظور از لول پایین یعنی دیسک وجود دارد ولی ارتباط درست نیست disk_initialize )
                          برمی گرده.


                          اگر امان داره یه مثال برای ایجاد یه فایل wav دلخواه بزنین
                          ممنونم.

                          دیدگاه


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

                            نوشته اصلی توسط ebi1205
                            سلام

                            چند تا سوال صریح داشتم ممنون می شم از دوستانی که مطمئن هستند جواب بدن.
                            1- این دستور مربوط به pff.c هست. متغییرdi از نوع استراکچر هست. می خواستم بدونم اون & قبل متغییر چیکار می کنه؟

                            (res = follow_path(&dj, "x.wav



                            typedef struct _DIR_ {
                            WORD index; /* Current read/write index number */
                            BYTE* fn; /* Pointer to the SFN (in/out) {file[8],ext[3],status[1]} */
                            CLUST sclust; /* Table start cluster (0:Static table) */
                            CLUST clust; /* Current cluster */
                            DWORD sect; /* Current sector */
                            }



                            سوال دومم هم اینه که من می خوام یه فایل جدید تو درایو 0 ایجاد کنم جنس دستور open تو این کتابخونه با ff.h متفاوته و تنها یه ورودی نام فایلو میگیره.
                            FRESULT pf_open (
                            const char *path /* Pointer to the file name */
                            )
                            {
                            unsigned char *data;

                            من یه فایل دلخواه رو فراخونی کردم که وجود نداره ولی چیزی ایجاد نمی شه و در عوض خطای FR_NOT_READY = 0x03
                            (خطا در دیسک با لول پایین یا انیشیال نشدن درست دیسک با تابع منظور از لول پایین یعنی دیسک وجود دارد ولی ارتباط درست نیست disk_initialize )
                            برمی گرده.


                            اگر امان داره یه مثال برای ایجاد یه فایل wav دلخواه بزنین
                            ممنونم.

                            با سلام

                            منظور از & یعنی ادرس متغیر جون ورودی تابع پوینتر هست و رای ارسال ابتداری ادرس متغیر از & استفاده شده

                            ولی در مورد کتابخونه pff

                            اول اینکه ارور 3 یعنی

                            FR_DISK_ERR = The function failed due to an error in the disk function, a wrong FAT structure or an internal error

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

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

                            دیدگاه


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

                              سپاس آقای اسدی

                              مطمئن هستین که امکان ایجاد فایل رو نداره؟ اینجا یه گزینه بود به این صورت که پیش فرضش 0 بود
                              #define _USE_WRITE 1 /* pf_write(): 0:Remove ,1:Enable */
                              من یکش کردم و دیگه با فراخونی pf_write() مشکلی نداشته و کامپایل می شه .


                              نکته بعدی اینکه من مطمئنم به خاطر موجود نبودن فایل این خطا رو میده چون با روش سعی و خطا دارم جلو میرم و یه فایل موجود رو فراخونی میکنم صفر رو بر میگردونه وپخش می شه و یه فایل ناموجود رو که قصدم ایجادش هست فراخونی می کنم 3 رو بر میگردونه و گیر میکنه.


                              یه سوال دیگه اینجا یه تابع دیگه هم هست به نام


                              FRESULT create_name
                              DIR *dj, /* Pointer to the directory object */
                              const char **path /* Pointer to pointer to the segment in the path string */
                              )

                              توضیحشم اینه: Pick a segment and create the object name in directory form
                              و برای اجرای مسیر فایل های موجود بررسی میشه . به نظرتون امکان داره با این فراخونی فایل رو ایجاد کرد؟


                              مرسی از توجهتون

                              دیدگاه


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

                                با سلام،

                                شما داری از نسخه Petit استفاده میکنی، این نسخه خیلی محدوده و برای میکرو های خیلی ضعیف مناسبه و امکان ایجاد فایل جدید رو نداره.

                                در نسخه اصلی FatFs فانکشن f_open امکان ایجاد یک فایل جدید رو داره ....
                                مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                                Sh_Nourbakhsh@Yahoo.com

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

                                دیدگاه

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