اطلاعیه

Collapse
No announcement yet.

کتابخانه ff.h

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

    پاسخ : کتابخانه ff.h

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

    از دستور f_lseek که تو صفحه چهارم در قالب مثال توضیح داده شده، میرم جلو ولی ارور میده.
    میشه یکی کمکم کنه و بگه چطور این رو اعمال کنم؟!!! :sad: :sad: :sad:

    دیدگاه


      پاسخ : کتابخانه ff.h

      شما باید اول اندازه فایل را به دست بیارین و بعد با دستور seek به اونجا برین.
      در زیر این نقاب چیزی بیشتر از گوشت هست. در زیر این نقاب یک ایده هست و ایده ها ضدگلوله هستند.

      1-به اندازه ی باورهای هر کسی ؛ با او حرف بزن …. بیشتر که بگویی ، تو را احمق فرض خواهد کرد …!!!
      2-تنها دو گروه نمى توانند افکار خود را عوض کنند: دیوانگان تیمارستان و مردگان گورستان.
      3-آدم ها مثل عکس ها هستند: زیاد بزرگشون کنی ، کیفیتشون میاد پایین!

      دیدگاه


        پاسخ : کتابخانه ff.h

        نوشته اصلی توسط siyavash2k
        شما باید اول اندازه فایل را به دست بیارین و بعد با دستور seek به اونجا برین.
        آره درست شد.
        ممنون
        بعد از اینکه اینجا مطرح کردم توضیحات سایت خود اون شخص ژاپنی رو خوندم فهمیدم.
        بازم ممنون که وقت گذاشتین و جواب دادین.

        دیدگاه


          پاسخ : کتابخانه ff.h

          سلام به همه
          دوستان اگر جواب بدین جدی میگم که خوشحال میشم :biggrin:
          تقریبا هرچی تایپیک توی این زمینه داخل eca بوده رو خوردم (گشنگیه دیگه) سایت دوست ژاپنیمون رو هم همینجور (با چوب ژاپنی خوردم :mrgreen: )
          عجب کارهای جالبی هم انجام داده

          نوشته اصلی توسط مهدی رهی
          سلام به همه
          بر آخرین منجی صلوات
          دوستان توی این کتابخونه من بدجوری گیر کردم!
          من با Atmel Studio مینویسم و با اینکه اصل کتابخونه با gcc هست اما هنوز کارم راه نیفتاده
          من کلیه فایلهای زیر رو از پوشه avr_complex بر میدارم و توی یک پوشه به نام libff که توی پوشه اصلی پروژست میریزمشون:
          کد:
          diskio.h
          ff.h
          ffconf.h
          integer.h
          بعدم دو فایل زیر رو باز از پوشه avr_complex بر میدارم و توی محیط اصلی پروژه قرار میدم و بعدم از طریق add و existing item به پروژه اضافشون میکنم:
          کد:
          ff.c
          mmc_avr.c
          تغییری به ffconf.h نمیدم چون لازم نیست به غیر از گاهی که مقدار زیر رو صفر می کنم:
          کد:
          #define	_FS_TINY		1
          بعدم توی فایل هایی که پسوندشون c هست هر کدوم که فایل دیگه ای رو اینکلود کردن رو پشت اسم فایل انکلود شده اسم پوشه رو مینویسم مثل زیر:
          کد:
          #include "libff/ff.h"			
          #include "libff/diskio.h"
          اون فایل هاییم که پسوندشون h هست چون توی پوشه ای هستن که بقیه فایلها با پسوند h هم پیششون هست اگر فایلی انکلود کرده باشن رو هیچ تغییری نمیدم
          بعدم برنامه زیر رو کامپایل میکنم که هیچ error یی نمیده اما توی پروتئوس و عمل کار نمیکنه
          کد:
          #include <avr/io.h>
          #define F_CPU 8000000UL
          #include <util/delay.h>
          #include <avr/interrupt.h>
          // LCD Configuration
          #define LCD_BUS HANDGLASS_LCD_4BIT_4LINE_5X7
          #define LCD_RW_STATE 0
          #define LCD_SIZE  (20*4)
          #define LCD_SPEED 3
          #define LCD_DDR DDRC
          #define LCD_PORT PORTC
          #include "handglass_alphabet_lcd.h"
          //////////////////////////////////////////////////////////////////////////
          #include "libff/ff.h"		/* Declarations of FatFs API */
          
          FATFS FatFs;		/* FatFs work area needed for each volume */
          FIL Fil;			/* File object needed for each open file */
          
          int main (void)
          {
          	UINT read_num,read_counter,buffer[16];
          
           	lcd_init();
           	
           	lcd_gotoxy(1,1);
           	lcd_put("Read Micro SD");
           	lcd_gotoxy(2,1);
           	lcd_put("mahdi rahi");
           	_delay_ms(500);
           	lcd_clear();
           	lcd_put("Init Drive");
           	
           	while (disk_initialize(0)!=FR_OK) _delay_ms(100);
           	lcd_put("-->OK");
           	_delay_ms(500);
           	lcd_clear();
           	lcd_put("mount Drive");
           	
           	while (f_mount(&FatFs, "", 0)!=FR_OK) _delay_ms(100);
           	
           	lcd_put("-->OK");
           	_delay_ms(500);
           	lcd_clear();
           	lcd_put("Open File");
           	
           	while (f_open(&Fil, "newfile.txt", FA_WRITE | FA_CREATE_ALWAYS) !=FR_OK) _delay_ms(100);
           	
           	lcd_put("-->OK");
           	_delay_ms(500);
           	lcd_clear();
           	lcd_put("Read File");
           	
           	read_num=512;
           	while (f_read(&Fil,buffer,read_num,&read_counter)!=FR_OK) _delay_ms(100);
           	
           	lcd_put("-->OK");
           	_delay_ms(500);
           	lcd_clear();
           	lcd_put("Close File");
           	
           	while (f_close(&Fil)!=FR_OK) _delay_ms(100);
           	
           	lcd_put("-->OK");
           	_delay_ms(500);
           	lcd_clear();
           	lcd_put(buffer);
           	_delay_ms(500);
           	
           	
           	while(1)
           	{
          	 	
           	}
          }
          
          /*---------------------------------------------------------*/
          /* User Provided RTC Function called by FatFs module    */
          
          DWORD get_fattime (void)
          {
          	/* Returns current time packed into a DWORD variable */
          	return	 ((DWORD)(2013 - 1980) << 25)	/* Year 2013 */
          	| ((DWORD)7 << 21)				/* Month 7 */
          	| ((DWORD)28 << 16)				/* Mday 28 */
          	| ((DWORD)0 << 11)				/* Hour 0 */
          	| ((DWORD)0 << 5)				/* Min 0 */
          	| ((DWORD)0 >> 1);				/* Sec 0 */
          }
          اینم از مداری که میبندم به همراه فایل پروتئوس:
          http://uploadazad.com/uploads/pgn0_new_folder.zip


          از pff.h تونستم جواب بگیرم اما توی کارم به ff.h احتیاج دارم
          لطفا کمک کنین :sad:
          ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
          شهید دکتر مصطفی چمران
          اللهم صل علی محمد و ال محمد و عجل فرجهم
          ; C is not for children

          دیدگاه


            پاسخ : کتابخانه ff.h

            نوشته اصلی توسط مهدی رهی
            سلام به همه
            دوستان اگر جواب بدین جدی میگم که خوشحال میشم :biggrin:
            تقریبا هرچی تایپیک توی این زمینه داخل eca بوده رو خوردم (گشنگیه دیگه) سایت دوست ژاپنیمون رو هم همینجور (با چوب ژاپنی خوردم :mrgreen: )
            عجب کارهای جالبی هم انجام داده
            سلام
            خوشحالم دیگه طلب صلوات نکردی ( هر کاری بیش از حد نرمالش انجام شه شوخی و بی احترامی تلقی میشه )
            اینا مشکلی ندارن کل پروژه کد رو بذار من ببینم چیکار کردی
            من خودمم با Atmel Studio کار میکنم
            درایور شبکه و nRF24L01
            کاتالوگ محصولات
            کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
            شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
            فروش اسیلوسکوپ GWinstek GOS-630FC

            دیدگاه


              پاسخ : کتابخانه ff.h

              سلام به همه
              ( هر کاری بیش از حد نرمالش انجام شه شوخی و بی احترامی تلقی میشه )
              هیچ وقت به اینش فکر نکرده بودم :surprised:
              مرسی بابت تذکر
              اصل پوشه پروژه به همراه شبیه ساز پروتئوس :
              http://uploadazad.com/uploads/3t84_m.rahi.zip
              ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
              شهید دکتر مصطفی چمران
              اللهم صل علی محمد و ال محمد و عجل فرجهم
              ; C is not for children

              دیدگاه


                پاسخ : کتابخانه ff.h

                نوشته اصلی توسط مهدی رهی
                سلام به همههیچ وقت به اینش فکر نکرده بودم :surprised:
                مرسی بابت تذکر
                اصل پوشه پروژه به همراه شبیه ساز پروتئوس :
                http://uploadazad.com/uploads/3t84_m.rahi.zip
                بیا اینو تست کن ببین چطوره
                تغییراتو خودت پیدا کن توی کد
                شماتیکتم تغییر دادم
                http://eca.ir/sharing/uploads/14073981991.rar
                درایور شبکه و nRF24L01
                کاتالوگ محصولات
                کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                فروش اسیلوسکوپ GWinstek GOS-630FC

                دیدگاه


                  پاسخ : کتابخانه ff.h

                  سلام به همه
                  مرسی جناب بسطام بیرامی :cry: (اشک شوقه)
                  از ماه رمضون درگیرش بودم
                  تغییراتو خودت پیدا کن توی کد
                  در حال حاظر یه نگاه سطحی انداختم و چیزی که متوجه شدم اشکالم در disk_timerproc بود
                  امروز رو اختصاص میدم به این کار و تمام فایل هارو زیر و رو میکنم ببینم دقیقا چه تغییراتی دادین و دلیلش چی بوده
                  بعد کل اطلاعات رو میزارم روی سایت
                  من در زمینه شیمی کمی اطلاعات دارم اگر جایی نیاز داشتین من در خدمتم
                  ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
                  شهید دکتر مصطفی چمران
                  اللهم صل علی محمد و ال محمد و عجل فرجهم
                  ; C is not for children

                  دیدگاه


                    پاسخ : کتابخانه ff.h

                    سلام به همه
                    جناب بیرامی تمام فایل هارو چک کردم
                    خط به خط چک کردم
                    فایل های زیر رو در سه پوشه با هم مقایسه کردم:
                    diskio.h
                    ff.c
                    ff.h
                    ffconf.h
                    integer.h
                    mmc_avr.c
                    1- فایل های پوشه شما
                    2- فایل های پوشه سورس
                    3- فایل های پوشه avr_complex
                    شما از کتابخونه نسخه ff10a استفاده کرده بودین و من از نسخه ff10b و خود این موضوع باعث شد که کمی سردرگم بشم چون تغییراتی که میدیدم رو باید خوب در موردشون فکر میکردم تا ببینم این تغیرات کار شماست یا کار نویسنده ژاپنی هستش برای نسخه جدید!
                    سوالاتی برام پیش اومده که ممنون میشم پاسخ بدین:
                    1- به غیر از فایل integer.h بقیه فایل ها همگی تغییراتی داشتن آیا شما در همگی تغییراتی داده اید یا بعضی هاش مربوط به چان میشه؟
                    مثلا فایل ff.h که از خود پوشه سورس گرفته شده در ورژن b خط 229
                    بنظرم این تغییر از طرف چان بوده برای نسخه جدید
                    و تغییرات فایل ff.c در 10 خط به شماره خط های زیر:
                    نسخهb___نسخهa
                    155 _____ 153
                    1504 _____ 1502
                    1515 _____ 1513
                    1529 _____ 1527
                    1531 _____ 1529
                    2683 _____ 2681
                    2696 _____ 2696
                    2756 _____ 2753
                    3800 _____ 3797
                    3804 _____ 3801
                    برای بقیه فایل ها هم که چک کردم تمامی تغییرات با شماره خط رو یادداشت کردم اما اگر شما بگید کدوم فایل هارو تغییر دادین خیلی فهمیدن این موضوع راحت تر میشه (با توجه به متفاوت بودن دو نسخه)
                    اما تغییراتی که بنظرم اومد از طرف شما بوده:
                    1- فایل diskio.h که از پوشه avr_complex برداشته بودین و کمی حذف و اضاف داشت (قسمت هایی رو از فایل پوشه سورس بهش اضافه کرده بودین)
                    2- در فایل ffconf زبان رو تعیین کرده بودین
                    3- و بیشترین تغییرات شما روی فایل mmc_avr.c بود که کمی هم باعث گیج شدنم شده
                    شما ماکروهایی رو اضافه کردین در ابتدای فایل که خوانایی و کنترل این فایل رو بسیار راحت تر کرده
                    اما قسمت هایی هم تغییر کردن که من متوجه نشدم کار شماست یا کار چان؟؟؟
                    مثل اضافه شدن یه تابع جدید :
                    کد:
                    static
                    int power_status (void)		/* Socket power state: 0=off, 1=on */
                    {
                    	return (PORTE & _BV(7)) ? 0 : 1;
                    }
                    و توابع زیر هم تغییراتی درونشان بوجود آمده که باز متوجه نشدم کار شماست یا چان؟؟
                    کد:
                    disk_read 
                    disk_ioctl
                    سوال دیگه اینکه آیا در بخش زیر دلیل خاصی وجود داشته که شما از پایه 4 استفاده نکردین؟
                    کد:
                    /*SPI PINs*/
                    #define SPI_Port_DIR  DDRB
                    #define SPI_Port    PORTB
                    #define SPI_CS_PIN   0  /*PORTB.0*/
                    #define SPI_SCK_PIN   1
                    #define SPI_MOSI_PIN  2
                    #define SPI_MISO_PIN  3
                    
                    /*MMC/SD Check Pins*/
                    #define Check_Port_DIR DDRB
                    #define Check_Port   PORTB
                    #define Check_Port_PIN PINB
                    #define MMC_CD_PIN   5
                    #define MMC_WP_PIN   6
                    متاسفم سوالاتم اینقدر زیاد شدن
                    تازه کار بودن تو یک موضوع باعث بوجود اومدن سوالات زیاد میشه :nerd:
                    ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
                    شهید دکتر مصطفی چمران
                    اللهم صل علی محمد و ال محمد و عجل فرجهم
                    ; C is not for children

                    دیدگاه


                      پاسخ : پاسخ : کتابخانه ff.h

                      نوشته اصلی توسط مهدی رهی
                      سلام به همه
                      جناب بیرامی تمام فایل هارو چک کردم
                      خط به خط چک کردم
                      فایل های زیر رو در سه پوشه با هم مقایسه کردم:
                      diskio.h
                      ff.c
                      ff.h
                      ffconf.h
                      integer.h
                      mmc_avr.c
                      1- فایل های پوشه شما
                      2- فایل های پوشه سورس
                      3- فایل های پوشه avr_complex
                      شما از کتابخونه نسخه ff10a استفاده کرده بودین و من از نسخه ff10b و خود این موضوع باعث شد که کمی سردرگم بشم چون تغییراتی که میدیدم رو باید خوب در موردشون فکر میکردم تا ببینم این تغیرات کار شماست یا کار نویسنده ژاپنی هستش برای نسخه جدید!
                      سوالاتی برام پیش اومده که ممنون میشم پاسخ بدین:
                      1- به غیر از فایل integer.h بقیه فایل ها همگی تغییراتی داشتن آیا شما در همگی تغییراتی داده اید یا بعضی هاش مربوط به چان میشه؟
                      مثلا فایل ff.h که از خود پوشه سورس گرفته شده در ورژن b خط 229
                      بنظرم این تغییر از طرف چان بوده برای نسخه جدید
                      و تغییرات فایل ff.c در 10 خط به شماره خط های زیر:
                      نسخهb___نسخهa
                      155 _____ 153
                      1504 _____ 1502
                      1515 _____ 1513
                      1529 _____ 1527
                      1531 _____ 1529
                      2683 _____ 2681
                      2696 _____ 2696
                      2756 _____ 2753
                      3800 _____ 3797
                      3804 _____ 3801
                      برای بقیه فایل ها هم که چک کردم تمامی تغییرات با شماره خط رو یادداشت کردم اما اگر شما بگید کدوم فایل هارو تغییر دادین خیلی فهمیدن این موضوع راحت تر میشه (با توجه به متفاوت بودن دو نسخه)
                      اما تغییراتی که بنظرم اومد از طرف شما بوده:
                      1- فایل diskio.h که از پوشه avr_complex برداشته بودین و کمی حذف و اضاف داشت (قسمت هایی رو از فایل پوشه سورس بهش اضافه کرده بودین)
                      2- در فایل ffconf زبان رو تعیین کرده بودین
                      3- و بیشترین تغییرات شما روی فایل mmc_avr.c بود که کمی هم باعث گیج شدنم شده
                      شما ماکروهایی رو اضافه کردین در ابتدای فایل که خوانایی و کنترل این فایل رو بسیار راحت تر کرده
                      اما قسمت هایی هم تغییر کردن که من متوجه نشدم کار شماست یا کار چان؟؟؟
                      مثل اضافه شدن یه تابع جدید :
                      کد:
                      static
                      int power_status (void)		/* Socket power state: 0=off, 1=on */
                      {
                      	return (PORTE & _BV(7)) ? 0 : 1;
                      }
                      و توابع زیر هم تغییراتی درونشان بوجود آمده که باز متوجه نشدم کار شماست یا چان؟؟
                      کد:
                      disk_read 
                      disk_ioctl
                      سوال دیگه اینکه آیا در بخش زیر دلیل خاصی وجود داشته که شما از پایه 4 استفاده نکردین؟
                      کد:
                      /*SPI PINs*/
                      #define SPI_Port_DIR  DDRB
                      #define SPI_Port    PORTB
                      #define SPI_CS_PIN   0  /*PORTB.0*/
                      #define SPI_SCK_PIN   1
                      #define SPI_MOSI_PIN  2
                      #define SPI_MISO_PIN  3
                      
                      /*MMC/SD Check Pins*/
                      #define Check_Port_DIR DDRB
                      #define Check_Port   PORTB
                      #define Check_Port_PIN PINB
                      #define MMC_CD_PIN   5
                      #define MMC_WP_PIN   6
                      متاسفم سوالاتم اینقدر زیاد شدن
                      تازه کار بودن تو یک موضوع باعث بوجود اومدن سوالات زیاد میشه :nerd:
                      سلام
                      نه من فقط کد اصلی رو تغییر دادم
                      و این که فایل هایی که مهمه و باید تغییر بدی
                      mmc_avr.c
                      ffconf.h
                      بقیه فایل ها دقیقا از آقای چان کپی کردم که حالا تو ورژن های مختلف تغییراتی داره
                      به بقیه ها به نظر من اصلا دست نزنی بهتره

                      تابعی که گفتی برای ماسفتی هست که تغذیه SD رو قطع و وصل میکنه اگه نداری حذفش کن و کار چان هست

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

                      دیدگاه


                        پاسخ : کتابخانه ff.h

                        سلام به همه
                        مرسی از جواب سریعتون
                        شما فایل diskio.h رو تغییر نداده بودین؟؟؟
                        تغییراتش بین نسخه a و نسخه b بود (یعنی نه از اولی تبعیت میکرد نه از دومی)

                        دو سوال دیگه داشتم:
                        دستور زیر چطور تاخیر 20 میلی ثانیه رو بوجود میاره؟
                        کد:
                        for (Timer1 = 20; Timer1; );	/* Wait for 20ms */
                        و دستور زیر هر دو بخش رو (منظور بخش بعد از " ; " هست) رو اجرا میکنه؟
                        کد:
                        #define SPI_Enable()   SPCR = 0x52; SPSR = 0x01;
                        من همچین چیزی رو نوشته بودم اما جواب نمیداد و خطا میگرفت میدونید دلیلش چی بوده؟
                        کد:
                        #define CS_LOW()	SPI_Port &= ~_BV(SPI_CS_PIN);_delay_us(10);
                        ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
                        شهید دکتر مصطفی چمران
                        اللهم صل علی محمد و ال محمد و عجل فرجهم
                        ; C is not for children

                        دیدگاه


                          پاسخ : کتابخانه ff.h

                          نوشته اصلی توسط مهدی رهی
                          سلام به همه
                          مرسی از جواب سریعتون
                          شما فایل diskio.h رو تغییر نداده بودین؟؟؟
                          تغییراتش بین نسخه a و نسخه b بود (یعنی نه از اولی تبعیت میکرد نه از دومی)

                          دو سوال دیگه داشتم:
                          دستور زیر چطور تاخیر 20 میلی ثانیه رو بوجود میاره؟
                          کد:
                          for (Timer1 = 20; Timer1; );	/* Wait for 20ms */
                          و دستور زیر هر دو بخش رو (منظور بخش بعد از " ; " هست) رو اجرا میکنه؟
                          کد:
                          #define SPI_Enable()   SPCR = 0x52; SPSR = 0x01;
                          من همچین چیزی رو نوشته بودم اما جواب نمیداد و خطا میگرفت میدونید دلیلش چی بوده؟
                          کد:
                          #define CS_LOW()	SPI_Port &= ~_BV(SPI_CS_PIN);_delay_us(10);
                          نه تغییر ندادم

                          نمیدونم

                          بله هر 2 خط رو اجرا میکنه ( فعلا اینجا تعریف شده ولی صدا بشه هر 2تا رو اجرا میکنه )

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

                          دیدگاه


                            پاسخ : کتابخانه ff.h

                            نوشته اصلی توسط مهدی رهی
                            دستور زیر چطور تاخیر 20 میلی ثانیه رو بوجود میاره؟
                            کد:
                            for (Timer1 = 20; Timer1; );	/* Wait for 20ms */
                            این شیرین کاری ها را توی زبان C میشه انجام داد :biggrin:
                            اگه دقت کنی حلقه for دستور پرش گام نداره (پارامتر آخری)
                            این برای اینه که متغیر Timer1 جای دیگه ای مقدارش اضافه میشه(یک متغیر عمومی هست)
                            متغیر Timer1 هر 1ms اضافه میشه(توسط وقفه تایمر) که اگه 20 بار بهش اضافه بشه مقدارش میشه 20ms و از شرط for عبور میکنه

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

                            دیدگاه


                              پاسخ : کتابخانه ff.h

                              سلام به همه
                              بله این زبان c تقریبا حد و مرزی نداره و واقعا شیرینه :nice:
                              برعکس بیسیک که مثل ته خیاره :NO:
                              ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
                              شهید دکتر مصطفی چمران
                              اللهم صل علی محمد و ال محمد و عجل فرجهم
                              ; C is not for children

                              دیدگاه


                                پاسخ : کتابخانه ff.h

                                سلام به همه
                                دوستان من با وقفه ای که باید برای تابع disk_timerproc بوجود بیاریم مشکل دارم.
                                البته مدار داره خیلی عالی کار میکنه
                                اگر من توی پروژه ای مجبور باشم یک وقفه ای داشته باشم که خیلی مهم باشه و برای درست کار کردن اون مجبور باشم کلیه وقفه های دیگرو غیر فعال کنم اونقت نتیجه مموری چی میشه؟
                                البته توی پست های قدیم بچه ها (کی بود و کجا بود یادم نیست) دیده بودم که یک نفر گفته بود برای atmel studio میشه این وقفه رو حذف کنی و مشکلی بوجود نمیاد.

                                توی تست های که کردم (در proteus) اومدم کل بخش های زیر رو حذف کردم و مشکلی بوجود نیومد اما میخواستم ببینم آیا در عمل و در دراز مدت هم عمل میکنه و پس از گذشت یک سال عیبی بوجود نمیاره؟

                                در تست این دو بخش زیر رو حذف کردم:
                                کد:
                                ISR(TIMER2_COMP_vect)
                                {
                                	disk_timerproc();	/* Drive timer procedure of low level disk I/O module */
                                }
                                و در main:
                                کد:
                                /* Start 100Hz system timer (TC2.OC) */
                                OCR2 = F_CPU / 1024 / 100 - 1;	// OCR2~100
                                TCCR2 = 0b00001101;				//clk/128 , mode=CTC , pin OC2 Disconnected (TCCR2 = 0b00001101)
                                TIMSK |= _BV(OCIE2);			// interrupt active
                                
                                sei();							// global interrupt active
                                تابع زیر تابع disk_timerproc هست (که برای من توی mmc_avr.c قرار گرفته و در diskio.h معرفی شده):
                                کد:
                                void disk_timerproc (void)
                                {
                                	BYTE n, s;
                                
                                
                                	n = Timer1;				/* 100Hz decrement timer */
                                	if (n) Timer1 = --n;
                                	n = Timer2;
                                	if (n) Timer2 = --n;
                                
                                	s = Stat;
                                
                                	if (SOCKWP)				/* Write protected */
                                		s |= STA_PROTECT;
                                	else					/* Write enabled */
                                		s &= ~STA_PROTECT;
                                
                                	if (SOCKINS)			/* Card inserted */
                                		s &= ~STA_NODISK;
                                	else					/* Socket empty */
                                		s |= (STA_NODISK | STA_NOINIT);
                                
                                	Stat = s;				/* Update MMC status */
                                }
                                چیزی که من از این تابع دستگیرم شد این بود که:
                                دو وضعیت 1- وجود کارت در خشاب و 2- قفل نیودن کارت رو چک میکنه و نتیجه رو در stat ذخیره میکنه
                                خوب حالا اگر ما از چک شدن این دو وضعیت صرف نظر کنیم (با غیر فعال کردن این تابع) آیا مشکلی بوجود میاد؟
                                در مجموع راهی برای خلاص شدن ازش هست؟ (برام یک مشکل بزرگ بوجود اورده) :sad:

                                ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
                                شهید دکتر مصطفی چمران
                                اللهم صل علی محمد و ال محمد و عجل فرجهم
                                ; C is not for children

                                دیدگاه

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