اطلاعیه

Collapse
No announcement yet.

کوچ کردن از کدویژن به AtmelStudio

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

    #76
    پاسخ : کوچ کردن از کدویژن به AtmelStudio

    نوشته اصلی توسط سعید دلشاد منور
    سلام سید.من هر چقدر که تو اینترنت گشتم یه راه ساده واسه راه اندازی lcd کاراکتری پیدا نکردم
    خیلی بد گفتن.
    اگه شما کار کردین میشه بذارین؟
    سلام. کتابخونه که تا دلتون بخواد هست ، میتونم بتون منبع و مرجع بدم .

    ولی قبلش یه نظر ازتون میخوام:
    من خیلیا را دیدم که مشکل مثل شما را دارند ، و السیدی کاراکتری هم با این که یک ماژول قدیمیه ولی برای تست توی پروژه ها بدرد میخوره. بنظرم بهتر باشه به جای اینکه از کتابخونه هایی که موجوده استفاده کنیم، یک کتابخونه برای خودمون داشته باشیم (اتفاقا چند وقت پیش توی همین فکر بودم و سر این موضوع ببن دوراهی بودم که نوشتن کتابخونه برای یک ماژول قدیمی که زیاد براش کتابخونه نوشته شده ،وقت تلف کردن است یا نه)

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

    البته همون طور که میدونید این کار بسیار کار گسترده ای است و به تنهایی برای بنده انجام آن میسر نیست، و بایستی در این راستا دوستان و اساتید کمک کنند. (من فقط استارتش رو میزنم و برای پیش برد آن از دوستان کمک میخوام)

    میتونم برای السیدی کاراکتری همین امشب شروع کنم(فکر نکنم زیاد طول بکشه - حداکثر تا صبح اگر خوابم نبره :rolleyes: ) - درصورتی که موفق به این کار شوم ، کتابخونه را یک تست کوچک میکنم و اگر جواب گرفتم ، قرار میدهم.
    راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
    کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
    نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
    http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
    انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

    دیدگاه


      #77
      پاسخ : کوچ کردن از کدویژن به AtmelStudio

      نوشته اصلی توسط صادق ابراهیمی
      سلام
      تمام فرضیاتتون درسته برنامه دقیقا همینطوریه
      1-مشکل اینجاست که تابع رسیودیتا مقدار یک رو برمیگردونه در حالی که در دستور شرطی خط چهارم شرط به اینصورته که دیتا برابر با آدرس اسلیو باشه(دیتا واقع در تابع رسیو )خوب دیتا که از تابع رسیو دیتا ریترن نشده (منظور اینکه مقدارشو از کجا آورده) ؟؟؟؟
      2-و آیا مقدار ریترن در تابع رسیو دیتا فقط 0 و 1 هست ؟
      3-مقادیر دیتا و تمپ هم ازتابع رسیو دیتا استخراج میشه؟؟
      ا مشکل شما هنوز حل نشده؟

      ببنید دقیقا میدونم مشکلتون چیه . بازم میگم برید پست 42 از همین تاپیک را بخونید: http://www.eca.ir/forum2/index.php?topic=81025.msg499601#msg499601

      متغییر دیتا از نوع global یا سراسری است(البته به نظر میرسه) پس در کل توابع و همه جای برنامه قابل دسترسی است پس وقتی در تابع receive data مقدار دهی میشود ، تو همه جا تاثیر میزاره و بعد از مقدار دهی در تابع تا قبل از گرفتن مقدار دیگه همون مقدار میمونه و همه جا هم در دسترس است. دوتا هم متغییر به نام مشابه temp داریم که یکی local و محلی تابع ریسیو دیتا است و دیگری سراسری است.(در رابطه با سراسری ها چون اعلان متغییر ها را قرار ندادید ، مطمئن نیستم)

      الان دوباره داشتم شبه کد را نگاه میکردم ، و شرط همون if خط چهارم ، به نظر میرسه مشکل داشته باشه!! اون = فکر کنم باید == باشه. (شما خودتون تغییرش دادید؟)

      پستهای 42 و 68 و همین پست را مطالعه کنید و اگر دوباره مشکل داشتید حتما بپرسید. ولی توصیه میکنم برنامه هاتون را دیباگ کنید . (پست اول را مطالعه کنید) اگر قبلا اینکار را نکردید، همین برنامه بهترین شروع برای آشنایی با دیباگ کردن برنامه هاست.
      راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
      کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
      نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
      http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
      انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

      دیدگاه


        #78
        پاسخ : کوچ کردن از کدویژن به AtmelStudio

        نوشته اصلی توسط RubeuS
        سلام. کتابخونه که تا دلتون بخواد هست ، میتونم بتون منبع و مرجع بدم .

        ولی قبلش یه نظر ازتون میخوام:
        من خیلیا را دیدم که مشکل مثل شما را دارند ، و السیدی کاراکتری هم با این که یک ماژول قدیمیه ولی برای تست توی پروژه ها بدرد میخوره. بنظرم بهتر باشه به جای اینکه از کتابخونه هایی که موجوده استفاده کنیم، یک کتابخونه برای خودمون داشته باشیم (اتفاقا چند وقت پیش توی همین فکر بودم و سر این موضوع ببن دوراهی بودم که نوشتن کتابخونه برای یک ماژول قدیمی که زیاد براش کتابخونه نوشته شده ،وقت تلف کردن است یا نه)

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

        البته همون طور که میدونید این کار بسیار کار گسترده ای است و به تنهایی برای بنده انجام آن میسر نیست، و بایستی در این راستا دوستان و اساتید کمک کنند. (من فقط استارتش رو میزنم و برای پیش برد آن از دوستان کمک میخوام)

        میتونم برای السیدی کاراکتری همین امشب شروع کنم(فکر نکنم زیاد طول بکشه - حداکثر تا صبح اگر خوابم نبره :rolleyes: ) - درصورتی که موفق به این کار شوم ، کتابخونه را یک تست کوچک میکنم و اگر جواب گرفتم ، قرار میدهم.
        الان نصف شبه دارم پست میدم . تقریبا قسمت های اصلی کتابخونه تموم شد و یک تست کوچیک گرفتم ازش که خوشبختانه جواب داد (باورم نمیشه با اولین تست جواب داد بدون خطا :eek: ) الان دیگه نمیتونم ادامه بدم oo: . فردا انشالله تکمیلش میکنم و قرار میدم. I-)
        راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
        کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
        نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
        http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
        انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

        دیدگاه


          #79
          پاسخ : کوچ کردن از کدویژن به AtmelStudio

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

          دیدگاه


            #80
            پاسخ : کوچ کردن از کدویژن به AtmelStudio

            نوشته اصلی توسط RubeuS
            الان نصف شبه دارم پست میدم . تقریبا قسمت های اصلی کتابخونه تموم شد و یک تست کوچیک گرفتم ازش که خوشبختانه جواب داد (باورم نمیشه با اولین تست جواب داد بدون خطا :eek: ) الان دیگه نمیتونم ادامه بدم oo: . فردا انشالله تکمیلش میکنم و قرار میدم. I-)
            به تاپیک زیر مراجعه شود:
            راه انداز ساده برای انواع السیدی کاراکتری:
            http://www.eca.ir/forum2/index.php?topic=82130.0
            راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
            کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
            نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
            http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
            انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

            دیدگاه


              #81
              پاسخ : کوچ کردن از کدویژن به AtmelStudio

              نوشته اصلی توسط RubeuS
              در رابطه با کد اول که نوشتم . یعنی:
              کد:
              if(getbit(PIND,0)==0) {
              }
              همون طور که گفتید ، یعنی اگر پین d0 صفر بود فلان کار رو بکن.


              در رابطه با کد دومی که نوشتم. یعنی:
              کد:
              if(!getbit(PIND,0)) {
              }
              یعنی اگر پین d0 یک نبود فلان کار رو بکن.(یا اگر پین d0 صفر بود فلان کار را بکن - که کارش با کد اول یکی است) به علامت ! در پشت شرط توجه کنید.

              getbit یک دیفاینه که خودم نوشتم و بشکل زیر تعریف شده:

              کد:
              #define getbit(port,bit) ( ( (port) & (1 << (bit) ) ) >> (bit) )
              در رابطه با ننوشتنش هم :
              نه نمیشه باید نوشتش ، کامپایلر اون کدی که نوشتین را ارور سینتکسی میده و درست نیست.
              حتما باید دیفاین بالا را بالای برنامه تون بگذارید و بعد همون طور که نوشتم شرط را بنویسید.

              نکته اساسی: از کلیه دوستان میخوام حتما کدهایی را که هرجایی بهش بر میخورند ، کامپایل کنند و در محیط دیباگ نتیجه کد را ببینند.
              (انشالله اگر وقت شد زمانی که خواستم پست اول را ویرایش کنم، مطالبی در رابطه با کار کردن در محیط دیباگ atmel studio قرار میدهم)
              سلام مهندس.
              من برنامه ای رو با دیفاین getbit نوشتم که انگار جواب نداد.میشه لطف کنین و یه نگاهی هم بندازین؟
              http://www.4shared.com/rar/uP3_mc6P/new.html
              تکاور شدن جرات افزون کند.....هراس از دل مرد بیرون کند....


              تا تکاور به تن زخمی خود جان دارد....مرز اسلام در این ملک نگهبان دارد.........

              دیدگاه


                #82
                پاسخ : کوچ کردن از کدویژن به AtmelStudio

                نوشته اصلی توسط سعید دلشاد منور
                سلام مهندس.
                من برنامه ای رو با دیفاین getbit نوشتم که انگار جواب نداد.میشه لطف کنین و یه نگاهی هم بندازین؟
                http://www.4shared.com/rar/uP3_mc6P/new.html
                سلام ، لطفا کدهاتون را همینجا با استفاده از تگ کد قرار دهید.
                راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                دیدگاه


                  #83
                  پاسخ : کوچ کردن از کدویژن به AtmelStudio

                  نوشته اصلی توسط RubeuS
                  سلام ، لطفا کدهاتون را همینجا با استفاده از تگ کد قرار دهید.
                  کد:
                  #include "lcd.h"
                  #include <util/delay.h>
                  #define getbit(port,bit) ( ( (port) & (1 << (bit) ) ) >> (bit) )
                  int main(void) {
                  	DDRB=0b11111110;
                  	PORTB=0b00000001;
                     lcdInit(); 
                  	 while(1){
                  		 if(getbit(PINB,0)==0) {
                  		 lcdClear();
                  		 lcdPuts("SAEED");
                  		 _delay_ms(100);
                  		 }
                  		 }	 
                  }
                  تکاور شدن جرات افزون کند.....هراس از دل مرد بیرون کند....


                  تا تکاور به تن زخمی خود جان دارد....مرز اسلام در این ملک نگهبان دارد.........

                  دیدگاه


                    #84
                    پاسخ : کوچ کردن از کدویژن به AtmelStudio

                    نوشته اصلی توسط سعید دلشاد منور
                    کد:
                    #include "lcd.h"
                    #include <util/delay.h>
                    #define getbit(port,bit) ( ( (port) & (1 << (bit) ) ) >> (bit) )
                    int main(void) {
                    	DDRB=0b11111110;
                    	PORTB=0b00000001;
                       lcdInit(); 
                    	 while(1){
                    		 if(getbit(PINB,0)==0) {
                    		 lcdClear();
                    		 lcdPuts("SAEED");
                    		 _delay_ms(100);
                    		 }
                    		 }	 
                    }
                    برنامه تون مشکلی نداره ، با یک بار زدن دکمه اسمتون روی صفحه نمایش داده میشه.
                    اگر کتابخونه را درست تنظیم کرده باشید ، و با زدن دکمه اسمتون روی صفحه نیاد ، مشکلتون سخت افزاریه.
                    اتصالات چک شود.
                    دکمه باید روی پین صفر پورت B قرار داشته باشه و اون سرش به زمین وصل باشه.
                    راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                    کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                    نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                    http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                    انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                    دیدگاه


                      #85
                      پاسخ : کوچ کردن از کدویژن به AtmelStudio

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


                      تا تکاور به تن زخمی خود جان دارد....مرز اسلام در این ملک نگهبان دارد.........

                      دیدگاه


                        #86
                        پاسخ : کوچ کردن از کدویژن به AtmelStudio

                        علت اینکه در Atmel Studio نمی توان از تابع ftoa استفاده کرد ، چیست؟(این تابع در کدویژن در کتابخانه ی stdlib.h موجود و قابل استفاده است)
                        اینم برنامه ای که در استودیو نوشتم ولی ارور داد
                        کد:
                        #include <util/delay.h>
                        #include "lcd.h"
                        #include <stdio.h>
                        #include <stdlib.h>
                        #define ADC_VREF_TYPE 0x00
                        unsigned int read_adc(unsigned char adc_input)
                        {
                        	ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
                        	_delay_us(10);
                        	ADCSRA|=0x40;
                        	while ((ADCSRA & 0x10)==0);
                        	ADCSRA|=0x10;
                        	return ADCW;
                        }
                        int main(void)
                        {
                        int a;
                        float b;
                        char str[20],str1[20];
                        
                        // 	PORTC=0x01;
                        // 	DDRC=0x00;
                        	// ADC initialization
                        	// ADC Clock frequency: 125.000 kHz
                        	// ADC Voltage Reference: AREF pin
                        	ADMUX=ADC_VREF_TYPE & 0xff;
                        	ADCSRA=0x83;
                        	lcdInit(16);
                        	while (1)
                        	{
                           a=read_adc(0);
                           b=a*0.004887;
                           ftoa(b,2,str);
                           sprintf(str1,"%s",str);
                           lcdClear();
                           lcdGotoxy(0,0);
                           lcdPuts(str1);
                           _delay_ms(100);
                        	};
                        }
                        تکاور شدن جرات افزون کند.....هراس از دل مرد بیرون کند....


                        تا تکاور به تن زخمی خود جان دارد....مرز اسلام در این ملک نگهبان دارد.........

                        دیدگاه


                          #87
                          پاسخ : کوچ کردن از کدویژن به AtmelStudio

                          ....
                          نوشته اصلی توسط سعید دلشاد منور
                          علت اینکه در Atmel Studio نمی توان از تابع ftoa استفاده کرد ، چیست؟(این تابع در کدویژن در کتابخانه ی stdlib.h موجود و قابل استفاده است)
                          اینم برنامه ای که در استودیو نوشتم ولی ارور داد
                          کد:
                          #include <util/delay.h>
                          #include "lcd.h"
                          #include <stdio.h>
                          #include <stdlib.h>
                          #define ADC_VREF_TYPE 0x00
                          unsigned int read_adc(unsigned char adc_input)
                          {
                          	ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
                          	_delay_us(10);
                          	ADCSRA|=0x40;
                          	while ((ADCSRA & 0x10)==0);
                          	ADCSRA|=0x10;
                          	return ADCW;
                          }
                          int main(void)
                          {
                          int a;
                          float b;
                          char str[20],str1[20];
                          
                          // 	PORTC=0x01;
                          // 	DDRC=0x00;
                          	// ADC initialization
                          	// ADC Clock frequency: 125.000 kHz
                          	// ADC Voltage Reference: AREF pin
                          	ADMUX=ADC_VREF_TYPE & 0xff;
                          	ADCSRA=0x83;
                          	lcdInit(16);
                          	while (1)
                          	{
                             a=read_adc(0);
                             b=a*0.004887;
                             ftoa(b,2,str);
                             sprintf(str1,"%s",str);
                             lcdClear();
                             lcdGotoxy(0,0);
                             lcdPuts(str1);
                             _delay_ms(100);
                          	};
                          }

                          سوال بسیار خوبی است.
                          باید بگم که در استاندارد gcc این تابع در کتابخانه ی stdlib.h موجود نیست.( نیست دیگه ، مربوط به سازنده اش میشه ، عشقش نکشیده ، چنین تابعی را نزاشته . تو کدویژن گفتن خوبه گذاشتند)

                          خوب...
                          حالا باید چی کار کرد؟

                          اول ببینیم این تابع که تو کدویژن هست ، کارش چیه؟ :
                          این تابع همونطور که از اسمش پیداست یک مقدار را از float به ASCII ( منظور یک رشته از کاراکترهاست) تبدیل میکنه.

                          خوب پس دوتا راه پیش روی ماست:

                          1- بررسی میکنیم که تابعی هست که جزء استانداردهای AtmelStudio باشه و کارش مشابه این تابع باشه.

                          2- خوب اگه نتونستیم از طریق راه 1 به حل مساله برسیم ، خودمون میایم یک تابع مینویسیم که این کار را کنه .

                          -----
                          اول راه 1 را بررسی میکنیم:

                          تابع sprintf :nice:
                          این تابع میتونه اینکار را کنه( کلا میتونه خیلی کارا کنه)
                          مثال : استفاده هوشمندانه شما از این تابع برای کپی کردن یک رشته داخل یک رشته دیگه ، در همین برنامه ای که گذاشتید.(البته میشه از تابع strcpy هم برای اینکار استفاده کرد ، که در string.h موجود است)
                          البته من طبق عادتم که برای float از فرمت dd.ddf% استفاده میکردم اینکار رو کردم ولی تو gcc جواب نگرفتم ، چون کلا formating این توابع در gcc با بقیه کامپایلرهای سی فرق داره. (البته باید بیشتر تحقیق کنم ..... برام خیلی جالب بود ، منطقا باید جواب بده ولی نمیده)(میتونید امتحان کنید(کلا این دست توابع تو gcc از فرمت float پشتیبانی نمیکنند))

                          ---------------------------------------
                          راه دوم :
                          باید راه اول بیشتر بررسی بشه ، اگه نشد غمتون نباشه ، مینویسیمش ( کاری نداره که )
                          یعنی خودمون تابعی که خودمون میخوایم را بنویسیم.


                          ---------------------------------------------------------
                          البته میشه با استفاده از sprintf یجوری دور زد کار رو ،
                          شما خودتون کدوم حالت رو دوست دارید ؟
                          دور بزنیم؟ یا تابع را خودمون بنویسیم ؟

                          (اینکه دیر جواب دادم بخاطر این بود که داشتم فرمت ها رو تو sprintf بررسی میکردم)
                          راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                          کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                          نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                          http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                          انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                          دیدگاه


                            #88
                            پاسخ : کوچ کردن از کدویژن به AtmelStudio

                            سلام

                            من بهتر دیدم مطلبم رو توی این تاپیک مطرح کنم که ارتباط مستقیمی با avr studio داره.
                            بتازگی بسکام رو کنار گذاشته ام و در اولین تجربه خواستم یک lcd کاراکتری رو راه اندازی کنم.
                            توی این آدرس فایل و پروژه فایل مربوطه را گذاشته ام.
                            http://www.4shared.com/rar/tW8pucGR/lcd1.html
                            مشکلم اینه که حجم فایل هگز یا همون پروگرم مموری در حدود 5.6 درصده که به نسبت زیاده.این درحالیه که من فکر میکردم کد ایجاد شده توسط avr studio که بر اساس c هستش بایستی خیلی کمتر و بهینه تر از بسکام باشه.لطفا بررسی کنید که مشکل پروژه ایجاد شده چیه؟
                            در ضمن یک متغییر تعریف کرده ام که میخوام اونرو با یک delay مشخص (مثلا هر 250 میلی ثانیه) اضافه و مقدار رو روی lcd نمایش بدم، لطفا برنامه رو برام تصحیح کنید.
                            ضمنا برنامه نوشته شده بر اساس کتابخانه lcd4bit هستش.

                            با تشکر

                            دیدگاه


                              #89
                              پاسخ : کوچ کردن از کدویژن به AtmelStudio

                              نوشته اصلی توسط nanocycle
                              سلام

                              من بهتر دیدم مطلبم رو توی این تاپیک مطرح کنم که ارتباط مستقیمی با avr studio داره.
                              بتازگی بسکام رو کنار گذاشته ام و در اولین تجربه خواستم یک lcd کاراکتری رو راه اندازی کنم.
                              توی این آدرس فایل و پروژه فایل مربوطه را گذاشته ام.
                              http://www.4shared.com/rar/tW8pucGR/lcd1.html
                              مشکلم اینه که حجم فایل هگز یا همون پروگرم مموری در حدود 5.6 درصده که به نسبت زیاده.این درحالیه که من فکر میکردم کد ایجاد شده توسط avr studio که بر اساس c هستش بایستی خیلی کمتر و بهینه تر از بسکام باشه.لطفا بررسی کنید که مشکل پروژه ایجاد شده چیه؟
                              در ضمن یک متغییر تعریف کرده ام که میخوام اونرو با یک delay مشخص (مثلا هر 250 میلی ثانیه) اضافه و مقدار رو روی lcd نمایش بدم، لطفا برنامه رو برام تصحیح کنید.
                              ضمنا برنامه نوشته شده بر اساس کتابخانه lcd4bit هستش.

                              با تشکر
                              سلام، برای اینکه راحتتر به جواب برسیم، و همچنین درکل بتونید راحت تر با السیدی کاراکتری کارکنید ، به لینک زیر رفته و کتابخونه ی مربوط به السیدی کاراکتری را که در پست اول موجود است ، دانلود کنید ( به همراه pdf آموزشی)
                              http://www.eca.ir/forum2/index.php?topic=82130.0

                              بعد میریم سراغ اینها:
                              1- حجم زیاد اشغال شده
                              2- اون برنامه ای که خواسته بودید
                              راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                              کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                              نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                              http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                              انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                              دیدگاه


                                #90
                                پاسخ : کوچ کردن از کدویژن به AtmelStudio

                                نوشته اصلی توسط RubeuS
                                ....

                                سوال بسیار خوبی است.
                                باید بگم که در استاندارد gcc این تابع در کتابخانه ی stdlib.h موجود نیست.( نیست دیگه ، مربوط به سازنده اش میشه ، عشقش نکشیده ، چنین تابعی را نزاشته . تو کدویژن گفتن خوبه گذاشتند)

                                خوب...
                                حالا باید چی کار کرد؟

                                اول ببینیم این تابع که تو کدویژن هست ، کارش چیه؟ :
                                این تابع همونطور که از اسمش پیداست یک مقدار را از float به ASCII ( منظور یک رشته از کاراکترهاست) تبدیل میکنه.

                                خوب پس دوتا راه پیش روی ماست:

                                1- بررسی میکنیم که تابعی هست که جزء استانداردهای AtmelStudio باشه و کارش مشابه این تابع باشه.

                                2- خوب اگه نتونستیم از طریق راه 1 به حل مساله برسیم ، خودمون میایم یک تابع مینویسیم که این کار را کنه .

                                -----
                                اول راه 1 را بررسی میکنیم:

                                تابع sprintf :nice:
                                این تابع میتونه اینکار را کنه( کلا میتونه خیلی کارا کنه)
                                مثال : استفاده هوشمندانه شما از این تابع برای کپی کردن یک رشته داخل یک رشته دیگه ، در همین برنامه ای که گذاشتید.(البته میشه از تابع strcpy هم برای اینکار استفاده کرد ، که در string.h موجود است)
                                البته من طبق عادتم که برای float از فرمت dd.ddf% استفاده میکردم اینکار رو کردم ولی تو gcc جواب نگرفتم ، چون کلا formating این توابع در gcc با بقیه کامپایلرهای سی فرق داره. (البته باید بیشتر تحقیق کنم ..... برام خیلی جالب بود ، منطقا باید جواب بده ولی نمیده)(میتونید امتحان کنید(کلا این دست توابع تو gcc از فرمت float پشتیبانی نمیکنند))

                                ---------------------------------------
                                راه دوم :
                                باید راه اول بیشتر بررسی بشه ، اگه نشد غمتون نباشه ، مینویسیمش ( کاری نداره که )
                                یعنی خودمون تابعی که خودمون میخوایم را بنویسیم.


                                ---------------------------------------------------------
                                البته میشه با استفاده از sprintf یجوری دور زد کار رو ،
                                شما خودتون کدوم حالت رو دوست دارید ؟
                                دور بزنیم؟ یا تابع را خودمون بنویسیم ؟

                                (اینکه دیر جواب دادم بخاطر این بود که داشتم فرمت ها رو تو sprintf بررسی میکردم)
                                خیلی ممنون سید جان من هدر های stdlib رو نگاه هم کردم ولی بازم ندیدم.به نظرم اگز از sprintf استفاده بشه راحت تر میشه چون به هر حال این هدر اینکلود شده
                                تکاور شدن جرات افزون کند.....هراس از دل مرد بیرون کند....


                                تا تکاور به تن زخمی خود جان دارد....مرز اسلام در این ملک نگهبان دارد.........

                                دیدگاه

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