اطلاعیه

Collapse
No announcement yet.

مشکل در رابطه با کتابخانه ff.h و راهنمایی های استاد اسدی در رابطه با خواندن فایل

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

    مشکل در رابطه با کتابخانه ff.h و راهنمایی های استاد اسدی در رابطه با خواندن فایل

    سلام به همه و با تشکر از مهندس اسدی و کلیه دوستانی که در تاپبک ff.h سایرین رو راهنمایی کرده اند....بلاخره من, هم تونستم بنویسم و هم تونستم بخونم...اما مشکل اینجاست که میخوام تمام اطلاعات یک فایل متنی رو بخونم و علاوه بر این نمیدونم که حجم اون فایل چقدره.... در ضمن برای مثال و تست ,یک کاری رو انجام دادم تا ببنیم آیا به مشکل میخوره یا نه که دیدم به مشکل خورد:
    یک فایل با حجم 35 بایت درست کردم.... و دوبار از تابع f_read استفاده کردم که در بار اول 20 بایت رو خوندم و بلافاصله پس از اون دوباره تابع رو برای خوندن 20 بایت دیگه فراخوانی کردم که دیگه به مشکل خوردم, چون فقط 15 بایت باقی مونده بود و من درخواست 20 بایت رو داشتم....ناگفته نماند که یک بار هم به جای 20 بایت دوم, 15 بایت و همچنین کمتر از اون رو خواندم که دیگه به مشکل نخورد....حالا میخوام بدونم که باید چکار کنم....ممنون......

    iهمراه با مشکل :
    check=f_read(&ftest,EE,20,&M);
    check=f_read(&ftest,EE2,20,&M);

    بدون مشکل:

    check=f_read(&ftest,EE,20,&M);
    check=f_read(&ftest,EE2,14,&M);

    check از نوع کاراکتر
    و EE از نوع کاراکتر char EE[];
    و M از نوع UINT
    << از درخت تنومند کرنش مخواه, تعظیم او با شکستنش یکیست... >>
    www.MashhadMicro.IR

    #2
    پاسخ : مشکل در رابطه با کتابخانه ff.h و راهنمایی های استاد اسدی در رابطه با خواندن فایل

    کد:
    [size=+2][size=18pt][size=12pt][size=10pt]در ضمن من این برنامه رو نوشتم....گاهی وقتا کار میکنه و گاهی نه....
    تا حد ممکن پایه های مموری رو با سیم کوتاه وصل کردم (در حد 5 سانتی متر)!
    و گاهی که با سیم مربوط به پایه CS (که وصلش کردم به پین PB3) بازی میکنم درست میشه....
    اکثر وقتا که این سیم وصله میکرو هنگ میکنه و برای اینکه کار کنه اول این سیم رو میکشم و میکرو رو روشن میکنم
     و بعدش بلافصله وصلش میکنم که با این کار مشکل حل میشه.....
    
    این هم متن برنامه 
    
    
    /*****************************************************
    This program was produced by the
    CodeWizardAVR V2.05.0 Advanced
    Automatic Program Generator
    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com
    
    Project : 
    Version : 
    Date  : 05/30/2012
    Author : www.Eca.ir *** www.Webkade.ir
    Company : 
    Comments: 
    
    
    Chip type        : ATmega32
    Program type      : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model      : Small
    External RAM size    : 0
    Data Stack size     : 512
    *****************************************************/
    #include <delay.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    #include "mmc.c"
    #if TINY_FAT    
     #include "tff.c"
    #else
     #include "ff.c"
    #endif
    
    char filename[15];
    UINT M;unsigned long int Size=0;
    //UINT bw;     // File R/W count
    char FBuffer[10];char EE[25];char EE2[5];char EE3[3];
    FATFS fs;   // Work area (file system object) for logical drive
    FIL ftest;   // file objects
    char check=255;
    
    
    interrupt [TIM2_COMP] void timer2_comp_isr(void)
    {
      if((PORTA&0x04)==0){PORTA|=0x04;}else{PORTA&=0xFB;};
      disk_timerproc();	/* Drive timer procedure of low level disk I/O module */
      if((PORTA&0x04)==0){PORTA|=0x04;}else{PORTA&=0xFB;};
    }
    
    DWORD get_fattime ()
    {
    /*	struct tm *tmr;
    	time_t t;
    
    
    	cli();
    	t = rtc;
    	sei();
    	tmr = gmtime(&t);
    	return	 ((DWORD)(tmr->tm_year - 80) << 25)
    			| ((DWORD)(tmr->tm_mon + 1) << 21)
    			| ((DWORD)tmr->tm_mday << 16)
    			| (WORD)(tmr->tm_hour << 11)
    			| (WORD)(tmr->tm_min << 5)
    			| (WORD)(tmr->tm_sec >> 1);
    */
    	return	((2007UL-1980) << 25)	// Year = 2006
    			| (2UL << 21)			// Month = Feb
    			| (9UL << 16)			// Day = 9
    			| (22U << 11)			// Hour = 22
    			| (30U << 5)			// Min = 30
    			| (0U >> 1) 			// Sec = 0
    			;
    }
    
    // External Interrupt 0 service routine
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {
    
    }
    
    // External Interrupt 1 service routine
    interrupt [EXT_INT1] void ext_int1_isr(void)
    {
    
    }
    
    void main(void)
    {
    
    // Input/Output Ports initialization
    // Port A initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTA=0x00;
    DDRA=0x07;
    
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTB=0x00;
    DDRB=0x41;
    
    // Port C initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTC=0x00;
    DDRC=0x00;
    
    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTD=0x00;
    DDRD=0x00;
    
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=0xFF
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;
    
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: 62.500 kHz
    // Mode: CTC top=OCR2
    // OC2 output: Disconnected
    ASSR=0x00;
    TCNT2=0x00;
    TCCR2=0x0F;
    OCR2=70;
    //TCCR2=0x0D;
    //OCR2=90;
    
    // External Interrupt(s) initialization
    // INT0: On
    // INT0 Mode: Rising Edge
    // INT1: On
    // INT1 Mode: Rising Edge
    // INT2: Off
    GICR|=0xC0;
    MCUCR=0x0F;
    MCUCSR=0x00;
    GIFR=0xC0;
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x80;
    
    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: Off
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 9600
    UCSRA=0x00;
    UCSRB=0x08;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x33;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    // ADC initialization
    // ADC disabled
    ADCSRA=0x00;
    
    // SPI initialization
    // SPI disabled
    SPCR=0x00;
    
    // TWI initialization
    // TWI disabled
    TWCR=0x00;
    
    // Global enable interrupts
    
      
    
    	//OCR2 = 90-1;		// Timer2: 100Hz interval (OC2)
    	//TCCR2 = 0b00001101;
        //TIMSK=0x80;  
        //DDRB=1;
    	#asm("sei")
      filename[0]='h';
      filename[1]='a';
      filename[2]='m';
      filename[3]='e';
      filename[4]='d';
      filename[5]='0';
      filename[6]='.';
      filename[7]='t';
      filename[8]='x';
      filename[9]='t';
            if(disk_initialize(0)==STA_NOINIT)
     while (1)
     {
        //filename[5]='0';
        PORTA|=0x01;
        PORTA&=0xFE;delay_ms(500);
        PORTA|=0x01;delay_ms(500);  
        PORTA&=0xFE;delay_ms(500);
        PORTA|=0x01;delay_ms(500); 
        PORTA&=0xFE;delay_ms(500);
        PORTA|=0x01; 
        
          do{
          check=f_mount(0,&fs);
          }while(check!=FR_OK);
                 
          do{
           M=3;
           putchar('#');ltoa(M,EE3);puts(EE3);putchar('#');
           check=f_open(&ftest, filename, FA_READ);
           if(check==FR_OK){
           check=f_read(&ftest,EE,50,&M);
           puts(EE);ltoa(M,EE3);putchar('+');puts(EE3);putchar('+');PORTA&=0xFD;
           EE3[0]='\0';EE3[1]='\0';EE3[2]='\0';
           itoa(check,EE3);putchar('$');puts(EE3);putchar('$');
           if(check==FR_OK){PORTA&=0xFD;};
           do{
           check=f_close(&ftest);
           }while(check!=FR_OK);
           }
           else{
           PORTA|=0x02;puts(EE);putsf("E-R");delay_ms(300);
           };
           
          }while(check!=FR_OK);
          
          do{
          check=f_mount(0, NULL);
          }while(check!=FR_OK);
            
          
           //------------------------------
           
           
              
         
        PORTA&=0xFE;
        delay_ms(4000);
        
       }
       
     }
    [/size][/size][/size][/size]

    [/ltr]
    << از درخت تنومند کرنش مخواه, تعظیم او با شکستنش یکیست... >>
    www.MashhadMicro.IR

    دیدگاه


      #3
      پاسخ : مشکل در رابطه با کتابخانه ff.h و راهنمایی های استاد اسدی در رابطه با خواندن فایل

      پایه های wp و cd رو چیکار میکنی؟؟ :eek:
      به گراند وصل میکنی یا نه؟؟؟؟
      برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

      دیدگاه


        #4
        پاسخ : مشکل در رابطه با کتابخانه ff.h و راهنمایی های استاد اسدی در رابطه با خواندن فایل

        سلام....اونا رو هم به گراند وصل میکنم....
        << از درخت تنومند کرنش مخواه, تعظیم او با شکستنش یکیست... >>
        www.MashhadMicro.IR

        دیدگاه

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