اطلاعیه

Collapse
No announcement yet.

کتابخانه fatfs در winavr

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

    کتابخانه fatfs در winavr

    سلام

    هر کاری کردم نتونستم از این کتابخونه استفاده کنم! :angry: شماتیک mmc کاملا درسته چون با بسکام ازش جواب گرفتم. ولی با fatfs کاری نتونستم انجام بدم....

    این سورس برنامه:

    #include <avr/io.h>
    #include <avr/pgmspace.h>
    #include <avr/interrupt.h>
    #include <string.h>
    #include <avr/delay.h>


    //#include "uart.h"
    //#include "xitoa.h"
    #include "ff.h"
    #include "diskio.h"
    #include "rtc.h"

    #define LedPowerON() PORTC |= (1<<PINC0)
    #define LedPowerOFF() PORTC&= ~(1<<PINC0)



    DWORD get_fattime ()
    {
    RTC rtc;


    rtc_gettime(&rtc);

    return ((DWORD)(rtc.year - 1980) << 25)
    | ((DWORD)rtc.month << 21)
    | ((DWORD)rtc.mday << 16)
    | ((DWORD)rtc.hour << 11)
    | ((DWORD)rtc.min << 5)
    | ((DWORD)rtc.sec >> 1);
    }



    int main(void)
    {
    //IoInit();

    DDRC |= (1 << DDC0); // set port C pin 0 as output

    /*
    OCR2 = 90-1; // Timer2: 100Hz interval (OC2)
    TCCR2 = 0b00001101;

    TIMSK = 0b10000000; // Enable TC2.oc, interrupt
    */
    rtc_init(); // Initialize RTC

    // sei();



    FATFS fs; // Work area (file system object) for logical drive
    FIL fsrc, fdst; // file objects
    BYTE buffer[4096]; // file copy buffer
    FRESULT res; // FatFs function common result code
    UINT br, bw; // File R/W count


    disk_initialize(0);
    res = f_mount(0, &fs);


    //f_mkdir("Behnam_j"
    res = f_open(&fdst, "dstfile.txt", FA_WRITE);
    if ( res == FR_OK ) LedPowerON();

    f_write(&fdst, "Behnam", br, &bw);



    f_close(&fdst);

    // Register a work area for logical drive 0

    // Open source file
    // res = f_open(&fsrc, "srcfile.dat", FA_OPEN_EXISTING | FA_READ);
    //if (res) die(res);

    // Create destination file
    res = f_open(&fdst, "dstfile.dat", FA_CREATE_ALWAYS | FA_WRITE);
    f_write(&fdst, "Behnam", br, &bw);
    //if (res) die(res);

    // Copy source to destination
    /* for (; {
    res = f_read(&fsrc, buffer, sizeof(buffer), &br);
    if (res || br == 0) break; // error or eof
    res = f_write(&fdst, buffer, br, &bw);
    if (res || bw < br) break; // error or disk full
    }
    */
    // Close all files
    // f_close(&fsrc);
    f_close(&fdst);

    // Unregister a work area before discard it
    f_mount(0, NULL);
    }

    اشکال از کجاست؟؟؟؟؟؟؟

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

    ممنونم
    http://ceworld.ir/images/ads/dornablogcom_ads.gif

    #2
    پاسخ : کتابخانه fatfs در winavr

    سلام بهنام جان

    کتابخونه ی WINAVR با کتابخونه ی کدویژن تفاوت چندانی نداره...

    این یه سورس که مربوط به مجله ی نویز 2 میشه...

    با این تست کن ببین کار میده

    کد:
    #include <mega64.h>
    
    #include <ff.h>
    
    #include <stdio.h>
    
    #include <delay.h>
    
    
    #asm
      .equ __lcd_port=0x15 ;PORTC
    #endasm
    #include <lcd.h>
    
    
    #define T1_OVF_FREQ 100
    #define T1_PRESC 1024L
    #define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))
    
    unsigned char buffer[15]="ECA the BEST..";
    unsigned char buffer2[10];
    unsigned char buffer3[5];
    
    
    
    FRESULT res;
    unsigned int nbytes;
    FATFS fat;
    FIL file;
    char path[]="0:/ECA.txt";
    
    
    
    
    interrupt [TIM1_OVF] void timer_comp_isr(void)
    {
    /* re-initialize Timer1 */
    TCNT1H=T1_INIT>>8;
    TCNT1L=T1_INIT&0xFF;
    /* card access low level timing function */
    disk_timerproc();
    }
    
    
    
    
    void main(void)
    {
    
    
    
    TCCR1A=0x00;
    TCCR1B=(1<<CS12)|(1<<CS10);
    TCNT1H=T1_INIT>>8;
    TCNT1L=T1_INIT&0xFF;
    TIMSK=1<<TOIE1;
    
    
    
    
    #asm("sei")
    
    lcd_init(16);
    lcd_clear();
    
    
    
    
    if ((res=f_mount(0,&fat))==FR_OK)
      lcd_putsf("FAT mounted = OK");  
      
    
    delay_ms(1000);
    lcd_clear();
    if ((res=f_open(&file,path,FA_CREATE_ALWAYS))==FR_OK)
      lcd_putsf("File opened"); 
      
                   
    delay_ms(1000);                 
    lcd_clear();
    if ((res=f_write(&file,buffer,15,&nbytes))==FR_OK)
      lcd_putsf("Writing Data"); 
      
      
                    
    delay_ms(1000);                 
    lcd_clear();  
    if ((res=f_close(&file))==FR_OK)
      lcd_putsf("File closed");  
                   
      
    delay_ms(1000);
    lcd_clear();
    if ((res=f_open(&file,path,FA_READ))==FR_OK)
      lcd_putsf("File opened"); 
              
               
    delay_ms(1000);
    lcd_clear();  
    if ((res=f_read(&file,buffer2,10,&nbytes))==FR_OK)
      lcd_putsf("Reading Data");  
               
      
    delay_ms(1000);
    lcd_clear();  
    if ((res=f_read(&file,buffer3,5,&nbytes))==FR_OK)
      lcd_putsf("Reading Data");  
      
      
    delay_ms(1000);                 
    lcd_clear();  
    if ((res=f_close(&file))==FR_OK)
      lcd_putsf("File closed"); 
    
    
    while(1);
     }

    دیدگاه


      #3
      پاسخ : کتابخانه fatfs در winavr

      حامد جان سلام

      متاسفانه اینم جواب نداد! :angry:

      امکانش هست یه شماتیکی ازش با سورس و کتابخونه کاملش رو بزاری؟! والا الان دیگه به همه چیز من شک دارم!
      http://ceworld.ir/images/ads/dornablogcom_ads.gif

      دیدگاه


        #4
        پاسخ : کتابخانه fatfs در winavr

        دوستان کسی راهنمایی نمیکنه؟
        http://ceworld.ir/images/ads/dornablogcom_ads.gif

        دیدگاه


          #5
          پاسخ : کتابخانه fatfs در winavr

          بهنام جان گفتم که منبعش نویز 2 هست...

          ولی این سورسش...
          فایل های پیوست شده

          دیدگاه


            #6
            پاسخ : کتابخانه fatfs در winavr

            دوست من، ممنونم بایت سورسی که دادی...

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

            در اصل مدار من الان با برنامه های بسکام (کتابخونه های mmc برای بسکام) کار میکنه و با این کتابخونه fatfs کار نمیکنه!!!!!!

            میدونین مشکل چیه؟ مشکل از کجاست؟!!!!!! :angry:
            http://ceworld.ir/images/ads/dornablogcom_ads.gif

            دیدگاه


              #7
              پاسخ : کتابخانه fatfs در winavr

              دوستان اینو ببینید:

              کد:
              if(f_mount(0, &FileSystemObject)!=FR_OK) { 
               //flag error 
              
               } 
              
              
               DSTATUS driveStatus = disk_initialize(0); 
              
              if(driveStatus & STA_NOINIT || 
                driveStatus & STA_NODISK || 
                driveStatus & STA_PROTECT   ) { 
              
               //flag error. 
              
               } 
              
              
              FIL logFile; 
              
              //works 
              
              if(f_open(&logFile, "/GpsLog.txt", FA_READ | FA_WRITE | FA_OPEN_ALWAYS)!=FR_OK) { 
              
               //flag error 
              
               }

              برنامه تابع f_mount را با موفقیت اجرا میکنه ولی سر تابع disk_initialize(0); نمیتونه! تست کردم هر سه تا پیام مربوط به disk_initialize(0); رو برمیگردونه!

              تابع disk_initialize(0); را قبل از f_mount هم نوشتم ولی باز هم چواب نداد! چه کنم؟ :cry2:

              تابع initialize رو که بررسی کردم دیدم هر سه حالت STA_NOINIT and STA_NODISK and STA_PROTECT رو برمیگردونه!

              از مگا64 استفاده میکنم با کریسالت 12 مگ. و از تایمر 2 میکرو استفاده میکنم.


              کد:
              PORTB = 0b10110000; // Port B
              DDRB = 0b11000000;
              
              PORTC = 0b11111111; // Port C
              
              PORTD = 0b11111111; // Port D
              
              PORTE = 0b11110010; // Port E
              DDRE = 0b10000010;
              PORTF = 0b11111111; // Port F
              
              PORTG = 0b11111; // Port G
              
              ISR(TIMER2_COMP_vect)
              {
               disk_timerproc(); /* Drive timer procedure of low level disk I/O module */
              }
              
              OCR2 = 90-1; // Timer2: 100Hz interval (OC2)
              TCCR2 = 0b00001101;
              TIMSK = 0b10000000; // Enable TC2.oc, interrupt
              sei( );

              ممنونم
              http://ceworld.ir/images/ads/dornablogcom_ads.gif

              دیدگاه


                #8
                پاسخ : کتابخانه fatfs در winavr

                سلام
                لطفا یه شماتیک از مدارتون بذارین!
                تا اونجا که من یادمه یه روال فراخوانی i2cتوی کد برنامه هست که از یه rtc خارجی اطلاعات مربوط به زمان جاری رو دریافت می کنه منکه نتونستم اون ic رو بخرم (گیرم نیومد ) (توی شماتیک اصلی elm chan مدار هستش)
                ،شما حتما اونو بستین!!!
                در ضمن اینجا هم یه کتابخونه معرفی شده:
                www.roland-riegel.de
                به نظر خودم خیلی سبکتره اما خودم هنوز امتحان نکردم.

                دیدگاه


                  #9
                  پاسخ : کتابخانه fatfs در winavr

                  نوشته اصلی توسط dostajn
                  سلام
                  لطفا یه شماتیک از مدارتون بذارین!
                  تا اونجا که من یادمه یه روال فراخوانی i2cتوی کد برنامه هست که از یه rtc خارجی اطلاعات مربوط به زمان جاری رو دریافت می کنه منکه نتونستم اون ic رو بخرم (گیرم نیومد ) (توی شماتیک اصلی elm chan مدار هستش)
                  ،شما حتما اونو بستین!!!
                  در ضمن اینجا هم یه کتابخونه معرفی شده:
                  www.roland-riegel.de
                  به نظر خودم خیلی سبکتره اما خودم هنوز امتحان نکردم.
                  سلام
                  شماتیک همونی هست که در مجله شماره 2 نویز آمده! همونو بستم! و از rtc خارجی هم استفاده نکردم! یه آموزش انگلیسی هم بود برای راه اندازیش که در اون هم حرفی از rtc نزده بود! مدار با برنامه ای که با بسکام بنویسم جواب میده و کار میکنه ولی با این کتابخونه کار نمیکنه!

                  یه سوال: spi در این کتابخونه تنظیم و فعال شده یا اینکه باید خودمون فعالش کنیم؟؟؟؟؟
                  http://ceworld.ir/images/ads/dornablogcom_ads.gif

                  دیدگاه


                    #10
                    پاسخ : کتابخانه fatfs در winavr

                    نوشته اصلی توسط behnam_kh2002
                    سلام
                    شماتیک همونی هست که در مجله شماره 2 نویز آمده! همونو بستم! و از rtc خارجی هم استفاده نکردم! یه آموزش انگلیسی هم بود برای راه اندازیش که در اون هم حرفی از rtc نزده بود! مدار با برنامه ای که با بسکام بنویسم جواب میده و کار میکنه ولی با این کتابخونه کار نمیکنه!

                    یه سوال: spi در این کتابخونه تنظیم و فعال شده یا اینکه باید خودمون فعالش کنیم؟؟؟؟؟
                    سلام
                    مشکلت همینه
                    اگه داری از مثال elm chan اسنفاده می کنی باید rtcخارجی هم داشته باشی
                    نوضیحات کامل تو خود مثالش داده همراه با شماتیک

                    دیدگاه


                      #11
                      پاسخ : کتابخانه fatfs در winavr

                      نوشته اصلی توسط dostajn
                      سلام
                      مشکلت همینه
                      اگه داری از مثال elm chan اسنفاده می کنی باید rtcخارجی هم داشته باشی
                      نوضیحات کامل تو خود مثالش داده همراه با شماتیک
                      خوب بدون استفاده از rtc خارجی چطوری میشه از این کتابخونه استفاده کرد؟ شمایک هم همراه با rtc خارجیه. شما خودتون بدون rtc راش انداختین؟

                      راستی این کتابخونه دومیه roland rieger رو هم اجراش کردم ولی پیغام MMC/SD initialization failed رو میداد!!!!!!!! :angry:

                      الان جای مقاومتهای تو شماتیک رو عوض کردم، حالا init میشه ولی پیغام opening partition failed رو میده!!! :angry: چرا؟
                      http://ceworld.ir/images/ads/dornablogcom_ads.gif

                      دیدگاه


                        #12
                        پاسخ : کتابخانه fatfs در winavr

                        دوست من، این کتابخونه دومی ازش جواب گرفتم و کارت رو شناسایی کرد
                        یه فایل هم توش ریختم و تونست محتویات رو بخونه
                        ولی فایل و فولدر نیمتونه بسازه!!!!! به نظرتون اشکال از چی میتونه باشه؟؟؟
                        http://ceworld.ir/images/ads/dornablogcom_ads.gif

                        دیدگاه


                          #13
                          پاسخ : کتابخانه fatfs در winavr

                          دوستان مشکلش رو حل کردم و جواب داد :wow: عالی کار میکنه...

                          ممنونم از راهنمایی هاتون
                          http://ceworld.ir/images/ads/dornablogcom_ads.gif

                          دیدگاه


                            #14
                            پاسخ : کتابخانه fatfs در winavr

                            نوشته اصلی توسط behnam_kh2002
                            دوستان مشکلش رو حل کردم و جواب داد :wow: عالی کار میکنه...

                            ممنونم از راهنمایی هاتون
                            اگه با کدویژن کار می کنید امکان داره برنامه و شماتیک تون رو اینجا بزارید :biggrin:

                            دیدگاه


                              #15
                              پاسخ : کتابخانه fatfs در winavr

                              نوشته اصلی توسط ma-bah
                              اگه با کدویژن کار می کنید امکان داره برنامه و شماتیک تون رو اینجا بزارید :biggrin:
                              دوست عزیز شماتیک دقیقا همونی هست که توی مجله شماره 2 نویز اومده! هیچ فرقی نداره

                              من با winavr کار میکنم و فکر کنم با اندکی تغییر بتونی ازش استفاده کنی توی کدویژن.

                              برنامه هم در این سایت قرار داره که دوست خوبمون در چندتا ارسال بالاتر بهش اشاره کردن www.roland-riegel.de

                              فقط بار اول برای تست، خطای MMC/SD initialization failed رو میداد که با عوض کردن جای مقاومتها در شماتیک برطرف شد. بعد از اون خطای opening partition failed اومد که اینم با فرمت کردن مموری رفع شد! ولی برای فرمت روی FAT گذاشتم! نه FAT32

                              تا اینجا کاملا کار میکنه و میخونه از مموری ولی نوشتن نه! یه سری تنظیمات دیگه بوده برای اینکه امکان نوشتن در مموری به وجود بیاد که اونا رو هم خواهم گفت.... فعلا تغییرات رو در برنامه اعمال کنید برای کدویژن و تا اینجا رو راه بندازید تا بعدش...
                              http://ceworld.ir/images/ads/dornablogcom_ads.gif

                              دیدگاه

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