اطلاعیه

Collapse
No announcement yet.

کمک کمک AVR GCC

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

    #16
    پاسخ : کمک کمک AVR GCC

    نوشته اصلی توسط علی-
    مثل اینکه لینک ها خرابند.
    اینا لینک مستقیم دانلودش هست. امتحانش کن اگه نشد بگو واست ایمیل کنم :
    http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib/avrlib.zip
    http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib/avrlib_setup.exe

    نوشته اصلی توسط kasper
    اقای رستمی برای مثال همین برنامه که بالا گذاشتید رو تو پروتئوس اجرا کردم اما کاراکترهای بی ربطی نشون می ده. شما خودتون جواب گرفتین؟
    خب ، خوشجالم که توی کامپایلش مشکلی نداشتید

    بله عزیزم ، من تقریبا توی تمام برنامه هام از rprintf استفاده میکنم ! ( کلا چیز بدرد بخوریه )

    عجق وجق بودن کارکترها هم دو دلیل میتونه داشته باشه :
    ۱ - یکی نبودن BaudRate ارسال کننده ( میکروکنترلر ) با گیرنده ( توی پروتیوس احتمالا vitualTerminal )

    ۲ - تناسب نداشتن BaudRate با فرکانس آی سی
    شما فرکانس آی سی رو ( که توی فایل global.h معرفی شده) روی 1MHz تنظیم کن و باود ریت رو هم روی 1200 بزار ببین چی میشه .

    -----------------------------------
    راستی یه راه دیگه هم هست که بدون داشتن کتابخونه avrlib میشه اینکارو انجام داد ( البته با avrlib کار کن ، بدردت میخوره ) و اونم استفاده از همین avr-libc هست
    به این صورت :

    کد PHP:
    #include <stdio.h>

      
    static int uart_putchar(char cFILE *stream);

      static 
    FILE mystdout FDEV_SETUP_STREAM(uart_putcharNULL_FDEV_SETUP_WRITE);

      static 
    int uart_putchar(char cFILE *stream){

       if (
    == '\n')
        
    uart_putchar('\r', stream);
       
    loop_until_bit_is_set(UCSRAUDRE);
       
    UDR c;
       return 
    0;
      }

      
    int main(void){
       
    init_uart();
       
    stdout = &mystdout;
       
    printf("Helloworld!\n");

       return 
    0;
      } 


    اینو توی help خود avr-libc دیدم:
    http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html

    چگونه هوشمندانه بپرسیم

    دیدگاه


      #17
      پاسخ : کمک کمک AVR GCC

      از کد هایی که نوشتید ظاهری استفاده کردم ممنون.
      ام فکر کنم سرورش مشکل داره.
      Not Found
      The requested URL /~chrisarnold/components/microcontrollerBoard/AVR/avrlib/avrlib.zip was not found on this server.

      Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
      Apache/1.3.41 Server at www.mil.ufl.edu Port 80
      Difficult But possible
      به امید ایرانی آباد.
      http://art-net.ir

      دیدگاه


        #18
        پاسخ : کمک کمک AVR GCC

        سلام. ممنونم
        مشکل از baud rate بود. رو 1200 تنظیم کردم درست شد.
        اما اینطوری که نمی شه. baud rate رو 9600 بهتره.

        دیدگاه


          #19
          پاسخ : کمک کمک AVR GCC

          نوشته اصلی توسط علی-
          از کد هایی که نوشتید ظاهری استفاده کردم ممنون.
          ام فکر کنم سرورش مشکل داره.
          Not Found
          The requested URL /~chrisarnold/components/microcontrollerBoard/AVR/avrlib/avrlib.zip was not found on this server.

          Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
          Apache/1.3.41 Server at www.mil.ufl.edu Port 80
          واسه من که مشکلی نداره
          بهرحال avrlib رو واست ایمیل کردم ;-)

          نوشته اصلی توسط kasper
          مشکل از baud rate بود. رو 1200 تنظیم کردم درست شد.
          اما اینطوری که نمی شه. baud rate رو 9600 بهتره.
          فرکانس میکروکنترلر رو بیشتر کن ، باود ریت هم میتونه زیادتر بشه

          راستی دوستان ، کانال IRC هم تشریف بیارین ( ما دوستای خوبی واسه هم میشیم :biggrin
          چگونه هوشمندانه بپرسیم

          دیدگاه


            #20
            پاسخ : کمک کمک AVR GCC

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

            دیدگاه


              #21
              پاسخ : کمک کمک AVR GCC

              سلام.
              اقای رستمی در رابطه با این برنامه ای که بالا گذاشتید یه سوال دارم.
              چرا برنامه رو اینقدر پیچونده؟ تابع FDEV_SETUP_STREAM برای چیه؟
              یه توضیحی درباره این خط بدین:
              static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
              برنامه رو خیلی پیچونده.
              کلا من یه مقدار با ساختار gcc مشکل دارم. به نظر ساختار کمی متفاوت با C ANCI داره. مگه gcc از C ANCI پشتیبانی نمی کنه؟
              مثلا کلماتی مثل attribute و یا PROGMEM که در تعریف بعضی از ارایه ها بعد از اوردن اسم ارایه این کلمه اومده.البته فعلا این دوتا رو یادمه. حالا اینها چه معنی ای می دهند و در کجا و چه شرایطی بکار می روند؟

              دیدگاه


                #22
                پاسخ : کمک کمک AVR GCC

                سلام .................

                دوستان GCC کار ، ممکنه لطف کنید و در مورد این کامپایلر(؟!) یه توضیحی بدین . من مدتهاست که با CodeVision کار می کنم . اما می خواستم بدونم این GCC قضیش چیه ؟(خواهش می کنم کامپایلر CodeVision رو نکوبید ) . ممنون و موفق باشید .
                دوستان! مدتی کمتر به سایت میام ..

                دیدگاه


                  #23
                  پاسخ : کمک کمک AVR GCC

                  کامپایلر CodeVision اصلا محیط جذاب و زیبایی نداره و همین طور قابیلت ساپورت درلینوکس . پس میشه به این نکته اشاره کرد که اگه شما روی پرئژه ای کار می کنید این پروژه هم میتونه برای کاربران لینوکس مورد استفاده قرار بگیره هم ویندور . مورد بعد تغییر دادن ادیتور اون هست که میشه از ادیتور های جداب و قدرتمندی همچون Eclipse در اون استفاده کرد که تازه خود قابلیت های Eclips هم به اون اضافه میشه. و همچنین دارای برنامه های جانبی زیاد که یکی از اون ها کدویزارد است با نام CodeWIz که آخره قدرت مشکل کد ویزارد CodeVision اینه که کد ها را در هم می ریزه میره اگه یکی بخواد بعد ویرایش کنه آخر کار تصمیم میگیره یه پروژه جدید با یه کد ویزارد جدید بسازه . البته اینا چندید نکته بود باز هم میشه توی این زمینه بحث کرد.
                  Difficult But possible
                  به امید ایرانی آباد.
                  http://art-net.ir

                  دیدگاه


                    #24
                    پاسخ : کمک کمک AVR GCC

                    سلام. جناب -ali من اخرش متوجه نشدم برای تولید تنظیمات اولیه میکروهای AVR در WINAVR از CODEWIZ استفاده می کنید یا AVRWIZ ؟
                    یه جا گفته بودید که AVRWIZ فوق العاده است. منم دانلودش کردم دیدم اصلا بدر نمی خوره. حالا می گین CODEWIZ .
                    یکی از دوستان لینک دانلود CODEWIZ را بزاره.
                    AVRWIZ که به نظر من خیلی بدرد نخوره.

                    دیدگاه


                      #25
                      پاسخ : کمک کمک AVR GCC

                      درود
                      ببخشید که دیر جواب میدم. هر سری خواستم جواب بدم ، سرور down شد

                      نوشته اصلی توسط حسام الدین
                      سلام .................

                      دوستان GCC کار ، ممکنه لطف کنید و در مورد این کامپایلر(؟!) یه توضیحی بدین . من مدتهاست که با CodeVision کار می کنم . اما می خواستم بدونم این GCC قضیش چیه ؟(خواهش می کنم کامپایلر CodeVision رو نکوبید ) . ممنون و موفق باشید .
                      نمیدونم اینارو دیدید یا نه :
                      مقایسه ای بین avr-gcc و codevision
                      http://www.eca.ir/forum2/index.php?topic=17303.0
                      http://www.eca.ir/forum2/index.php?topic=18961.0

                      نوشته اصلی توسط regiona
                      سلام.
                      اقای رستمی در رابطه با این برنامه ای که بالا گذاشتید یه سوال دارم.
                      چرا برنامه رو اینقدر پیچونده؟ تابع FDEV_SETUP_STREAM برای چیه؟
                      یه توضیحی درباره این خط بدین:
                      static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
                      برنامه رو خیلی پیچونده.
                      کلا من یه مقدار با ساختار gcc مشکل دارم. به نظر ساختار کمی متفاوت با C ANCI داره. مگه gcc از C ANCI پشتیبانی نمی کنه؟
                      مثلا کلماتی مثل attribute و یا PROGMEM که در تعریف بعضی از ارایه ها بعد از اوردن اسم ارایه این کلمه اومده.البته فعلا این دوتا رو یادمه. حالا اینها چه معنی ای می دهند و در کجا و چه شرایطی بکار می روند؟
                      شما حتما با stdin و stdout و stderr آشنا هستید
                      اینها ورودی و خروجیهای استاندارد برای تعامل یه برنامه با کاربر هستن

                      توی avr-libc هم این ورودی خروجی ها فراهم شده ، منتها کمی متفاوت و این تفاوت هم ربطی به سازگار نبودن کامپایلر با C استادندارد نداره

                      تفاوت بخاطر اینه که avr-libc اطلاعی درباره سخت افزاری که قراره میزبان این ورودی خروجی ها بشه نداره

                      مثلا یه موقع شما میخوای از پورت سریال بعنوان ورودی خروجی استاندارد استفاده کنی ، یه موقع میخوای از LCD و Keypad استفاده کنی و ...

                      در کل ، این تفاوت در نحوه کار با stdin و stdout بخاطر متفاوت بودن نوع سخت افزاریه که ما داریم استفاده میکنیم

                      خود avr-libc هم گفته که این استریم ها در اول برنامه پیکره بندی نمیشن و این کار به عهده برنامه نویس هست ( به همون دلیلی که بالا گفتم )



                      خب حالا سوال اینجاست که ما چطور میتونیم این استریم ها رو به سخت افزار مورد نظرمون هدایت کنیم !
                      چون سیستم عاملی ( و فایل سیستمی ) در کار نیست ، چیزی بعنوان file هم در اختیار ما نیست که بتونیم با تابع fopen بازش کنیم و حالشو ببریم
                      ولی ناراحت نباشین ، avr-libc به ما fdevopen رو داده

                      fdevopen به ما این امکانو میده که بتونیم استریمی رو به سخت افزار مورد نظرمون نسبت بدیم
                      که البته راه انداز سخت افزار ما باید توابعی رو جهت ارسال یا دریافت ( یک ) کارکتر در اختیار ما گذاشته باشه
                      تا ما بتونیم این دو تا تابع رو به fdevopen تسلیم کنیم و السلام



                      ولی یه چیز دیگه هم نبازه ( اگه گفتی چیه ؟! )
                      تابعی برای رفتن به خط بعدی تا هر موقع ما از کارکتر کنترلی n\ استفاده کردیم ، از اون استفاده بشه
                      به این تابع put میگن



                      البته ماکرویی بنام fdev_setup_stream برای پیکره بندی اولیه یک استریم فراهم شده

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

                      این تابعی هست برای ارسال یک کارکتر به پورت سریال ( را ه انداز سخت افزار ما که دز اینجا پورت سریاله )
                      کد PHP:
                      static int uart_putchar(char cFILE *stream); 



                      این پیکره بندی اولیه فایلی ( استریمی ) هست که بعدا بعنوان stdout استفاده میشه ( تابعی که در بالا معرفی کردیمو به این میدیم )
                      کد PHP:
                      static FILE mystdout FDEV_SETUP_STREAM(uart_putcharNULL_FDEV_SETUP_WRITE); 


                      این هم که کد تابع uart_putchar هست
                      کد PHP:
                      uart_putchar(char cFILE *stream


                      کد PHP:
                        {

                         if (
                      == '\n')

                          
                      uart_putchar('\r', stream);

                         
                      loop_until_bit_is_set(UCSRAUDRE);

                         
                      UDR c;

                         return 
                      0;

                        } 



                      نسبت دادن stdout به استریمی که خومون ساختیم
                      کد PHP:
                      stdout = &mystdout


                      تابع printf هم که متن جلوشو به stdout میفرسته
                      کد PHP:
                      printf("Helloworld!\n"); 



                      ------------------------------
                      میدونم که یه مقدار شیر تو شیر توضیح دادم

                      برای درک کاملتر این قضیه توصیه میکنم که حتما حتما اینجارو نگاه کن ( لینکهارو هم دنبال کن )

                      http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html
                      چگونه هوشمندانه بپرسیم

                      دیدگاه


                        #26
                        پاسخ : کمک کمک AVR GCC

                        سلام. خیلی ممنون از توضیحاتتون. مشکل اینه که من با C به صورت کامل اشنایی ندارم. اینو می دونم که C خیلی خیلی گسترده تر از اون چیزیه که من بلدم اما این مسائلی که شما گفتید رو جایی تا بحال ندیده ام.
                        تو یک کلام: رمز موفقیت شما چیه؟
                        ضمنا کسی لینکی از این CODEWIZ که جناب –ali می فرمایند ندارد. من یکی دانلود کردم از سایتی به نام coupla اما اصلا ربطی به میکرو ندارد. اقای –ali می شه بگید از کجا دانلود کردید؟

                        دیدگاه


                          #27
                          پاسخ : کمک کمک AVR GCC

                          نوشته اصلی توسط regiona
                          سلام. خیلی ممنون از توضیحاتتون. مشکل اینه که من با C به صورت کامل اشنایی ندارم. اینو می دونم که C خیلی خیلی گسترده تر از اون چیزیه که من بلدم اما این مسائلی که شما گفتید رو جایی تا بحال ندیده ام.
                          البته فقط یاد گرفتن زبان C کافی نیست
                          اینکه از چه ابزاریهایی هم استفاده میکنیم میتونه در قابل انعطاف بودنمون تاثیرگزار باشه

                          نوشته اصلی توسط regiona
                          تو یک کلام: رمز موفقیت شما چیه؟
                          اینو باید از کسایی که به موفقیت رسیدن پرسید :smile:

                          ولی من یکی از زمانی که به جماعت گنو/لینوکسی پیوستم خیلی خیلی چیزا ازشون یاد گرفتم ( و دارم میگیرم )
                          چگونه هوشمندانه بپرسیم

                          دیدگاه


                            #28
                            پاسخ : کمک کمک AVR GCC

                            آقا من شرمنده ام خیلی شرمنده چند روزی بود نتونستم بیام این اشکال تایپی بود همون AVRWIZ بود. اما خیلی من ازش استفاده می کنم هم راهنمای خوبی هست هم توی استفاده از تایمر حرف نداره اما اگه منتظر نسخه ی جدیدش باشیم دیگه همه چیزی را ساپورت می کنه.
                            Difficult But possible
                            به امید ایرانی آباد.
                            http://art-net.ir

                            دیدگاه


                              #29
                              پاسخ : کمک کمک AVR GCC

                              سلام.
                              پس هر موقع نسخه جدیدش اومد اینجا لینکشو بزار.
                              خیلی ممنونم.

                              دیدگاه


                                #30
                                پاسخ : کمک کمک AVR GCC

                                نوشته اصلی توسط حمید رستمی



                                شما حتما با stdin و stdout و stderr آشنا هستید
                                اینها ورودی و خروجیهای استاندارد برای تعامل یه برنامه با کاربر هستن
                                دوباره سلام.
                                اقای رستمی می تونید درباره stderr توضیح بدید؟ اینکه چیه و چه کاربردی داره؟
                                سوال مهمتر اینه:
                                درباره کلماتی مثل attribute و یا PROGMEM که در تعریف بعضی از ارایه ها بعد از اوردن اسم ارایه این کلمه اومده توضیح بدید.
                                اینکه چه معنی ای می دهند و در کجا و چه شرایطی بکار می روند؟

                                دیدگاه

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