اطلاعیه

Collapse
No announcement yet.

mmc با زبان c

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

    mmc با زبان c

    سلام

    شاید تو نگاه اول موضوع تکراری به نظر برسه ولی مطمئن باش این طور نیست

    این mmc رو تو 100 تا مقاله نگاه کردم ولی چیزی گیرم نیومد :angry: :angry:
    فقط تونستم بفهمم که اطلاعات سکتور سکتور ذخیره میشه و فقط میشه سکتوری خوند (512 بایت)

    چون برنامش رو به زبان c میخوام
    چندتا کتابخونه پیدا کردم ولی توابع اونو نمیدونم چیه
    اطلاعاتو باید txt با کامپیوتر تو اون ذخیره کرد ؟؟؟
    لطفا دوستان راهنمایی کنید.

    زندگي يه محيط برنامه نويسيه که خودمون برنامشو مينويسيم
    و هر لحظه امکان فشار روي کليک run هست
    پس ريسک نکنين خط به خط برنامتون رو چک بکنيد چون شايد ديگه فرصت دباگ کردن برنامه رو نداشته باشيد.
    الهم اغفر لنا ذنوبنا

    #2
    پاسخ : mmc با زبان c

    دوست عزیز اگه با زبان c کار میکنی از کتابخونه ی کدویژن استفاده کن چون تا الان هیچ کتابخونه ای به کاملی اون ندیدم.

    help کدویژن توابع کتابخونه تشریح وتوضیح داده ونحوه ی استفاده رو با مثال گفته.

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

    در همین پیج و در پیج سوم مثال گذاشتم میتونید استفاده کنید
    [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
    [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

    دیدگاه


      #3
      پاسخ : mmc با زبان c

      سلام حمید جان
      یه سوال تو کدوم ورژن ؟؟
      یعنی خودش کتابخونه داره!!!!!!!!!!
      پس دیگه چرا هر کسی میاد یه کتابخونه واسه خودش ابداع میکنه؟
      زندگي يه محيط برنامه نويسيه که خودمون برنامشو مينويسيم
      و هر لحظه امکان فشار روي کليک run هست
      پس ريسک نکنين خط به خط برنامتون رو چک بکنيد چون شايد ديگه فرصت دباگ کردن برنامه رو نداشته باشيد.
      الهم اغفر لنا ذنوبنا

      دیدگاه


        #4
        پاسخ : mmc با زبان c

        دوست عزیز جالبه بدونی از کتابخونه ی کدویژن حتی میتونی برای میکروی mega8 هم استفاده کنی اونم با کلاکی که خودت میخوای.اما کتابخونه های دیگه اکثرا برای یه مدل میکرو و یه کلاک ثابت هست.

        کتابخونه کدویژن یه مشکل کوچیک که داره اینکه به خاطر جامع وکامل بودنش حجم کد زیادی تولید میکنه یعنی اینکه تو یه جایی که شما از این کتابخونه برای یه کار کوچک مثل باز کردن یه فایل با یه کار نسبتا بزرگ مثل Defragmenter استفاده میکنی حجم کد تولیدی تفاوت زیادی نمیکنه اما با این حال این کتابخونه هیچ نقصی نداره و همه ی توابع لازم توش لحاظ شده.
        من شخصا از کار کردن باهاش لذت میبرم.
        [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
        [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

        دیدگاه


          #5
          پاسخ : mmc با زبان c

          سلام
          خب معرفی کتاب خونه چه طوری هست
          تو sample ها چیزی هست؟؟؟؟؟؟

          دیدگاه


            #6
            پاسخ : mmc با زبان c

            در جواب دوست خوبمون (shohadayehagh)که پیام خصوصی زده بودن:

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

            توابع کار با mmc و SD-card زیاد هستند وبرای توضیح دادنشون وقت زیادی لازمه منم متاسفانه تا شش روز دیگه وقت سر خاروندن هم ندارم.

            یه مثال برنامه نویسی ساده میذارم که این برنامه ابتدا یه فایل رو با آدرسی که بهش معرفی میکنیم باز میکنه این فایل با فرمت TXT هست. سپس این فایل به تعداد بایتی که لازم داریم خونده میشه و در LCD نشون داده میشه وبعد از اون فایل رو میبندیم.

            این برنامه برای اجرایی شدن برای شبیه سازی توی پروتئوس یا به طور عملی یه سری توضیحات ساده لازم داره که انشاء الله به زودی کامل توضیح میدم.


            /************************************************** **
            Chip type : ATmega8
            Program type : Application
            AVR Core Clock frequency: 8.000000 MHz
            Memory model : Small
            External RAM size : 0
            Data Stack size : 256
            ************************************************** ***/

            #include <mega8.h>
            #include <alcd.h>
            #include <ff.h>
            #include <stdio.h>
            #include <delay.h>

            #define T1_OVF_FREQ 100
            #define T1_PRESC 1024L
            #define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))


            unsigned char buffer[10];
            FRESULT res;
            unsigned int nbytes;
            FATFS drive;
            FIL file;
            char path[]="0:/hamid.txt";


            interrupt [TIM1_OVF] void timer_comp_isr(void)
            {
            /* re-initialize Timer1 */
            TCNT1H=T1_INIT>>8;
            TCNT1L=T1_INIT&0xFF;
            /* card access low level timing function */
            disk_timerproc();
            }


            void main(void)
            {

            TCCR1A=0x00;
            TCCR1B=(1<<CS12)|(1<<CS10);
            TCNT1H=T1_INIT>>8;
            TCNT1L=T1_INIT&0xFF;
            TIMSK=1<<TOIE1;

            #asm("sei&quot
            lcd_init(16);
            lcd_clear();
            res=f_mount(0,&drive);
            res=f_open(&file,path,FA_CREATE_ALWAYS);
            res=f_read(&file,buffer,10,&nbytes);
            lcd_puts(buffer);
            res=f_close(&file));
            while(1);
            }

            [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
            [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

            دیدگاه


              #7
              پاسخ : mmc با زبان c

              سلام دوست عزیز
              برنامه که نوشتین برام خیلی جالبه ، فقط مطمئن هستین که جواب می ده ؟!!!!
              چون من برای استفاده از mmc بدون fat و با خوندن سکتور به سکتور ، حداقل از 512 بایت حافظه ram استفاده شده برای متغیرها در میکرو باید استفاده کنم !!!!!؟
              * *

              دیدگاه


                #8
                پاسخ : mmc با زبان c

                من این برنامه رو کپی کردم تو کدویژن که کامپایل کنم ولی کامپایل نشد
                error : Linker error: global RAM variables size: 1147 bytes is too large
                یعنی از کتابخانه fat نمی شه برای atmega8 استفاده کرد چون حجم ram این میکرو فقط 1024 بایته ؛
                * *

                دیدگاه


                  #9
                  پاسخ : mmc با زبان c

                  بله دوست من همین طوره این برنامه رو عمدا گذاشتم تا ببینی با اینکه فقط یه فایل رو باز کردیم و 10 بایت اطلاعات ازش خوندیم به میزان 1147 بایت از حافظه ی RAM مورد استفاده قرار گرفت یعنی اثبات حرفی که گفتم.

                  جالبه بدونی اگه با همین mega8 همین برنامه رو تغییر بدی و یه سری کارای زیاد دیگه مثل ریختن اطلاعات در فایل انجام بدی حجم رم اشغالی تفاوت زیادی با برنامه ی قبلی نمیکنه ، یعنی اضافه کردن توابع یه میزان مشخص از حافظه ی رو اشغال میکنه ولی استفاده از توابع حافظه ی خیلی کمتر.

                  و اما حالا برای اینکه بری و حالشو ببری یه مثال کامل با mega32 میذارم تا هم بتونی رو پروتئوس شبیه سازی کنی و هم در عمل:

                  در پیج سوم همین تاپیک هم یه تعداد مثال گذاشتم میتونید استفاده کنید

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

                  برای اینکه کارت راحت بشه فایل کامل پروژه رو برا دانلود میذارم:

                  برای عملی بستن برنامه میتونی از هر مموری استفاده کنی من از microSD 1 GB استفاده کردم با FAT سیستم 16.

                  توجه کن مراحل رو به دقت همون جوری که میگم انجام بده تا به جواب برسی:

                  ابتدا برنامه زیر رو تو میکرو بریز.فایل هگز رو برای دانلود گذاشتم:

                  کد:
                  /*****************************************************
                  This program was produced by the
                  CodeWizardAVR V2.05.3 Standard
                  Automatic Program Generator
                  © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
                  http://www.hpinfotech.com
                  
                  Project : 
                  Version : 
                  Date  : 2012/02/17
                  Author : Hamid.....
                  Company :
                  Comments: 
                  
                  
                  Chip type        : ATmega32A
                  Program type      : Application
                  AVR Core Clock frequency: 8 MHz
                  Memory model      : Small
                  External RAM size    : 0
                  Data Stack size     : 512
                  *****************************************************/
                  
                  #include <mega32a.h>
                  #include <alcd.h>
                  #include <ff.h>
                  #include <stdio.h>
                  #include <delay.h>
                  
                  #define T1_OVF_FREQ 100
                  #define T1_PRESC 1024L
                  #define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))
                  
                  
                  unsigned char buffer[10];
                  
                  FRESULT res;
                  unsigned int nbytes;
                  FATFS drive;
                  FIL file;
                  char path1[]="0:/hamid.txt";
                  char path2[]="0:/test.txt";
                  
                  interrupt [TIM1_OVF] void timer_comp_isr(void)
                  {
                  /* re-initialize Timer1 */
                  TCNT1H=T1_INIT>>8;
                  TCNT1L=T1_INIT&0xFF;
                  /* card access low level timing function */
                  disk_timerproc();
                  }
                  
                  
                  void main(void)
                  {
                  TCCR1A=0x00;
                  TCCR1B=(1<<CS12)|(1<<CS10);
                  TCNT1H=T1_INIT>>8;
                  TCNT1L=T1_INIT&0xFF;
                  TIMSK=1<<TOIE1;
                  
                  delay_ms(1000);
                  #asm("sei")
                  
                  // Alphanumeric LCD initialization
                  // RS - PORTA Bit 0
                  // RD - PORTA Bit 6
                  // EN - PORTA Bit 1
                  // D4 - PORTA Bit 2
                  // D5 - PORTA Bit 3
                  // D6 - PORTA Bit 4
                  // D7 - PORTA Bit 5
                  // Characters/line: 16
                  lcd_init(16);
                  lcd_clear();
                  
                  
                  if ((res=f_mount(0,&drive))==FR_OK)
                    lcd_putsf("FAT mounted = OK");  
                  
                  delay_ms(1000);
                  lcd_clear();
                  if ((res=f_open(&file,path1,FA_READ))==FR_OK)
                    lcd_putsf("File open hamid"); 
                            
                             
                  delay_ms(1000);
                  lcd_clear();  
                  if ((res=f_read(&file,buffer,14,&nbytes))==FR_OK)
                    lcd_putsf("Reading Data");  
                    delay_ms(1000);
                    lcd_clear();
                    lcd_puts(buffer);         
                    
                  delay_ms(1000);                 
                  lcd_clear();  
                  if ((res=f_close(&file))==FR_OK)
                    lcd_putsf("File closed");
                  
                   
                  delay_ms(1000);
                  lcd_clear();
                  if ((res=f_open(&file,path2,FA_READ))==FR_OK)
                    lcd_putsf("File opened test");  
                    
                  delay_ms(1000);
                  lcd_clear();  
                  if ((res=f_read(&file,buffer,14,&nbytes))==FR_OK)
                    lcd_putsf("Reading Data");  
                    delay_ms(1000);
                    lcd_clear();
                    lcd_puts(buffer); 
                    
                  delay_ms(1000);                 
                  lcd_clear();  
                  if ((res=f_close(&file))==FR_OK)
                    lcd_putsf("File closed"); 
                   
                  
                  while(1);
                   }


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

                  تو فایلی که برای دانلود گذاشتم همه چیز اماده هست وشما فقط باید کلید ران رو بزنی اما با این حال به صورت شکل مراحل رو توضیح میدم.

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



                  شکل زیر مربوط به تنظیم پایه های مموری هست:



                  شکل زیر مربوط به تنظیم پایه های lcd هست:



                  شکل زیر مربوط به تنظیم مموری در پروتئوس هست:



                  شکل زیر مربوط به نرم افزار WINIMAGE هست که با اون میتونیم فایل های image مورد استفاده در پروتئوس رو باز و ویرایش کنیم.فایل های txt که ساختیم درون این فایل image قرار داره که با پسوند zip. ذخیره شده:



                  شکل زیر هم نتیجه ی کار هست:




                  توجه کن برای اینکه عملا مدار رو ببندی یه بار باید مموری که میخوای استفاده کنی فرمت کنی میتونی با هر مدل فت 16 یا 32 خواستی این کار رو انجام بدی:



                  وبعد از فرمت باید فایل های txt رو داخل مموری بریزی:






                  ودر آخر این هم لینک دانلود کل پروژه به همراه نرم افزار WINIMAGE :

                  http://s1.picofile.com/file/73046916...Dcard.rar.html


                  و لینک مثال های بعدی :

                  http://www.eca.ir/forum2/index.php?topic=59702.30


                  اگه دوستان نظری دارن در رابطه مطالب گفته شده لطفا از من دریغ نفرمایند




                  [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
                  [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

                  دیدگاه


                    #10
                    پاسخ : mmc با زبان c

                    من یه سوال دارم.
                    همیشه در مورد فایلهای txt صحبت میشه.میخواستم بدونم فایلهای دیگه ای مثل exe , doc , bmp یا هر نوع فایل دیگه با هر ساختاری رو نمیشه خوند یا نوشت یا اجرا کرد؟

                    دیدگاه


                      #11
                      پاسخ : mmc با زبان c

                      دوست من بعضی از فرمت ها مثل فرمت صوتی MP3 حتما نیاز به ای سی دیکد داره چون باید اطلاعات پردازش و از حالت فشرده خارج بشه اونم باسرعت زیاد اما فرمت های مثل فرمت صوتی wav و یا فرمت تصویری bmp به دلیل اینکه بدون فشرده سازی و کد گذاری اطلاعات ذخیره میشن تنها کافیه نرخ نمونه برداری و چند بیتی بودن اون مشخص باشه در این صورت به راحتی میشه بدون سخت افزاری دیتا رو خوند.
                      [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
                      [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

                      دیدگاه


                        #12
                        پاسخ : mmc با زبان c

                        یه چیزی یادم رفت بگم فایلی که گذاشتم مربوط بود به خوندن فرمت متنی txt در صورتی که نیاز به خوندن فرمتای صوتی ، یا حتی تصویری دارین امکان تغییر این سورس وجود داره پس اگه خواستین تا اونا رو هم بذارم.
                        [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
                        [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

                        دیدگاه


                          #13
                          پاسخ : mmc با زبان c

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

                          دیدگاه


                            #14
                            پاسخ : mmc با زبان c

                            سلام حمید جان :job:
                            ایا با میکرو میتونیم یه سری اطلاعات روی حافظه mmc با فرمت txt ذخیره کنیم مثلا اطلاعات یه سنسور دما :read:

                            دیدگاه


                              #15
                              پاسخ : mmc با زبان c

                              سلام دوستان در مورد نوشتن یه فایل در مموری به این روش
                              کد:
                              res=f_write(&file,buffer,14,&nbytes)
                              به متغییر بافر باید چطور مقدار داد مثلا یه مقدار دما
                              منظورم اینکه در صورتی که مثلا این متغییر رو برابر متغییر دما میکنم فقط جای خالی ایجاد میشه

                              دیدگاه

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