اطلاعیه

Collapse
No announcement yet.

[آموزش] نحوه استفاده از کتابخانه pff.h

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

    پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

    سلام
    قبل از هر چیزی بابت این تاپیک کاربردی و جذاب ازتون تشکر میکنم بخصوص دوستان فعال انجمن آقایان آراسته، عباسی، بیرامی و ...
    پست های شما تو تاپیک های دیگه خیلی وقتا بدادم رسید.
    اما غرض از مزاحمت:
    برای یه پروژه نیاز به حافظه جانبی دارم یجور دیتا لاگر که حداقل واسه یه سال روزی چند کیلوبایت ذخیره کنه. اینکه سازگار با FAT یا قابل خوندن تو کامپیوتر باشه چندان ارجحیت نداره ولی خوبه! اول میخواستم از EEPROM استفاده کنم که بابت حجم بالای مورد نیاز به نتیجه نرسیدم.
    الان میخوام از Micro SD استفاده کنم. چند تا ماژول آماده هم گرفتم هم مربوط به SD و هم micro Sd. اول خواستم از این مدل سکتوری استفاده کنم که حجم کمتری از برنامه اشغال کنه تو پروتئوس کار میکرد ولی وقتی مدار بستم دیدم کار نمی کنه! بعد اومدم سراغ این کتابخونه ff و pff و فایل ساختن و اینا ولی بارم کار نکرد! احتمال زیاد گیر سخت افزاری داره یا با این ماژول ها درست کار نمیکنه!
    حالا نمیدونم میکرو SD هام باش سازگار نیستن، یا باید سخت افزار و عوض کنم یا برنامه و.... لطفا یکی بدادم برسه که تا قبل عید باید پروژم تحویل بدم!!!
    ی

    دیدگاه


      پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

      به نظرم شما اول از سخت افزارتون مطمن بشید !!
      اگر میشه پینها رو اهمی چک کنید که اتصالات برقرار باشه بعد همون تابه اینشلایز رو امتحان کنید باید 0 بر گردونه .
      اگه بر نگردونه حتما سخت افراتون مشکل داره .

      دیدگاه


        پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

        دم همتون گرم!
        مشکل سخت افزاری بود، فعلاً از روی فایلی که با رم ریدر تو کارت نوشتم تونستم با میکرو بخونم!
        بعد این مرحله تازه میرسم به غول مرحله بعد: نوشتن ....

        دیدگاه


          پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

          نوشته اصلی توسط داریوش عباسی
          به نظرم شما اول از سخت افزارتون مطمن بشید !!
          اگر میشه پینها رو اهمی چک کنید که اتصالات برقرار باشه بعد همون تابه اینشلایز رو امتحان کنید باید 0 بر گردونه .
          اگه بر نگردونه حتما سخت افراتون مشکل داره .
          جناب عباسی، خیلی ممنون بابت راهنماییتون مشکل اولم حل شد.
          اینطور که من با دنبال کردن این تاپیک فهمیدم تنها کسی که از این کتابخونه pff ناامید نشده شمایید!
          من بشدت با کمبود حافظه مواجهه شدم کمتر از 10 کیلو حافظه برنامه برام باقی مونده و با توجه به محدودیت زمانی فرصت تعویض میکرو (AT32) ندارم!
          بنظرتون برای نوشتن داده بطور تصادفی (یعنی به دلخواه کاربر) در طول روز اونم به حجم 4-5 کیلو بایت در روز برای یک سال، میتونم با همین کتابخونه به جواب برسم؟ کد نمونه ای دارید که کمکم کنید!؟

          دیدگاه


            پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

            در مورد تعداد نمونه ای که در طول سال می گیرید باید عرض کنم که اینها در MICRO SD ذخیره می شوند و تاثیری در حافظه فلش میکرو ندارند ولی در مورد خود فلش میکرو که می فرمایید فقط 10 کیلو باقی مانده اگر کتابخانه را اضافه کردید و کارهای اولیه را انجام دادید فکر نکنم نوشتن بیشتر از 10 کیلو حافظه بخواد ( زیاد مطمن نیستم ) ولی جلو برید ان شااله که کم نمی آورید .
            مثال هم من SAMPLE4 رو در صفحات قبلی گذاشتم و تست هم کرده ام فقط دقت کنید که برای ATMEGA64 هستش و شما تغییرات پایه های SPI رو در نظر داشته باشید

            اگر مشکل دیگری هم بود باز هم در خدمتم .

            دیدگاه


              پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

              با سلام
              اینطور که بوش میاد باید یه سمپل بهتون بدم تا همه مشکلات حل بشه
              با توجه به مشکلاتی که دوستان در پست های قبل مبنی بر مقدارهای اروری هست که تابع pf_write برمیگردونه فکر میکنم مشکلتون از فایل mmc.c باشه
              در فایل زیر یه نمونه برنامه با استفاده از این توابع نوشتم که فقط با یک if ساده در یک فایل txt به نام write.txt کلمه POLESTAR رو 50000 بار مینویسه به این صورت که در هر خط شماره خط هم شامل میشه که هر خط 16 بایت هست در 50000 خط که در کل حدود 800015 بایت و 1562 سکتور هست

              حالا فایل ها و کدهای مهم این برنامه

              mane.c
              کد:
              
              
              #include <io.h>
              #include <delay.h>
              #include <stdio.h>
              
              #include "pff/pff.c" 
              #include "pff/mmc.c"
              #include "pff/diskio.h"
              
              void main(void)
              {
              
              	FATFS	fatfs;
              	WORD	bw,i=0;
              	char	buff[32];
              	
              	do
              	{
              		delay_ms(200);
              	}while(pf_mount(&fatfs));
              	
              	if(!pf_open("write.txt"))
              	{
              		for (i=0; i<=50000; i++)
              		{ 
              			sprintf(buff, "%5u=POLESTAR\n", i);
              			if (pf_write(buff, 16, &bw) || !bw) break;
                  }
                }
                pf_write(0, 0, &bw);
                for (;;);
              }

              mmc.c
              [left]
              کد:
              #define F_CPU			16000000UL
              
              #include <io.h>
              #include <delay.h>
              
              #include "pff.h"
              #include "diskio.h"
              
              #define _BV(pin)        (1<<(pin))
              #define sbi(sfr,pin)			(sfr |= _BV(pin))
              #define cbi(sfr,pin)			(sfr &= ~_BV(pin))
              
              #define bis(sfr, bit)			(sfr & _BV(bit))
              #define bic(sfr, bit)			(!(sfr & _BV(bit)))
              #define lbis(sfr, bit)			do { } while (bic(sfr, bit))
              #define lbic(sfr, bit)			do { } while (bis(sfr, bit))
              
              #define SCK_DDR     DDRB
              #define SCK_PRT     PORTB
              #define SCK_BIT     7
              
              #define MOSI_DDR    DDRB
              #define MOSI_PRT    PORTB
              #define MOSI_BIT    5
              
              #define MISO_DDR    DDRB
              #define MISO_PRT    PORTB
              #define MISO_BIT    6
              
              #define SD_CS_DDR    DDRB
              #define SD_CS_PRT    PORTB
              #define SD_CS_BIT    4
              
              #define SD_DE_DDR    DDRB
              #define SD_DE_PRT    PORTB
              #define SD_DE_PIN    PINB
              #define SD_DE_BIT    3
              
              
              #define FCLK_SLOW()   SPCR = _BV(SPE)|_BV(MSTR)|_BV(SPR1);  /* Set slow clock (100k-400k) */
              #define FCLK_FAST()   SPCR = _BV(SPE)|_BV(MSTR);       /* Set fast clock (depends on the CSD) */
              
              #define CS_LOW()    cbi(SD_CS_PRT,SD_CS_BIT)       /* MMC CS = L */
              #define CS_HIGH()    sbi(SD_CS_PRT,SD_CS_BIT)       /* MMC CS = H */
              
              #define SELECT()		CS_LOW()			/* CS = L */
              #define	DESELECT()		CS_HIGH()			/* CS = H */
              #define	MMC_SEL			!(PORTB & _BV(3))	/* CS status (true:CS == L) */
              
              void xmit_spi(BYTE dat)   
              {
              	SPDR = (dat); 
              	lbis(SPSR,SPIF);
              }
              
              BYTE rcv_spi (void)
              {
              	SPDR = 0xFF;
              	lbis(SPSR, SPIF);
              	return SPDR;
              }
              
              /*-----------------------------------------------------------------------*/
              /* SPI interace                             */
              /*-----------------------------------------------------------------------*/
              static
              void init_spi (void)
              {
              	sbi(SD_CS_PRT,SD_CS_BIT);
              	cbi(SCK_PRT,SCK_BIT);
              	sbi(MOSI_PRT,MOSI_BIT);
              	cbi(MISO_PRT,MISO_BIT);
              	sbi(SD_DE_PRT,SD_DE_BIT);
              
              	sbi(SD_CS_DDR,SD_CS_BIT);
              	sbi(SCK_DDR,SCK_BIT);
              	sbi(MOSI_DDR,MOSI_BIT);
              	cbi(MISO_DDR,MISO_BIT);
              	cbi(SD_DE_DDR,SD_DE_BIT);
              }
              
              /*--------------------------------------------------------------------------
              
                Module Private Functions
              
              ---------------------------------------------------------------------------*/
              
              /* Definitions for MMC/SDC command */
              #define CMD0	(0x40+0)	/* GO_IDLE_STATE */
              #define CMD1	(0x40+1)	/* SEND_OP_COND (MMC) */
              #define	ACMD41	(0xC0+41)	/* SEND_OP_COND (SDC) */
              #define CMD8	(0x40+8)	/* SEND_IF_COND */
              #define CMD16	(0x40+16)	/* SET_BLOCKLEN */
              #define CMD17	(0x40+17)	/* READ_SINGLE_BLOCK */
              #define CMD24	(0x40+24)	/* WRITE_BLOCK */
              #define CMD55	(0x40+55)	/* APP_CMD */
              #define CMD58	(0x40+58)	/* READ_OCR */
              
              
              /* Card type flags (CardType) */
              #define CT_MMC				0x01	/* MMC ver 3 */
              #define CT_SD1				0x02	/* SD ver 1 */
              #define CT_SD2				0x04	/* SD ver 2 */
              #define CT_BLOCK			0x08	/* Block addressing */
              
              
              static
              BYTE CardType;
              
              
              /*-----------------------------------------------------------------------*/
              /* Send a command packet to MMC                     */
              /*-----------------------------------------------------------------------*/
              
              static
              BYTE send_cmd (
              	BYTE cmd,		/* 1st byte (Start + Index) */
              	DWORD arg		/* Argument (32 bits) */
              )
              {
              	BYTE n, res;
              
              
              	if (cmd & 0x80) {	/* ACMD<n> is the command sequense of CMD55-CMD<n> */
              		cmd &= 0x7F;
              		res = send_cmd(CMD55, 0);
              		if (res > 1) return res;
              	}
              
              	/* Select the card */
              	DESELECT();
              	rcv_spi();
              	SELECT();
              	rcv_spi();
              
              	/* Send a command packet */
              	xmit_spi(cmd);						/* Start + Command index */
              	xmit_spi((BYTE)(arg >> 24));		/* Argument[31..24] */
              	xmit_spi((BYTE)(arg >> 16));		/* Argument[23..16] */
              	xmit_spi((BYTE)(arg >> 8));			/* A
              تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
              به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

              دیدگاه


                پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                با سلام
                اینطور که بوش میاد باید یه سمپل بهتون بدم تا همه مشکلات حل بشه
                با توجه به مشکلاتی که دوستان در پست های قبل مبنی بر مقدارهای اروری هست که تابع pf_write برمیگردونه فکر میکنم مشکلتون از فایل mmc.c باشه
                در فایل زیر یه نمونه برنامه با استفاده از این توابع نوشتم که فقط با یک if ساده در یک فایل txt به نام write.txt کلمه POLESTAR رو 50000 بار مینویسه به این صورت که در هر خط شماره خط هم شامل میشه که هر خط 16 بایت هست در 50000 خط که در کل حدود 800015 بایت و 1562 سکتور هست

                حالا فایل ها و کدهای مهم این برنامه

                mane.c
                کد:
                
                
                #include <io.h>
                #include <delay.h>
                #include <stdio.h>
                
                #include "pff/pff.c" 
                #include "pff/mmc.c"
                #include "pff/diskio.h"
                
                void main(void)
                {
                
                	FATFS	fatfs;
                	WORD	bw,i=0;
                	char	buff[32];
                	
                	do
                	{
                		delay_ms(200);
                	}while(pf_mount(&fatfs));
                	
                	if(!pf_open("write.txt"))
                	{
                		for (i=0; i<=50000; i++)
                		{ 
                			sprintf(buff, "%5u=POLESTAR\n", i);
                			if (pf_write(buff, 16, &bw) || !bw) break;
                    }
                  }
                  pf_write(0, 0, &bw);
                  for (;;);
                }

                mmc.c
                [left]
                کد:
                #define F_CPU			16000000UL
                
                #include <io.h>
                #include <delay.h>
                
                #include "pff.h"
                #include "diskio.h"
                
                #define _BV(pin)        (1<<(pin))
                #define sbi(sfr,pin)			(sfr |= _BV(pin))
                #define cbi(sfr,pin)			(sfr &= ~_BV(pin))
                
                #define bis(sfr, bit)			(sfr & _BV(bit))
                #define bic(sfr, bit)			(!(sfr & _BV(bit)))
                #define lbis(sfr, bit)			do { } while (bic(sfr, bit))
                #define lbic(sfr, bit)			do { } while (bis(sfr, bit))
                
                #define SCK_DDR     DDRB
                #define SCK_PRT     PORTB
                #define SCK_BIT     7
                
                #define MOSI_DDR    DDRB
                #define MOSI_PRT    PORTB
                #define MOSI_BIT    5
                
                #define MISO_DDR    DDRB
                #define MISO_PRT    PORTB
                #define MISO_BIT    6
                
                #define SD_CS_DDR    DDRB
                #define SD_CS_PRT    PORTB
                #define SD_CS_BIT    4
                
                #define SD_DE_DDR    DDRB
                #define SD_DE_PRT    PORTB
                #define SD_DE_PIN    PINB
                #define SD_DE_BIT    3
                
                
                #define FCLK_SLOW()   SPCR = _BV(SPE)|_BV(MSTR)|_BV(SPR1);  /* Set slow clock (100k-400k) */
                #define FCLK_FAST()   SPCR = _BV(SPE)|_BV(MSTR);       /* Set fast clock (depends on the CSD) */
                
                #define CS_LOW()    cbi(SD_CS_PRT,SD_CS_BIT)       /* MMC CS = L */
                #define CS_HIGH()    sbi(SD_CS_PRT,SD_CS_BIT)       /* MMC CS = H */
                
                #define SELECT()		CS_LOW()			/* CS = L */
                #define	DESELECT()		CS_HIGH()			/* CS = H */
                #define	MMC_SEL			!(PORTB & _BV(3))	/* CS status (true:CS == L) */
                
                void xmit_spi(BYTE dat)   
                {
                	SPDR = (dat); 
                	lbis(SPSR,SPIF);
                }
                
                BYTE rcv_spi (void)
                {
                	SPDR = 0xFF;
                	lbis(SPSR, SPIF);
                	return SPDR;
                }
                
                /*-----------------------------------------------------------------------*/
                /* SPI interace                             */
                /*-----------------------------------------------------------------------*/
                static
                void init_spi (void)
                {
                	sbi(SD_CS_PRT,SD_CS_BIT);
                	cbi(SCK_PRT,SCK_BIT);
                	sbi(MOSI_PRT,MOSI_BIT);
                	cbi(MISO_PRT,MISO_BIT);
                	sbi(SD_DE_PRT,SD_DE_BIT);
                
                	sbi(SD_CS_DDR,SD_CS_BIT);
                	sbi(SCK_DDR,SCK_BIT);
                	sbi(MOSI_DDR,MOSI_BIT);
                	cbi(MISO_DDR,MISO_BIT);
                	cbi(SD_DE_DDR,SD_DE_BIT);
                }
                
                /*--------------------------------------------------------------------------
                
                  Module Private Functions
                
                ---------------------------------------------------------------------------*/
                
                /* Definitions for MMC/SDC command */
                #define CMD0	(0x40+0)	/* GO_IDLE_STATE */
                #define CMD1
                تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
                به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

                دیدگاه


                  پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                  نوشته اصلی توسط POLESTAR
                  با سلام
                  اینطور که بوش میاد باید یه سمپل بهتون بدم تا همه مشکلات حل بشه
                  با توجه به مشکلاتی که دوستان در پست های قبل مبنی بر مقدارهای اروری هست که تابع pf_write برمیگردونه فکر میکنم مشکلتون از فایل mmc.c باشه
                  در فایل زیر یه نمونه برنامه با استفاده از این توابع نوشتم که فقط با یک if ساده در یک فایل txt به نام write.txt کلمه POLESTAR رو 50000 بار مینویسه به این صورت که در هر خط شماره خط هم شامل میشه که هر خط 16 بایت هست در 50000 خط که در کل حدود 800015 بایت و 1562 سکتور هست

                  حالا فایل ها و کدهای مهم این برنامه

                  mane.c
                  کد:
                  
                  
                  #include <io.h>
                  #include <delay.h>
                  #include <stdio.h>
                  
                  #include "pff/pff.c" 
                  #include "pff/mmc.c"
                  #include "pff/diskio.h"
                  
                  void main(void)
                  {
                  
                  	FATFS	fatfs;
                  	WORD	bw,i=0;
                  	char	buff[32];
                  	
                  	do
                  	{
                  		delay_ms(200);
                  	}while(pf_mount(&fatfs));
                  	
                  	if(!pf_open("write.txt"))
                  	{
                  		for (i=0; i<=50000; i++)
                  		{ 
                  			sprintf(buff, "%5u=POLESTAR\n", i);
                  			if (pf_write(buff, 16, &bw) || !bw) break;
                      }
                    }
                    pf_write(0, 0, &bw);
                    for (;;);
                  }

                  mmc.c
                  [left]
                  کد:
                  #define F_CPU			16000000UL
                  
                  #include <io.h>
                  #include <delay.h>
                  
                  #include "pff.h"
                  #include "diskio.h"
                  
                  #define _BV(pin)        (1<<(pin))
                  #define sbi(sfr,pin)			(sfr |= _BV(pin))
                  #define cbi(sfr,pin)			(sfr &= ~_BV(pin))
                  
                  #define bis(sfr, bit)			(sfr & _BV(bit))
                  #define bic(sfr, bit)			(!(sfr & _BV(bit)))
                  #define lbis(sfr, bit)			do { } while (bic(sfr, bit))
                  #define lbic(sfr, bit)			do { } while (bis(sfr, bit))
                  
                  #define SCK_DDR     DDRB
                  #define SCK_PRT     PORTB
                  #define SCK_BIT     7
                  
                  #define MOSI_DDR    DDRB
                  #define MOSI_PRT    PORTB
                  #define MOSI_BIT    5
                  
                  #define MISO_DDR    DDRB
                  #define MISO_PRT    PORTB
                  #define MISO_BIT    6
                  
                  #define SD_CS_DDR    DDRB
                  #define SD_CS_PRT    PORTB
                  #define SD_CS_BIT    4
                  
                  #define SD_DE_DDR    DDRB
                  #define SD_DE_PRT    PORTB
                  #define SD_DE_PIN    PINB
                  #define SD_DE_BIT    3
                  
                  
                  #define FCLK_SLOW()   SPCR = _BV(SPE)|_BV(MSTR)|_BV(SPR1);  /* Set slow clock (100k-400k) */
                  #define FCLK_FAST()   SPCR = _BV(SPE)|_BV(MSTR);       /* Set fast clock (depends on the CSD) */
                  
                  #define CS_LOW()    cbi(SD_CS_PRT,SD_CS_BIT)       /* MMC CS = L */
                  #define CS_HIGH()    sbi(SD_CS_PRT,SD_CS_BIT)       /* MMC CS = H */
                  
                  #define SELECT()		CS_LOW()			/* CS = L */
                  #define	DESELECT()		CS_HIGH()			/* CS = H */
                  #define	MMC_SEL			!(PORTB & _BV(3))	/* CS status (true:CS == L) */
                  
                  void xmit_spi(BYTE dat)   
                  {
                  	SPDR = (dat); 
                  	lbis(SPSR,SPIF);
                  }
                  
                  BYTE rcv_spi (void)
                  {
                  	SPDR = 0xFF;
                  	lbis(SPSR, SPIF);
                  	return SPDR;
                  }
                  
                  /*-----------------------------------------------------------------------*/
                  /* SPI interace                             */
                  /*-----------------------------------------------------------------------*/
                  static
                  void init_spi (void)
                  {
                  	sbi(SD_CS_PRT,SD_CS_BIT);
                  	cbi(SCK_PRT,SCK_BIT);
                  	sbi(MOSI_PRT,MOSI_BIT);
                  	cbi(MISO_PRT,MISO_BIT);
                  	sbi(SD_DE_PRT,SD_DE_BIT);
                  
                  	sbi(SD_CS_DDR,SD_CS_BIT);
                  	sbi(SCK_DDR,SCK_BIT);
                  	sbi(MOSI_DDR,MOSI_BIT);
                  	cbi(MISO_DDR,MISO_BIT);
                  	cbi(SD_DE_DDR,SD_DE_BIT);
                  }
                  
                  /*--------------------------------------------------------------------------
                  
                    Module Private Functions
                  
                  ---------------------------------------------------------------------------*/
                  
                  /* Definitions for MMC/SDC command */
                  #define CMD0	(0x40+0)	/* GO_IDLE_STATE */
                  #define CMD1
                  ممنون آقای اسدی عزیز
                  ولی چنتا سوال
                  1 - توی این خط برنامه
                  کد:
                  if (pf_write(buff, 16, &bw) || !bw) break;
                  نباید پشت buff علامت & رو بذاریم؟!!! ( البته کار میکنه ولی بازهم فقط 512 بایت مینویسه)

                  2 - منظورتونو از مشکل از mmc.c متوجه نشدم یعنی فایلی که این دوست ژاپنیه گذاشته مشکل داره؟!!
                  شما میشه فایل mmc.c خودتون یا بهتر بگم پوشه pff که همه این فایل ها داخلشه برامون قرار بدید؟!!!

                  3 - این کد آخری که نوشتید mmc.c چی هست دقیقا؟!!!
                  من با mmc.c داشتم مقایسه کردم کلا فرق دارن با هم ، داستان این چییه دقیقا؟!!
                  باید به فایلمون اضافش کنیم یا باید چیکارش کنیم؟؟؟؟!!!!!
                  میشه بیشتر توضیخ بدید برامون این نوشتنه راه بیفته گیر کردیم بخدا
                  آقا این کل فایل هایی که دارم میذارم شما ببینید
                  POLESTAR Write
                  دیگه باور کنید نمیدونم مشکل از کجاست
                  ( البته فایل mmc.c قبلی خودمو اینکلود کردم )
                  اگه زحمتتون نیست ببینید کجاش مشکل داره و مشکلشو دقیق تر بگید و بفرمایید چطور میشه رفعش کرد
                  الان این برنامه هم 512 بایت مینویسه و از for میاد بیرون
                  باز هم ممنون
                  درایور شبکه و nRF24L01
                  کاتالوگ محصولات
                  کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                  شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                  فروش اسیلوسکوپ GWinstek GOS-630FC

                  دیدگاه


                    پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                    نوشته اصلی توسط بسطام بیرامی
                    ممنون آقای اسدی عزیز
                    ولی چنتا سوال
                    1 - توی این خط برنامه
                    کد:
                    if (pf_write(buff, 16, &bw) || !bw) break;
                    نباید پشت buff علامت & رو بذاریم؟!!! ( البته کار میکنه ولی بازهم فقط 512 بایت مینویسه)

                    2 - منظورتونو از مشکل از mmc.c متوجه نشدم یعنی فایلی که این دوست ژاپنیه گذاشته مشکل داره؟!!
                    شما میشه فایل mmc.c خودتون یا بهتر بگم پوشه pff که همه این فایل ها داخلشه برامون قرار بدید؟!!!

                    3 - این کد آخری که نوشتید mmc.c چی هست دقیقا؟!!!
                    من با mmc.c داشتم مقایسه کردم کلا فرق دارن با هم ، داستان این چییه دقیقا؟!!
                    باید به فایلمون اضافش کنیم یا باید چیکارش کنیم؟؟؟؟!!!!!
                    میشه بیشتر توضیخ بدید برامون این نوشتنه راه بیفته گیر کردیم بخدا
                    آقا این کل فایل هایی که دارم میذارم شما ببینید
                    POLESTAR Write
                    دیگه باور کنید نمیدونم مشکل از کجاست
                    ( البته فایل mmc.c قبلی خودمو اینکلود کردم )
                    اگه زحمتتون نیست ببینید کجاش مشکل داره و مشکلشو دقیق تر بگید و بفرمایید چطور میشه رفعش کرد
                    الان این برنامه هم 512 بایت مینویسه و از for میاد بیرون
                    باز هم ممنون
                    شرمنده دیشب هر کاری کردم نتونستم کل برنامرو اپلود کنم این اینترنت با اونترنت دعواشون شده بود
                    در ادامه این پستهارو قرار داده بودم که نصفه ذخیره شده ولی نمیدونم چرا دو تا شدن به هر حال چشم
                    اقای بیرامی عزیز این فایل mmc.c رو جایگزین اونی که دارید بکنید
                    بنده امکان تست برنامه شمارو ندارم ولی پروژه کدویژنی رو که برای تست اماده کردم رو در ختیارتون قرار میدم که میتونید از اینجا دانلود کنید

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

                    دیدگاه


                      پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                      نوشته اصلی توسط POLESTAR
                      شرمنده دیشب هر کاری کردم نتونستم کل برنامرو اپلود کنم این اینترنت با اونترنت دعواشون شده بود
                      در ادامه این پستهارو قرار داده بودم که نصفه ذخیره شده ولی نمیدونم چرا دو تا شدن به هر حال چشم
                      اقای بیرامی عزیز این فایل mmc.c رو جایگزین اونی که دارید بکنید
                      بنده امکان تست برنامه شمارو ندارم ولی پروژه کدویژنی رو که برای تست اماده کردم رو در ختیارتون قرار میدم که میتونید از اینجا دانلود کنید

                      امیدوارم مفید باشه و مشکلتون حل بشه که اگر بود بندرو هم دعا کنید
                      به همین سادگی :nice:
                      آقا ما دعاگوی شما هستیم شدید
                      برنامه رو هم تست کردم مینویسه ولی باز هم 2Kbyte که میشه میاد بیرون
                      بهتر شد ولی نه کاملا
                      تا اینجا نوشته :
                      کد:
                        0=POLESTAR
                        1=POLESTAR
                        2=POLESTAR
                      ...
                      132=POLESTAR
                       133=POLESTAR
                       134=POLESTAR
                       135=POLESTAR
                       136=PO
                      آخرین خطش 136 هست و فقط PO رو مینویسه و باز میاد بیرون از for :sad:
                      درایور شبکه و nRF24L01
                      کاتالوگ محصولات
                      کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                      شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                      فروش اسیلوسکوپ GWinstek GOS-630FC

                      دیدگاه


                        پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                        :applause: :applause: :applause:
                        :wow: :wow: :wow: :wow:
                        شد شد
                        آقا دستت درد نکنه الان شد
                        ولی دقیقا همون پروژه شما رو کامپایل کردم شد
                        نمیدونید مشکل کار ما چی بوده؟!!!!
                        فکنم هرچی هست توی mmc.c و اون فایلهایی هست که شما Include کردید
                        آخه برنامتون 4 خط بیشتر نیست
                        ولی باز هم ممنون می افتم توش تا همه چیزشو در بیارم
                        الان تا 50000 نوشته :biggrin:

                        مرررررررررسیییییییییییییییییی
                        درایور شبکه و nRF24L01
                        کاتالوگ محصولات
                        کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                        شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                        فروش اسیلوسکوپ GWinstek GOS-630FC

                        دیدگاه


                          پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                          با تشکر از آقای اسدی عزیز که لطف کردن و مشکل اصلی در نوشتن رو برطرف کردن!
                          اما هنوز من با سه مسئله اساسی مواجه هستم:

                          1- همچنان این برنامه با توجه به کوچک تر شدن، حجم قابل توجه ای رو اشغال میکنه حدود 7 کیلو که فکر کنم مجبور شم میکرو رو عوض کنم مگر اینکه بشه یسری از توابع و دستورات غیر ضروری رو حذف کرد، مثلاً این _CODE_PAGE های ژاپنی و چینی و کره ای ... رو میشه حذف کرد؟ اصلاً با توجه به اینکه فراخوانی نمیشن آیا باز هم تاثیری در برنامه و یا اشغال حافظه فلش دارند؟

                          2- امکان ایجاد فایل توسط خود این کتابخونه وجود نداره؟
                          تو این نمونه برنامه جناب اسدی و سمپل های قبلی هم حتماً باید فایل رو قبلا توسط کامپیوتر ایجاد کنیم و از اون مهمتر به اندازه حجم مورد نیاز برای نوشتن توش کاراکتر چاپ کنیم- مثلا کلی space بزنیم- که چندان جالب نیست! یعنی تو مواقعی که نمیشه حدس زد که چقدر ممکنه تو طول سال اطلاعات ذخیره شه ( مثلا به دلخواه کاربر باشه نه اتوماتیک) ممکنه دچار مشکل شیم!

                          3- چطور میشه تو فایلی که ایجاد و اطلاعات توش ذخیره شده توسط خود میکرو و با همین توابع ازش بخونی و یه داده خاص رو نمایش بدی؟
                          برای مثال تو این برنامه بگی id 17 چه داده ای توش ذخیرس ( البته فرض کنید که دیگه جلو همه id ها یچیز ننوشته) طوری که مجبور نباشی کل فایل رو از ابتدا سرچ کامل کنی.

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

                          دیدگاه


                            پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                            نوشته اصلی توسط alid
                            با تشکر از آقای اسدی عزیز که لطف کردن و مشکل اصلی در نوشتن رو برطرف کردن!
                            اما هنوز من با سه مسئله اساسی مواجه هستم:

                            1- همچنان این برنامه با توجه به کوچک تر شدن، حجم قابل توجه ای رو اشغال میکنه حدود 7 کیلو که فکر کنم مجبور شم میکرو رو عوض کنم مگر اینکه بشه یسری از توابع و دستورات غیر ضروری رو حذف کرد، مثلاً این _CODE_PAGE های ژاپنی و چینی و کره ای ... رو میشه حذف کرد؟ اصلاً با توجه به اینکه فراخوانی نمیشن آیا باز هم تاثیری در برنامه و یا اشغال حافظه فلش دارند؟

                            2- امکان ایجاد فایل توسط خود این کتابخونه وجود نداره؟
                            تو این نمونه برنامه جناب اسدی و سمپل های قبلی هم حتماً باید فایل رو قبلا توسط کامپیوتر ایجاد کنیم و از اون مهمتر به اندازه حجم مورد نیاز برای نوشتن توش کاراکتر چاپ کنیم- مثلا کلی space بزنیم- که چندان جالب نیست! یعنی تو مواقعی که نمیشه حدس زد که چقدر ممکنه تو طول سال اطلاعات ذخیره شه ( مثلا به دلخواه کاربر باشه نه اتوماتیک) ممکنه دچار مشکل شیم!

                            3- چطور میشه تو فایلی که ایجاد و اطلاعات توش ذخیره شده توسط خود میکرو و با همین توابع ازش بخونی و یه داده خاص رو نمایش بدی؟
                            برای مثال تو این برنامه بگی id 17 چه داده ای توش ذخیرس ( البته فرض کنید که دیگه جلو همه id ها یچیز ننوشته) طوری که مجبور نباشی کل فایل رو از ابتدا سرچ کامل کنی.

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

                            1 - در صورتی که CODE_PAGE = 0_ باشه هیچ کدومش.ن به برنامه اضافه نمیشه و در کد و حجم فلش تاثیری نداره در ضمن این کم حجم ترین توابع برای خوندن و نوشتن فت هست
                            2 - قبلا هم عرض کردم خیر امکان ایجاد فایل و تغییر سایز فایل رو نداره
                            3 - بهترین راه اینه که با یک فرمت خاص دیتا ذخیره بشه مثلا اگر قراره بیشترین دیتای هر ID شما 32 بایت باشه مقدار دیتای هر ID رو حتی اگر کمتر هم باش 32 در نظر بگیرید تا با یک ضرب ساده به موقعیت دیتا پرش کنید و از اونجا به بعد رو بخونید

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

                            دیدگاه


                              پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                              با تشکر از آقای اسدی بابت راهنمایی های ازرشمندشون
                              یه ماژول دیگه تو پروژم دارم که اونم از پروتکل SPI استفاده میکنه واسه همین وقتی همراه SD کارت قرار میدم باعث conflict میشه. پایه ِCS رو تو هرکدوم که تغییر میدم کلاً کار نمیکنه! البته همزمان تو کد هم میزارمش مثلاً PORTB.3 ولی انگار فقط با PORTB.4 سازگارن!
                              ممنون میشم اگه لطف کنید راهنماییم بفرمایید که چطور این مشکل برطرف کنم.

                              دیدگاه


                                پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                                سلام سلام
                                آقا دست همه درد نکنه مخصوصا آقای اسدی عزیز
                                من بردی رو برای تست بستم و تا 20 هزار نمونه دما رو در شبانه روز برام ذخیره کرد و عالی کار کرد
                                فقط یه مشکل نسبتا بزرگ هست که خط آخر برنامه
                                کد:
                                pf_write(0, 0, &bw);
                                اگر اجرا نشه کلا هیچی Save نمیشه
                                مثلا مدار یک روز کار کرده و 15 هزار نمونه را گرفته برق قطع شه دیگه هیچی روی SD نیست و کلا همه پر پر
                                گفتم بعد از هر نمونه بیام و این خطو
                                کد:
                                pf_write(0, 0, &bw);
                                بنویسم که هر نمونه رو گرفت ذخیره کنه و بعد بره سراغ نمونه بعدی و ...
                                اما اینطوری هم فقط آخرین نمونه ذخیره میشه
                                میدونید مشکل چییه؟ و چطور میشه این قضیه رو برطرف کرد؟!!!!
                                درایور شبکه و nRF24L01
                                کاتالوگ محصولات
                                کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                                شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                                فروش اسیلوسکوپ GWinstek GOS-630FC

                                دیدگاه

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