اطلاعیه

Collapse
No announcement yet.

مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}

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

    #16
    پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}

    من برنامه عنوان شده از مجله نویز را پیاده سازی کردم
    در حالت عادی فایل را ایجاد می کنه، اطلاعات را روش می نویسه ولی وقتی می خواهم داده ای از روی سنسوری مانند دما روش بنویسم دیگه جواب نمیده!
    مشکل از کجا هستش؟

    دیدگاه


      #17
      پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}

      سلام

      بعد از ذخیره ی مقادیر داخل فایل فایل رو میبندید؟

      از نظر تغذیه و... برای MMC مشکل پیش نمیاد؟(در حین استفاده از سنسور)

      موفق باشید

      دیدگاه


        #18
        پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}

        خدمت شما عرض کنم که بنده ابتدا با f_open فایل را می سازم، پس از آن با f_write یک عبارت را ابتدای فایل اضافه می کنم و با f_sync فایل را ذخیره می کنم
        تا این مرحله برنامه به درستی کار می کند، ولی پس از آن که داده را از روی سنسور دما یا شتاب که هر دو دیجیتال هستند می خوانم و مجددا با f_write می نویسم و با f_sync ذخیره می کنم، این مرحله بطور کلی کار نمی کند
        فرقی نمی کنه که این کار را توسط یک حلقه و یا وقفه فراخونی کنم در هر صورت اطلاعات ذخیره نمی شود

        به علت اینکه انتهای فایل با خاموش شدن سیستم تعیین می شود اصلا از دستور f_close استفاده نکردم، البته دستور f_sync نیاز به آن را رفع می کند

        من از MicroSD بر روی PCB استفاده می کنم که تغذیه آن توسط رگولاتور تامین می شود و مصرف انرژی سنسورها به 10mA هم نمیرسد

        دیدگاه


          #19
          پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}

          کسی تا حالا گزارشی از مشکلات کتابخانه کدویژن نداده؟
          برنامه واقعا عشقی هستش، یکبار کار می کنه، ریست می کنم دیگه کار نمی کنه! باز بعد از یکی دوبار ریست کار می کنه!
          اغلب می تونه فایل را ایجاد بکنه ولی در ذخیره و یا همزمان سازی کد خطای 3 را میده!

          دیدگاه


            #20
            پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}

            :-?

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

            یه نمونه برنامه کوچیک که نوشتی رو همینجا بزار تا ببینم چطوریه...

            دیدگاه


              #21
              پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}

              نوشته اصلی توسط حامِد مٌهری
              :-?

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

              یه نمونه برنامه کوچیک که نوشتی رو همینجا بزار تا ببینم چطوریه...
              این هم برنامه ای که نوشتم

              کد:
              sprintf(file_path,"0:/MM_%d.csv",file_count); 
              puts(file_path);
              
              
              drive_mount(0);
              file_create();
              file_sync();
              
              
                 file_write();
                 file_sync();
                 
                 printf("open loop\r\r");
              
              LOOP: file_write();
                 file_sync();
                 delay_ms(500);
                 call_adxl();
              goto LOOP;
              
              
              void drive_mount(unsigned char num){
                if ((res=f_mount(num,&drive))==FR_OK)
                  printf("Logical drive %d: mounted OK\r",num);
                else
                  /* an error occured, display it and stop */
                  error(res);
                } 
                
              void file_create(void){  
                  if ((res=f_open(&file,file_path,FA_CREATE_ALWAYS | FA_WRITE))==FR_OK)
                    printf("File Created %d \r",res);
                  else
                    printf("File Create Failed Error Code = %d\r",res);
                }
                
              void file_write(void){
                  if ((res=f_write(&file,buffer,sizeof(buffer)-1,&nbytes))==FR_OK)
                    printf("Write Data Ok\r");
                  else  
                    printf("Write Data Failed Error Code = %d\r",res);
                  
                }
                
              void file_close(void){
                  if ((res=f_close(&file))==FR_OK)
                    printf("File Close OK\r");
              
                  else
                    printf("File Close Failed Error Code = %d\r",res);
                }
              
              void file_sync(void){
                  if ((res=f_sync(&file))==FR_OK)
                    printf("File Sync OK\r");
              
                  else
                    printf("File Sync Failed Error Code = %d\r",res);
                }

              دیدگاه


                #22
                پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}



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

                یادمه یه جا خوندم اگه بعد از روشن شدن MMC ، MMC اینیت نشه بعد از اون قاط میزنه!!!

                اینو چک کن ببین همینطوره.

                موفق باشید

                دیدگاه


                  #23
                  پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}

                  سلام، این برنامه من هستش
                  در مورد تابع mount باید بگم که اگه مموری هم قرار نداده باشم، خطا نمی گیره!
                  البته تو محیط شبیه سازی هم همینطوره، توم محیط شبیه سازی برنامه خوب جواب میده


                  کد:
                  #include <mega128.h>
                  #include <delay.h>
                  #include <stdio.h>
                  #include <string.h>
                  #include <iobits.h>
                  
                  
                  
                  //------ MMC Codevision Lib
                  void drive_mount(unsigned char num);
                  //void call_lcd(void);
                  void file_create(void);
                  void file_write(void);
                  void file_sync(void);
                  void file_close(void);
                  void led_toggle(unsigned char num,unsigned char mod);
                  void led_init(void);
                  
                  //unsigned char buffer[]="tetsts,";
                  unsigned char buffer[]="123,23,-34,20.50;123,23,-34,20.50;123,23,-34,20.50;123";
                  //unsigned char lcd_buffer[16];
                  unsigned int temp;
                  //
                  //
                  //
                  //FRESULT res;
                  unsigned int nbytes;
                  //FATFS fat;
                  FIL file;
                  eeprom unsigned int file_count;
                  char file_path[12];
                  //char path[]="0:/";
                  
                  
                  /* FAT function result */
                  FRESULT res;
                  /* will hold the information for logical drive 0: */
                  FATFS drive;
                  /* root directory path */
                  //char path[256]="0:/";
                  flash char * flash error_msg[]=
                  {
                  "", /* not used */
                  "FR_DISK_ERR",
                  "FR_INT_ERR",
                  "FR_INT_ERR",
                  "FR_NOT_READY",
                  "FR_NO_FILE",
                  "FR_NO_PATH",
                  "FR_INVALID_NAME",
                  "FR_DENIED",
                  "FR_EXIST",
                  "FR_INVALID_OBJECT",
                  "FR_WRITE_PROTECTED",
                  "FR_INVALID_DRIVE",
                  "FR_NOT_ENABLED",
                  "FR_NO_FILESYSTEM",
                  "FR_MKFS_ABORTED",
                  "FR_TIMEOUT"
                  };
                  
                  
                  void error(FRESULT res);
                  
                  /* will hold file/directory information returned by f_readdir*/
                  FILINFO file_info;
                  
                  
                  /* recursively scan directory entries and display them */
                  FRESULT directory_scan(char *path)
                  {
                  /* will hold the directory information */
                  DIR directory;
                  /* FAT function result */
                  FRESULT res;
                  int i;
                  
                  
                  if ((res=f_opendir(&directory,path))==FR_OK)
                    {
                    while (((res=f_readdir(&directory,&file_info))==FR_OK) &&
                       file_info.fname[0])
                       {
                       /* display file/directory name and associated information */
                       printf("%c%c%c%c%c %02u/%02u/%u %02u:%02u:%02u %9lu"         " %s/%s\r\n",
                          (file_info.fattrib & AM_DIR) ? 'D' : '-',
                          (file_info.fattrib & AM_RDO) ? 'R' : '-',
                          (file_info.fattrib & AM_HID) ? 'H' : '-',
                          (file_info.fattrib & AM_SYS) ? 'S' : '-',
                          (file_info.fattrib & AM_ARC) ? 'A' : '-',
                          file_info.fdate & 0x1F,(file_info.fdate >> 5) & 0xF,
                          (file_info.fdate >> 9)+1980,
                          file_info.ftime >> 11,(file_info.ftime >> 5) & 0x3F,
                          (file_info.ftime & 0xF) << 1,
                          file_info.fsize,path,file_info.fname);
                       if (file_info.fattrib & AM_DIR)
                        {
                        /* it's a subdirectory */
                        /* make sure to skip past "." and ".." when recursing */
                        if (file_info.fname[0]!='.')
                          {
                          i=strlen(path);
                          /* append the subdirectory name to the path */
                          if (path[i-1]!='/') strcatf(path,"/");
                          strcat(path,file_info.fname);
                          /* scan subdirectory */
                          res=directory_scan(path);
                          /* restore the old path name */
                          path[i]=0;
                          /* remove any eventual '/' from the end of the path */
                          --i;
                          if (path[i]=='/') path[i]=0;
                          /* stop if an error occured */
                          if (res!=FR_OK) break;
                          }
                        }
                       }
                    }
                  return res;
                  }
                  
                  
                  
                  //---- ADXL Part
                  
                  char adxl345_read(char register_address);
                  void adxl345_write(char register_address, char register_value);
                  void adxl345_defaults(void);
                  void adxl345_hw_setup(void);
                  void call_adxl (void);
                  char high_byte=0;
                  char low_byte=0;
                  int x_value=0;
                  int y_value=0;
                  int z_value=0;
                  bit read_en=1;
                  bit int_ready=0;
                  
                  
                  #define SELECT_ACCEL()    ADXL_COM_PORT &= ~ACCEL_CS
                  #define UNSELECT_ACCEL()  ADXL_COM_PORT |= ACCEL_CS
                  
                  
                  
                  #define ADXL_COM_DIRECTION  DDRD
                  #define ADXL_COM_PORT    PORTD
                  #define ADXL_COM_PIN    PIND
                  #define ACCEL_CS    (1<<2)    //Port C.0
                  #define ACCEL_SCK    (1<<0)    //Port C.1
                  #define ACCEL_DI    (1<<1)    //Port C.2
                  #define ACCEL_DO    (1<<3)    //Port C.3
                  
                  #define CLOCK_HIGH()  ADXL_COM_PORT |= ACCEL_SCK
                  #define CLOCK_LOW()    ADXL_COM_PORT &= ~ACCEL_SCK
                  
                  //*******************************************************
                  //            ADXL345 Definitions
                  //*******************************************************
                  #define READ  0x8000
                  
                  //ADXL Register Map
                  #define  DEVID      0x00  //Device ID Register
                  #define THRESH_TAP    0x1D  //Tap Threshold
                  #define  OFSX      0x1E  //X-axis offset
                  #define  OFSY      0x1F  //Y-axis offset
                  #define  OFSZ      0x20  //Z-axis offset
                  #define  DUR        0x21  //Tap Duration
                  #define  Latent      0x22  //Tap latency
                  #define  Window      0x23  //Tap window
                  #define  THRESH_ACT    0x24  //Activity Threshold
                  #define  THRESH_INACT  0x25  //Inactivity Threshold
                  #define  TIME_INACT    0x26  //Inactivity Time
                  #define  ACT_INACT_CTL  0x27  //Axis enable control for activity and inactivity detection
                  #define  THRESH_FF    0x28  //free-fall threshold
                  #define  TIME_FF      0x29  //Free-Fall Time
                  #define  TAP_AXES    0x2A  //Axis control for tap/double tap
                  #define ACT_TAP_STATUS  0x2B  //Source of tap/double tap
                  #define  BW_RATE      0x2C  //Data rate and power mode control
                  #define POWER_CTL    0x2D  //Power Control Register
                  #define  INT_ENABLE    0x2E  //Interrupt Enable Control
                  #define  INT_MAP      0x2F  //Interrupt Mapping Control
                  #define  INT_SOURCE    0x30  //Source of interrupts
                  #define  DATA_FORMAT    0x31  //Data format control
                  #define DATAX0      0x32  //X-Axis Data 0
                  #define DATAX1      0x33  //X-Axis Data 1
                  #define DATAY0      0x34  //Y-Axis Data 0
                  #define DATAY1      0x35  //Y-Axis Data 1
                  #define DATAZ0      0x36  //Z-Axis Data 0
                  #define DATAZ1      0x37  //Z-Axis Data 1
                  #define  FIFO_CTL    0x38  //FIFO control
                  #define  FIFO_STATUS    0x39  //FIFO status
                  
                  //Power Control Register Bits
                  #define WU_0    (1<<0)  //Wake Up Mode - Bit 0
                  #define WU_1    (1<<1)  //Wake Up mode - Bit 1
                  #define SLEEP    (1<<2)  //Sleep Mode
                  #define  MEASURE    (1<<3)  //Measurement Mode
                  #define AUTO_SLP  (1<<4)  //Auto Sleep Mode bit
                  #define LINK		(1<<5)	//Link bit
                  
                  //Interrupt Enable/Interrupt Map/Interrupt Source Register Bits
                  #define	OVERRUN		(1<<0)
                  #define	WATERMARK	(1<<1)
                  #define FREE_FALL	(1<<2)
                  #define	INACTIVITY	(1<<3)
                  #define	ACTIVITY	(1<<4)
                  #define DOUBLE_TAP	(1<<5)
                  #define	SINGLE_TAP	(1<<6)
                  #define	DATA_READY	(1<<7)
                  
                  //Data Format Bits
                  #define RANGE_0		(1<<0)
                  #define	RANGE_1		(1<<1)
                  #define JUSTIFY		(1<<2)
                  #define	FULL_RES	(1<<3)
                  
                  #define	INT_INVERT	(1<<5)
                  #define	SPI			(1<<6)
                  #define	SELF_TEST	(1<<7)
                  
                  
                  // 1 Wire Bus interface functions
                  #include <1wire.h>
                  #define MAX_DS1820 8
                  // DS1820 Temperature Sensor functions
                  #include <ds1820.h>
                  
                  // maximum number of DS1820 devices
                  // connected to the 1 Wire bus
                  unsigned char ds1820_rom_codes[MAX_DS1820][9];
                  // number of DS1820 devices
                  // connected to the 1 Wire bus
                  unsigned char ds1820_devices;
                  // DS1820 devices ROM code storage area,
                  // 9 bytes are used for each device
                  // (see the w1_search function description in the help)
                  
                  
                  // Alphanumeric LCD Module functions
                  #include <alcd.h>
                  
                  #ifndef RXB8
                  #define RXB8 1
                  #endif
                  
                  #ifndef TXB8
                  #define TXB8 0
                  #endif
                  
                  #ifndef UPE
                  #define UPE 2
                  #endif
                  
                  #ifndef DOR
                  #define DOR 3
                  #endif
                  
                  #ifndef FE
                  #define FE 4
                  #endif
                  
                  #ifndef UDRE
                  #define UDRE 5
                  #endif
                  
                  #ifndef RXC
                  #define RXC 7
                  #endif
                  
                  #define FRAMING_ERROR (1<<FE)
                  #define PARITY_ERROR (1<<UPE)
                  #define DATA_OVERRUN (1<<DOR)
                  #define DATA_REGISTER_EMPTY (1<<UDRE)
                  #define RX_COMPLETE (1<<RXC)
                  
                  // USART0 Receiver buffer
                  #define RX_BUFFER_SIZE0 8
                  char rx_buffer0[RX_BUFFER_SIZE0];
                  
                  #if RX_BUFFER_SIZE0 <= 256
                  unsigned char rx_wr_index0,rx_rd_index0,rx_counter0;
                  #else
                  unsigned int rx_wr_index0,rx_rd_index0,rx_counter0;
                  #endif
                  
                  // This flag is set on USART0 Receiver buffer overflow
                  bit rx_buffer_overflow0;
                  
                  // USART0 Receiver interrupt service routine
                  interrupt [USART0_RXC] void usart0_rx_isr(void)
                  {
                  char status,data;
                  status=UCSR0A;
                  data=UDR0;
                  if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
                    {
                    rx_buffer0[rx_wr_index0++]=data;
                  #if RX_BUFFER_SIZE0 == 256
                    // special case for receiver buffer size=256
                    if (++rx_counter0 == 0)
                     {
                  #else
                    if (rx_wr_index0 == RX_BUFFER_SIZE0) rx_wr_index0=0;
                    if (++rx_counter0 == RX_BUFFER_SIZE0)
                     {
                     rx_counter0=0;
                  #endif
                     rx_buffer_overflow0=1;
                     }
                    }
                  }
                  
                  #ifndef _DEBUG_TERMINAL_IO_
                  // Get a character from the USART0 Receiver buffer
                  #define _ALTERNATE_GETCHAR_
                  #pragma used+
                  char getchar(void)
                  {
                  char data;
                  while (rx_counter0==0);
                  data=rx_buffer0[rx_rd_index0++];
                  #if RX_BUFFER_SIZE0 != 256
                  if (rx_rd_index0 == RX_BUFFER_SIZE0) rx_rd_index0=0;
                  #endif
                  #asm("cli")
                  --rx_counter0;
                  #asm("sei")
                  return data;
                  }
                  #pragma used-
                  #endif
                  
                  #include <stdio.h>
                  
                  interrupt [TIM0_OVF] void timer0_ovf_isr(void)
                  
                  TCNT0=0x63;
                          disk_timerproc(); 
                  }
                  
                  
                  void main(void)
                  {
                  PORTB=0x00;
                  DDRB=0xF0;
                  PORTF=0x00;
                  DDRF=0x04;
                  
                  ASSR=0x00;
                  TCCR0=0x17;
                  TCNT0=0x63;
                  OCR0=0x00;
                  TCCR1A=0x00;
                  TCCR1B=0x00;
                  TCNT1H=0x00;
                  TCNT1L=0x00;
                  ICR1H=0x00;
                  ICR1L=0x00;
                  OCR1AH=0x00;
                  OCR1AL=0x00;
                  OCR1BH=0x00;
                  OCR1BL=0x00;
                  OCR1CH=0x00;
                  OCR1CL=0x00;
                  TCCR2=0x00;
                  TCNT2=0x00;
                  OCR2=0x00;
                  TCCR3A=0x00;
                  TCCR3B=0x00;
                  TCNT3H=0x00;
                  TCNT3L=0x00;
                  ICR3H=0x00;
                  ICR3L=0x00;
                  OCR3AH=0x00;
                  OCR3AL=0x00;
                  OCR3BH=0x00;
                  OCR3BL=0x00;
                  OCR3CH=0x00;
                  OCR3CL=0x00;
                  EICRA=0x00;
                  EICRB=0x00;
                  EIMSK=0x00;
                  TIMSK=0x01;
                  ETIMSK=0x00;
                  UCSR0A=0x00;
                  UCSR0B=0x98;
                  UCSR0C=0x06;
                  UBRR0H=0x00;
                  UBRR0L=0x33;
                  UCSR1B=0x00;
                  ACSR=0x80;
                  SFIOR=0x00;
                  ADCSRA=0x00;
                  SPCR=0x00;
                  TWCR=0x00;
                  w1_init();
                  ds1820_devices=w1_search(0xf0,ds1820_rom_codes);
                  lcd_init(16);
                  
                  #asm("sei")
                  
                  led_init();
                  
                  adxl345_hw_setup();
                  adxl345_defaults();
                  
                  if(file_count==999)
                    file_count = 0;
                    file_count++; 
                  
                    
                  sprintf(file_path,"0:/MM_%d.csv",file_count); 
                  puts(file_path);
                  PORTF = PORTF | 0b00000100;
                  
                  drive_mount(0);
                  file_create();
                  file_sync();
                  
                  
                     file_write();
                     file_sync();
                     
                     printf("open loop\r\r");
                  
                  LOOP: file_write();
                     file_sync();
                     delay_ms(500);
                     call_adxl();
                  goto LOOP;
                     
                  
                  
                  while (1)
                     {
                     // Place your code here
                  
                     }
                  }

                  دیدگاه


                    #24
                    پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}

                    سلام :mrgreen:
                    آیا سخت از سخت افزار مطمئن هستید، دستور f_mount حتی بدون اینکه سخت افزار کامل باشه خطایی نمیده، در مجله نویز 2 ، جای مقاومت های 1.8 و 3.3 کیلو برای تبدیل سطح ولتاژ باید عوض بشه، من بدون دقت به این موضوع قبلا همین مدار رو بسته بودم که خطای fr_not_ready رو می گرفتم ، شماتیکی که در نویز 2 رسم شده سطح 5 ولت رو به 1.8 تبدیل میکنه، شما به این موضوع توجه کرده اید؟

                    در پایان از آقای مهری عزیز به خاطر مقاله خوبشون قدردانی می کنم. :mrgreen:
                    موفق باشید
                    همیشه بزرگوار تر از آن باشید که برنجید
                    و نجیب تر از آن باشید که برنجانید!

                    دیدگاه


                      #25
                      پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق

                      نوشته اصلی توسط roohipatala
                      من برنامه رو توی AVR Studio شبیه سازی کردم
                      وقتی به دستور f_open میرسم میکرو هنگ میکنه (یعنی میفته توی یه حلقه بینهایت)
                      با AVR Stuodio disassembler کار کردم و دقیقا فهمیدم توی کدوم دستورها گیر می کنه
                      اما نمیدونم باید چیکار کنم؟ (اسمبلیه!!)
                      این دستوریه که گیر میکنه:

                      http://santooristan.persiangig.com/پروژه کارشناسی/f_open.gif

                      کسی میدونه چطور میتونم بفهمم این 3 دستور مربوط به کدوم دستور از برنامه اصلی (زبان C )هست؟
                      فکر می کنم مشکل شما هم همین سخت افزار باشه، اگه برنامه آقای مهری رو دارید اجرا می کنید، برنامه رو به شکل زیر:
                      lcd_clear();
                      if ((res=f_write(&file,path,FA_CREATE_ALWAYS))==F R_OK)
                      lcd_putsf("File opened"
                      else if(res==FR_DENIED)
                      lcd_putsf("Error:fr_denied"
                      else if(res==FR_NOT_READY)
                      lcd_putsf("Error:FR_NOT_READY"
                      else if ...
                      تغییر بدید، ببینید چه خطایی داره میده و متناسب با اون خطا دنبال عیب بگردید. :mrgreen:
                      موفق باشید
                      همیشه بزرگوار تر از آن باشید که برنجید
                      و نجیب تر از آن باشید که برنجانید!

                      دیدگاه


                        #26
                        پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}

                        نوشته اصلی توسط جعفری
                        سلام :mrgreen:
                        آیا سخت از سخت افزار مطمئن هستید، دستور f_mount حتی بدون اینکه سخت افزار کامل باشه خطایی نمیده، در مجله نویز 2 ، جای مقاومت های 1.8 و 3.3 کیلو برای تبدیل سطح ولتاژ باید عوض بشه، من بدون دقت به این موضوع قبلا همین مدار رو بسته بودم که خطای fr_not_ready رو می گرفتم ، شماتیکی که در نویز 2 رسم شده سطح 5 ولت رو به 1.8 تبدیل میکنه، شما به این موضوع توجه کرده اید؟

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

                        دیدگاه


                          #27
                          پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق

                          نوشته اصلی توسط جعفری
                          فکر می کنم مشکل شما هم همین سخت افزار باشه، اگه برنامه آقای مهری رو دارید اجرا می کنید، برنامه رو به شکل زیر:
                          lcd_clear();
                          if ((res=f_write(&file,path,FA_CREATE_ALWAYS))==F R_OK)
                          lcd_putsf("File opened"
                          else if(res==FR_DENIED)
                          lcd_putsf("Error:fr_denied"
                          else if(res==FR_NOT_READY)
                          lcd_putsf("Error:FR_NOT_READY"
                          else if ...
                          تغییر بدید، ببینید چه خطایی داره میده و متناسب با اون خطا دنبال عیب بگردید. :mrgreen:
                          موفق باشید
                          دم شما گرم

                          والا خر ما که از پل گذشت
                          ولی فک کنم اون موقع مشکلم این بود که روی شبیه سازی تکیه می کردم
                          حالا مشکل اصلی این نبود
                          مشکل اصلی اون جا بود که یه قایل معمولی text درست می کردم بعد پسوندش رو می کردم mmc
                          فکر می کردم اینطوری میشه یه ایمیج از مموری کارد
                          بعد این فایل رو میدادم به پروتئوس

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

                          دیدگاه


                            #28
                            پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}

                            نوشته اصلی توسط roohipatala
                            من فایل های با پسوند .h رو کپی کردم توی پوشه inc
                            بعد فایل ff.c رو open کردم و از منوی فایل گزینه convert to library رو زدم و به اسم ff.lib ذخیره کردم.

                            یه برنامه ساده طبق مجله نویز 2 نوشتم
                            کد:
                            #include <mega32.h>
                            #include "ff.h"
                            #include <stdio.h>
                            
                            // Declare your global variables here
                            
                            void main(void)
                            {
                            // Declare your local variables here
                            FRESULT res;
                            FATFS drive;
                            
                            
                            // 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=0x00;
                            
                            // 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=0x00;
                            
                            // 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=FFh
                            // OC0 output: Disconnected
                            TCCR0=0x00;
                            TCNT0=0x00;
                            OCR0=0x00;
                            
                            // Timer/Counter 1 initialization
                            // Clock source: System Clock
                            // Clock value: Timer 1 Stopped
                            // Mode: Normal top=FFFFh
                            // OC1A output: Discon.
                            // OC1B output: Discon.
                            // Noise Canceler: Off
                            // Input Capture on Falling Edge
                            // Timer 1 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: Timer 2 Stopped
                            // Mode: Normal top=FFh
                            // OC2 output: Disconnected
                            ASSR=0x00;
                            TCCR2=0x00;
                            TCNT2=0x00;
                            OCR2=0x00;
                            
                            // External Interrupt(s) initialization
                            // INT0: Off
                            // INT1: Off
                            // INT2: Off
                            MCUCR=0x00;
                            MCUCSR=0x00;
                            
                            // Timer(s)/Counter(s) Interrupt(s) initialization
                            TIMSK=0x00;
                            
                            // Analog Comparator initialization
                            // Analog Comparator: Off
                            // Analog Comparator Input Capture by Timer/Counter 1: Off
                            ACSR=0x80;
                            SFIOR=0x00;
                            
                            
                            
                            
                            
                            
                            if((res=f_mount(0,&drive))==FR_OK)
                               PORTD.0=1;
                               
                            
                            
                            
                            
                            while (1)
                               {
                               // Place your code here
                            
                               };
                            }
                            اما وقتی کامپایل می کنم اشکال میگیره:
                            function f_mount declared, but never defined

                            میشه یکی راهنماییم کنه؟

                            در ضمن توی مجله گفته بودین از project=>configure=>c compiler
                            تب libraries رو انتخاب کنیم
                            واسه من همچین سربرگی نداشت!!!!!!!!!!!!!!!!!!!

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

                            دیدگاه


                              #29
                              پاسخ : مشکل در اضافه کردن کتابخانه ff.h به کدویژن(FAT){طبق مجله نویز 2}

                              سلام خسته نباشید
                              من مشغول طراحی یک سامانه با 8086 هستم و چند تا سوال در رابطه با i/o و اتصال eprom و ram به 8086 دارم.

                              میخواستم اگه میشه من رو راهنمایی کنید

                              دیدگاه

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