اطلاعیه

Collapse
No announcement yet.

کتابخانه ff.h در Codevision

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

    کتابخانه ff.h در Codevision

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

    خب من از 0 شروع میکنم به پرسیدن
    تا اینجای کار من فایل های زیر رو دانلود کردم :
    1 - http://elm-chan.org/fsw/ff/ff10a.zip
    در این لینک تمامی فایل های مورد نیاز کتابخانه ff.h می باشد
    2 - http://elm-chan.org/fsw/ff/ffsample.zip
    در این لینک نمونه مثال هایی هست که آقای چان جان قرار دادن
    در این فایل پوشه <avr_complex> وجود دارد که برای پلتفرم Atmel AVR multiple drive (ATmega64) نوشته شده

    منبع : فایل 00readme.txt موجود در لینک ffsample.zip

    خب تا اینجا هرچی فایل نیاز بود رو دانلود کردیم
    یه پوشه برای پروژه ایجاد میکنیم AT128 MMC prj و داخل آن پوشه دیگری به اسم FF_Lib میسازیم
    فایل هایی که در پوشه scr داخل ff10a.zip است را طبق گفته آقای اسدی عزیز :

    diskio.c
    diskio.h
    ff.c
    ff.h
    ffconf.h
    integer.h
    داخل پوشه FF_Lib کپی میکنیم
    حالا میمونه یک فایل دیگه که ارتباط میکرو با MMC و تنظیمات SPI داخل آن است
    آقای اسدی فرمودند از mmc_avr.c میتوان استفاده کرد ( که فعلا طبق گفته ایشون پیش میریم تا بعدا سوالاتی رو راجع به این فایل بپرسم )
    الان چیزایی داریم اینطوری شد :


    حالا Codevision رو باز میکنیم و یه پروژه برای ATMega128A میسازیم که فقط Char LCD برای اون فعال شده :
    کریستال 8 مگ داخلی ( فعلا برای تست )

    تنظیمات LCD 2*16
    کد:
    // Alphanumeric LCD initialization
    // Connections are specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTA Bit 0
    // RD - PORTA Bit 1
    // EN - PORTA Bit 2
    // D4 - PORTA Bit 4
    // D5 - PORTA Bit 5
    // D6 - PORTA Bit 6
    // D7 - PORTA Bit 7
    // Characters/line: 16
    خب همه نوشته های main.c رو پاک میکنیم تا فقط اینا بمونه :

    کد:
    /*****************************************************
    Project : AT128 MMC Prj
    Version : 
    Date  : 4/10/2014
    Author : HoaXB0Y
    Company : HoaXB0Y
    Comments: 
    
    Chip type        : ATmega128A
    Program type      : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model      : Small
    External RAM size    : 0
    Data Stack size     : 1024
    *****************************************************/
    
    #include <mega128a.h>
    #include <alcd.h>
    
    
    void main(void)
    {
    
    lcd_init(16);
    
    while (1)
       {
       // Place your code here
    
       }
    }
    خب تا اینجا هم که مشکلی نیست
    الان میمونه چه فایل هایی از پوشه FF_Lib رو باید اول برنامه Include کنیم؟!!
    و چه تغییراتی رو انجام بدیم تا بتونیم یه SD رو Init کنیم؟!!

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

    #2
    پاسخ : کتابخانه ff.h در Codevision

    با سلام مجدد

    چون ما هیچ تغییری در سخت افزار ندادیم پس پینها و روش اتصال مموری به میکرو همونی هست که اقای چان انجام دادن
    یعنی فایل avr_mmc.png در پوشه avr_complex

    حالا اول فایل mmc_avr.c رو در main انکلود کنید
    سپس در فایل فوق انکلود avr/io.h رو به io.h تغییر بدید یعنی"/avr" رو حذف کنید و بعد این دیفاین ها رو اظافه کنید


    کد:
    #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 loop_until_bit_is_set(sfr, bit)			  do { } while (bic(sfr, bit))
    #define loop_until_bit_is_reset(sfr, bit)			do { } while (bis(sfr, bit))

    حتما از فایل diskio.h داخل پوشه avr_complex استفاده کنید نه اونی که داخل پوشه src هست
    تا اینجا اگه کامپایل کنید نباید اروری باشه

    حالا به ابتدای main فایل ff.c رو انکلود کنید
    بعد باید تابع get_fattime رو به main اضافه کنیم
    اگر RTC ندارید باید مقادیر زمان رو دستی جایگزین کنید در غیر اینصورت مقدار زمان واقعی رو بدید
    به این صورت


    کد:
    DWORD get_fattime (void)
    {
    	/* Returns current time packed into a DWORD variable */
    	return	 ((DWORD)(2014 - 1980) << 25)	/* Year 2014 */
    			| ((DWORD)4 << 21)				/* Month 4 */
    			| ((DWORD)10<< 16)				/* Mday 10 */
    			| ((DWORD)0 << 11)				/* Hour 0 */
    			| ((DWORD)0 << 5)				/* Min 0 */
    			| ((DWORD)0 >> 1);				/* Sec 0 */
    }

    حالا اگر باز کامپایل کنید نباید اروری داشته باشید

    حالا دوتا متغیر سراسری تعریف میکنیم یکی از نوع FATFS با نام fs برای مشخصات فت و دیگری از نوع FIL با نام fl برای مشخصات فایل
    قبلا یه سوالی در مورد اینکه چرا نمیشه متغیر FATFS رو به نام FatFs تعریف کرد پرسیده بودید این برای اینکه کدویژن ما چون این لایبری رو به صورت پیشفرض توی خودش داره این متغیر رو خودش تعریف کرده لذا از کلمات رزرو شده کدویژن هست.
    بعد دو متغیر در داخل main تعریف میکنیم از نوع UINT با نام br برای دیتای خونده شده و دیگری bw برای دیتای نوشته شده و یکی دیگه از نوع FRESULT برای دریافت خروجیهای توابع یعنی ارور ها با نام res

    و بعد اولین تابعمونو برای mount و initial دیسک فراخانی میکنیم و مساوی متغر res قرار میدیم
    یعنی اینشکلی

    ;(res = f_mount(&fs, "", 0

    حالا باید فایل main شما اینشکلی باشه


    کد:
    #include <io.h>
    #include <alcd.h>
    
    #include "ff_lib/mmc_avr.c"
    #include "ff_lib/ff.c"
    
    FATFS fs;
    FIL fl;
    
    DWORD get_fattime (void)
    {
      /* Returns current time packed into a DWORD variable */
      return   ((DWORD)(2014 - 1980) << 25)  /* Year 2014 */
          | ((DWORD)4 << 21)        /* Month 4 */
          | ((DWORD)10<< 16)        /* Mday 10 */
          | ((DWORD)0 << 11)				/* Hour 0 */
    			| ((DWORD)0 << 5)				/* Min 0 */
    			| ((DWORD)0 >> 1);				/* Sec 0 */
    }
    
    void main(void)
    {
    UINT br,bw;
    FRESULT res;
    
    lcd_init(16);
    
    while (1)
       {
       res = f_mount(&fs, "", 0);
        
        
       }
    }

    در ضمن چون توی تابع f_mount تابع disk_initialize وجود داره دیگه به فراخانی این تابع نیازی نیست.
    حالا توابع دیگرو به برنامه اضافه کنید و لذت ببرید.

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

    دیدگاه


      #3
      پاسخ : کتابخانه ff.h در Codevision

      نوشته اصلی توسط POLESTAR
      با سلام مجدد

      چون ما هیچ تغییری در سخت افزار ندادیم پس پینها و روش اتصال مموری به میکرو همونی هست که اقای چان انجام دادن
      یعنی فایل avr_mmc.png در پوشه avr_complex

      حالا اول فایل mmc_avr.c رو در main انکلود کنید
      سپس در فایل فوق انکلود avr/io.h رو به io.h تغییر بدید یعنی"/avr" رو حذف کنید و بعد این دیفاین ها رو اظافه کنید


      کد:
      #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 loop_until_bit_is_set(sfr, bit)			  do { } while (bic(sfr, bit))
      #define loop_until_bit_is_reset(sfr, bit)			do { } while (bis(sfr, bit))

      حتما از فایل diskio.h داخل پوشه avr_complex استفاده کنید نه اونی که داخل پوشه src هست
      تا اینجا اگه کامپایل کنید نباید اروری باشه
      با تشکر فراوان از آقای اسدی
      خب تا اینجا من کامپایل کردم و مشکلی نبود ممنون
      فقط یه توضیح بدم که این دیفاین ها باید در فایل mmc_avr.c اضافه بشن
      خب حالا اینجا 2 تا سوال :
      1 - این دیفاین ها رو شما از کجا آوردید؟! و چی هستن اینا اصلا؟! منی که بلد نیستم و اگر شما نبودید چیکار میبایست بکنم؟!!!
      2 - آقای اسدی عزیز من این فایل mmc_avr.c رو قبلا با فایل شما mmc.c که همراه پروژه mega32 گذاشته بودید مقایسه کردم
      اول فایل شما اینا بود :

      کد:
      #define SCK_DDR     DDRB
      #define SCK_PRT     PORTB
      #define SCK_BIT     7
      
      #define MISO_DDR    DDRB
      #define MISO_PRT    PORTB
      #define MISO_BIT    6
      
      #define MOSI_DDR    DDRB
      #define MOSI_PRT    PORTB
      #define MOSI_BIT    5
      
      #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
      که خب خیلی راحت میکرد تنظیم پایه های SPI برای هر میکرو ولی توی mmc_avr.c ندیدم همچین چیزی
      آیا این همونه؟!!

      کد:
      static
      void power_on (void)
      {
      	{	/* Remove this block if no socket power control */
      		PORTE &= ~_BV(7);	/* Socket power on (PE7=low) */
      		DDRE |= _BV(7);
      		for (Timer1 = 2; Timer1; );	/* Wait for 20ms */
      	}
      
      	PORTB |= 0b00000101;	/* Configure SCK/MOSI/CS as output */
      	DDRB |= 0b00000111;
      
      	SPCR = 0x52;			/* Enable SPI function in mode 0 */
      	SPSR = 0x01;			/* SPI 2x mode */
      }
      اگه شما فایل رابط SD دارید مشابه mmc.c که فکر میکنید بهتره و راحت تره کار کردن باهاش ، آموزشو بر اساس اون ادامه بدید چون به نظر من توی mmc_avr.c یکم تنظیم کردن پایه های SPI گنگه :sad:
      درایور شبکه و nRF24L01
      کاتالوگ محصولات
      کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
      شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
      فروش اسيلوسکوپ GWinstek GOS-630FC

      دیدگاه


        #4
        پاسخ : کتابخانه ff.h در Codevision

        نوشته اصلی توسط POLESTAR
        حالا به ابتدای main فایل ff.c رو انکلود کنید
        بعد باید تابع get_fattime رو به main اضافه کنیم
        اگر RTC ندارید باید مقادیر زمان رو دستی جایگزین کنید در غیر اینصورت مقدار زمان واقعی رو بدید
        به این صورت


        کد:
        DWORD get_fattime (void)
        {
        	/* Returns current time packed into a DWORD variable */
        	return	 ((DWORD)(2014 - 1980) << 25)	/* Year 2014 */
        			| ((DWORD)4 << 21)				/* Month 4 */
        			| ((DWORD)10<< 16)				/* Mday 10 */
        			| ((DWORD)0 << 11)				/* Hour 0 */
        			| ((DWORD)0 << 5)				/* Min 0 */
        			| ((DWORD)0 >> 1);				/* Sec 0 */
        }

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

        کد:
        /*****************************************************
        Project : AT128 MMC Prj
        Version : 
        Date  : 4/10/2014
        Author : HoaXB0Y
        Company : HoaXB0Y
        Comments: 
        
        Chip type        : ATmega128A
        Program type      : Application
        AVR Core Clock frequency: 8.000000 MHz
        Memory model      : Small
        External RAM size    : 0
        Data Stack size     : 1024
        *****************************************************/
        
        #include <mega128a.h>
        #include <io.h>
        #include <alcd.h>
        
        
        #include <FF_Lib\mmc_avr.c>
        #include <FF_Lib\ff.c>
        
        
        DWORD get_fattime (void)
        {
        	/* Returns current time packed into a DWORD variable */
        	return	 ((DWORD)(2014 - 1980) << 25)	/* Year 2014 */
        			| ((DWORD)4 << 21)				/* Month 4 */
        			| ((DWORD)10<< 16)				/* Mday 10 */
        			| ((DWORD)0 << 11)				/* Hour 0 */
        			| ((DWORD)0 << 5)				/* Min 0 */
        			| ((DWORD)0 >> 1);				/* Sec 0 */
        }
        
        
        void main(void)
        {
        
        lcd_init(16);
        
        while (1)
           {
           // Place your code here
        
           }
        }
        و این هم خطاهایی که میده :



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

        دیدگاه


          #5
          پاسخ : کتابخانه ff.h در Codevision

          خیلی از دوستان عذر میخوام؛ نمیتونم دائماً آنلاین باشم و به سوالات پاسخ بدم :redface:
          ---------------------------------
          همون مثالی که قبلاً قرار داده ام همه موارد برای پشتیبانی کدویژن لحاظ شده ( http://uplod.ir/mw6fjirxw95u/ff10a_Codevision.rar.htm )

          فکر میکنم یک مورد را باید حتماً توضیح بدم:
          این فایل های هدری هستند که include شده اند:
          کد:
          #include "FF_Files/diskio.h"
          #include "FF_Files/ff.h"
          #include "FF_Files/integer.h"
          حالا فایل C (سورس) این ها را باید به این گونه به پروژه اضافه کرد:
          -از منوی Project گزینه Configure را انتخاب کنید تا پنجره Configure Project باز شود
          -در تب Files زیر تب Input Files را باز کنید (پیشفرض باز میشود)
          -با زدن Add فایل های ff.c - mmc_avr.c را انتخاب کنبد
          -با زدن OK پنجره را ببندید.

          خوب ؛ با گذراندن مراحل بالا، فایلهای سورس به پروژه اضافه شده
          -----------------------------------------------------------
          درضمن ، ماکرو های مهم در فایل integer.h اضافه شده و نیازی به نوشتن مجدد نیست

          موفق باشید
          امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

          دیدگاه


            #6
            پاسخ : پاسخ : کتابخانه ff.h در Codevision

            نوشته اصلی توسط Abbas Sarami
            خیلی از دوستان عذر میخوام؛ نمیتونم دائماً آنلاین باشم و به سوالات پاسخ بدم :redface:
            ---------------------------------
            همون مثالی که قبلاً قرار داده ام همه موارد برای پشتیبانی کدویژن لحاظ شده ( http://uplod.ir/mw6fjirxw95u/ff10a_Codevision.rar.htm )

            فکر میکنم یک مورد را باید حتماً توضیح بدم:
            این فایل های هدری هستند که include شده اند:
            کد:
            #include "FF_Files/diskio.h"
            #include "FF_Files/ff.h"
            #include "FF_Files/integer.h"
            حالا فایل C (سورس) این ها را باید به این گونه به پروژه اضافه کرد:
            -از منوی Project گزینه Configure را انتخاب کنید تا پنجره Configure Project باز شود
            -در تب Files زیر تب Input Files را باز کنید (پیشفرض باز میشود)
            -با زدن Add فایل های ff.c - mmc_avr.c را انتخاب کنبد
            -با زدن OK پنجره را ببندید.

            خوب ؛ با گذراندن مراحل بالا، فایلهای سورس به پروژه اضافه شده
            -----------------------------------------------------------
            درضمن ، ماکرو های مهم در فایل integer.h اضافه شده و نیازی به نوشتن مجدد نیست

            موفق باشید
            آهان الان درست شد و تونستم یه پروژه که از اول خودم ساختمو با روش شما بدون خطا کامپایل کنم
            ممنون واقعا از شما عزیزان که وقت میذارید میدونم چقد کار سختیه ( چنتا تاپیک کوچیک تو قسمت پروتل زدم )

            ولی میدونید بیشتر دلم میخواد همین مواردی که لحاظ میکنید رو بفرمایید تا مثلا حالا میکر AVR نبود یا یه کتابخونه دیگه بود هم بشه استفاده کرد
            منظورتون از ماکروهای مهمی که اضافه شده چییه؟! دقیقا کدوم خط ها اضافه شده؟!
            یعنی اگر ورژن جدید تری بیاد این ماکرو ها رو نداره؟! و اگر نداشت باید چیکار کنیم؟!!

            -----------------------------

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

            دیدگاه


              #7
              پاسخ : کتابخانه ff.h در Codevision

              آقای صرامی
              همونطور که توی تاپیک قبلی هم گفته بودید که شما فقط کامپایل کردید
              و فرمودید من تست کنم توی شبیه ساز تست کردم
              کار نمیکنه و به نظرم پایه های SPI برای Mega128 درست تنظیم نشده عکسو ببینید :



              پایه ها فکنم الکی 1 شدن و پایه های مربوط به SPI کلا تعریف نشدن
              طبق گفته های آقای اسدی باید توی فایل mmc.c باشه که در پروژه شما از mmc_avr.c استفاده شده

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

              دیدگاه


                #8
                پاسخ : کتابخانه ff.h در Codevision

                نوشته اصلی توسط بسطام بیرامی
                خب حالا اینجا 2 تا سوال :
                1 - این دیفاین ها رو شما از کجا آوردید؟! و چی هستن اینا اصلا؟! منی که بلد نیستم و اگر شما نبودید چیکار میبایست بکنم؟!!!
                2 - آقای اسدی عزیز من این فایل mmc_avr.c رو قبلا با فایل شما mmc.c که همراه پروژه mega32 گذاشته بودید مقایسه کردم
                1- این دیفاینها به صورت پیشفرض در gcc هست لذا اقای چان بهشون نیاز نداشته که بنویسه
                حالا کارشون چیه فکر میکنم اینجا باید یه کمی به عقب برگردیم و کمی زیاضی و سی یاد بگیریم
                BV_ کارش اینه که شماره بیتی که در ورودیش قرار دادید رو در یک بایت یک میکنه مثلا اگه مقدار 4 بهش بدید خروجیش میشه 0B00010000
                sbi بیت "ورودی دوم" متناظر در بایت "ورودی اول" رو یک میکنه
                cbi بیت "ورودی دوم" متناظر در بایت "ورودی اول" رو صفر میکنه
                bis یک بودن بیت "ورودی دوم" متناظر در بایت "ورودی اول" رو چک میکنه
                bic صفر بودن بیت "ورودی دوم" متناظر در بایت "ورودی اول" رو چک میکنه
                loop_until_bit_is_set یا lbis تا یک شدن بیت "ورودی دوم" متناظر در بایت "ورودی اول" منتظر میمونه
                loop_until_bit_is_reset یا lbic تا صفر شدن بیت "ورودی دوم" متناظر در بایت "ورودی اول" منتظر میمونه

                شما فقط در کامپایلر کدویژن هست که متغیر بیت دارید در دیگر کامپایلرها و کلا در سی متغیر بیتی وجود ندارد وبرای این کار از دیفاینهای فوق استفاده میشه البته لازمه که بگم در تعداد اندکی از میکرو ها هم این امکان وجود دارد که AVR از اون جمله هست که پورتهای F , G این امکان رو هم ندارن
                این کدویژن خیلی از اصول سی رو زیر پا گزاشته که این یکی از ساده ترین اونهاست

                2 - این تغییرات رو خود بنده برای راحتی کار دادم ولی اقای چان این کار رو به صورت مستقیم همونطوری که شما اشاره کردید در تابع power_on انجام داده

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

                دیدگاه


                  #9
                  پاسخ : کتابخانه ff.h در Codevision

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

                  اگه شما فایل رابط SD دارید مشابه mmc.c که فکر میکنید بهتره و راحت تره کار کردن باهاش ، آموزشو بر اساس اون ادامه بدید چون به نظر من توی mmc_avr.c یکم تنظیم کردن پایه های SPI گنگه
                  خب نمیشه همین فایل های ff10a رو استفاده کنیم ولی mmc.c از شما باشه؟!
                  خب به هرحال شما از چان واردترید ( اگر ممکنه کلا آموزشتونو بر اساس فایل mmc.c خودتون پیش ببرید )

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

                  دیدگاه


                    #10
                    پاسخ : کتابخانه ff.h در Codevision

                    یه مورد مهم دیگه در مورد این توابع این هست که باید یکی از تایمرها رو با پریود 100 هرتز تنظیم کنید و در داخل تابع تایمر تابع disk_timerproc رو فراخانی کنید
                    در غیر این صورت توابع خروجی نخواهند داشت
                    لذا کدهای زیر رو هم به مین اظافه کنید

                    کدهای زیر رو به ابتدای برنامه بعد از انکلود فایلها

                    کد:
                    #define F_CPU  8000000UL
                    #define sei()  #asm("sei")
                    #define cli()  #asm("cli")
                    
                    interrupt [TIM2_COMP] void timer2_comp_isr(void)
                    {
                      disk_timerproc();
                    }

                    و کدهای زیر در مین برنامه بعد از تعریف متغیر هاتون برای اینیشیال تایمر برای فرکامس 100 هرتز

                    کد:
                    OCR2 = F_CPU / 1024 / 100 - 1;
                    TCCR2 = 0b00001101;
                    TIMSK |= _BV(OCIE2);
                    sei();


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

                    دیدگاه


                      #11
                      پاسخ : کتابخانه ff.h در Codevision

                      نوشته اصلی توسط بسطام بیرامی
                      واقعا الانه که باید بگم استاد اسدی
                      خب نمیشه همین فایل های ff10a رو استفاده کنیم ولی mmc.c از شما باشه؟!
                      خب به هرحال شما از چان واردترید ( اگر ممکنه کلا آموزشتونو بر اساس فایل mmc.c خودتون پیش ببرید )

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

                      در ضمن اقای چان خیلی استادترن من خیلی کوچیکترم
                      اگر کارهایی که ایشون انجام دادن رو ببینید متوجه منظورم میشید این لایبرری یک صدم کارهای ایشون نیست
                      یه مورد دیگه ایشوم مثل ما با کدویژن کار نمیکنن و خودشونو با این با اصطلاح کامپایلر زبون نفهم مشغول نمیکنن
                      خود بنده هم یه دو سالی میشه که این کامپایلر رو کنار گزاشتم و با GCC کار میکنم هم مجانی هست و هم همچین مشکلایی نداره
                      به شما هم توصیه میکنم همین کار رو بکنید

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

                      دیدگاه


                        #12
                        پاسخ : کتابخانه ff.h در Codevision

                        نوشته اصلی توسط POLESTAR
                        اقای بیرامی عزیز فعلا شما با همین توابع و همین شکلی که هست به نتیجه برسید تا بعد تغییرات لازم رو بدیم
                        اینطوری فکر کنم بار علمی بیشتری داشته باشه

                        در ضمن اقای چان خیلی استادترن من خیلی کوچیکترم
                        اگر کارهایی که ایشون انجام دادن رو ببینید متوجه منظورم میشید این لایبرری یک صدم کارهای ایشون نیست
                        یه مورد دیگه ایشوم مثل ما با کدویژن کار نمیکنن و خودشونو با این با اصطلاح کامپایلر زبون نفهم مشغول نمیکنن
                        خود بنده هم یه دو سالی میشه که این کامپایلر رو کنار گزاشتم و با GCC کار میکنم هم مجانی هست و هم همچین مشکلایی نداره
                        به شما هم توصیه میکنم همین کار رو بکنید

                        به همین سادگی :nice:
                        باشه هرجور شما دستور بدید همونکارو میکنیم
                        شما در هر صورت استاد مایید
                        پس زحمت شما پست 3 رو پاسخ بدید تا مشکل خطا ها برطرف شه
                        من الان دارم هم با Codevision کار میکنم هم Atmel Studio ولی فعلا بیشتر با Codevision هستم
                        ولی چشم ما هم کوچ میکنیم
                        درایور شبکه و nRF24L01
                        کاتالوگ محصولات
                        کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
                        شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
                        فروش اسيلوسکوپ GWinstek GOS-630FC

                        دیدگاه


                          #13
                          پاسخ : کتابخانه ff.h در Codevision

                          یه مورد دیگه در خصوص انکلود فایلها باید عرض کنم و اون اینه که
                          در کامپایلرهای زبان سی فایل های c سورس برنامه و h فایل هدر یا تعاریف سورس کد ها هستند
                          معمولا فایل c رو توی خود پروژه اضافه میکنن که این کار با میک فایل مقدوره
                          حالا هر کجا که توابع فوق لازم باشه فقط کافیه در ابتدای اون صفحه هدر اون سورس انکلود بشه

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

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

                          دیدگاه


                            #14
                            پاسخ : کتابخانه ff.h در Codevision

                            اگه مشکلی نیست شما برنامتونو با این برنامه مقایسه کنید

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

                            دیدگاه


                              #15
                              پاسخ : کتابخانه ff.h در Codevision

                              نوشته اصلی توسط POLESTAR
                              اگه مشکلی نیست شما برنامتونو با این برنامه مقایسه کنید

                              به همین سادگی :nice:
                              مقایسه کردم ( البته خیلی سخت بود )
                              main برنامه ها که یکی بود دقیقا
                              ولی اختلاف تو فایل های ffconf.h بین فایل شما با فایل پوشه ff10a بود که خب میدونم مربوط به چییا هست و مقاداراتو همونطوری شما تنظیم کردید منم تغییر دادم
                              بعد رسیدم به خطاهای دیگه که باز بررسی کردم دیدم اختلاف بین فایل های diskio.h شما با diskio.h که توی ff10a هست وجود داره
                              ولی اینو متوجه نشدم شما چرا و چطور تغییر داید مثلا :

                              فایل شما :
                              کد:
                              /*---------------------------------------*/
                              /* Prototypes for disk control functions */
                              
                              
                              DSTATUS disk_initialize (BYTE pdrv);
                              DSTATUS disk_status (BYTE pdrv);
                              DRESULT disk_read (BYTE pdrv, BYTE* buff, DWORD sector, UINT count);
                              #if	_USE_WRITE
                              DRESULT disk_write (BYTE pdrv, const BYTE* buff, DWORD sector, UINT count);
                              #endif
                              #if	_USE_IOCTL
                              DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff);
                              #endif
                              void disk_timerproc (void);
                              فایل چان جان :
                              کد:
                              /*---------------------------------------*/
                              /* Prototypes for disk control functions */
                              
                              
                              DSTATUS disk_initialize (BYTE pdrv);
                              DSTATUS disk_status (BYTE pdrv);
                              DRESULT disk_read (BYTE pdrv, BYTE* buff, DWORD sector, UINT count);
                              DRESULT disk_write (BYTE pdrv, const BYTE* buff, DWORD sector, UINT count);
                              DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff);
                              یا این مورد

                              فایل شما :
                              کد:
                              /* Generic command (used by FatFs) */
                              #define CTRL_SYNC			0	/* Flush disk cache (for write functions) */
                              #define GET_SECTOR_COUNT	1	/* Get media size (for only f_mkfs()) */
                              //#define GET_SECTOR_SIZE		2	/* Get sector size (for multiple sector size (_MAX_SS >= 1024)) */
                              #define GET_BLOCK_SIZE		3	/* Get erase block size (for only f_mkfs()) */
                              #define CTRL_ERASE_SECTOR	4	/* Force erased a block of sectors (for only _USE_ERASE) */
                              
                              /* Generic command (not used by FatFs) */
                              #define CTRL_POWER			5	/* Get/Set power status */
                              //#define CTRL_LOCK			6	/* Lock/Unlock media removal */
                              //#define CTRL_EJECT			7	/* Eject media */
                              //#define CTRL_FORMAT			8	/* Create physical format on the media */
                              که همه چی توش کامند شده

                              واینم فایل چان :

                              کد:
                              /* Command code for disk_ioctrl fucntion */
                              
                              /* Generic command (used by FatFs) */
                              #define CTRL_SYNC			0	/* Flush disk cache (for write functions) */
                              #define GET_SECTOR_COUNT	1	/* Get media size (for only f_mkfs()) */
                              #define GET_SECTOR_SIZE		2	/* Get sector size (for multiple sector size (_MAX_SS >= 1024)) */
                              #define GET_BLOCK_SIZE		3	/* Get erase block size (for only f_mkfs()) */
                              #define CTRL_ERASE_SECTOR	4	/* Force erased a block of sectors (for only _USE_ERASE) */
                              
                              /* Generic command (not used by FatFs) */
                              #define CTRL_POWER			5	/* Get/Set power status */
                              #define CTRL_LOCK			6	/* Lock/Unlock media removal */
                              #define CTRL_EJECT			7	/* Eject media */
                              #define CTRL_FORMAT			8	/* Create physical format on the media */
                              که همه هستند

                              یا این که کلا موندم

                              کد:
                              /* MMC card type flags (MMC_GET_TYPE) */
                              #define CT_MMC		0x01		/* MMC ver 3 */
                              #define CT_SD1		0x02		/* SD ver 1 */
                              #define CT_SD2		0x04		/* SD ver 2 */
                              #define CT_SDC		(CT_SD1|CT_SD2)	/* SD */
                              #define CT_BLOCK	0x08		/* Block addressing */
                              اینا توی فایل شما هست ولی اصلا چان نداره بنده خدا :icon_razz:

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

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

                              دیدگاه

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