اطلاعیه

Collapse
No announcement yet.

در خواست کمک برای winavr ؟

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

    در خواست کمک برای winavr ؟

    با سلام
    من تازه دارم winavr رو یاد می گیرم چند تا سوال داشتم :

    1-چطوری به پورت سریال یه چیزی رو ارسال کنیم ,مثلا یه رشته رو ؟
    2-چطوری یه پورتهایی ورودی یا خروجی قرار بدیم ؟
    3-به غیر از این دستور دستور دیگه ای برای یک کردن یه پین وجود نداره آخه این تابع یکم ضایع است DDRB |= 1<<1;
    4-چطوری از adc میکر استفاده کنیم ؟
    5-اصلا یه منبع الکترونیکی مثل pdf این جا بزارید ممنون میشم,فرقی نمیکنه فارسی یا انگلیسی باشه فقط رون باشه ؟

    با تشکر
    :nerd:
    دانلود کی های جدید کاسپر
    جهت سفارش طراحی و برنامه نویسی سایت, قالب, بنر قیف و فلش
    با این آی دی تماس بگیرید :
    sam.shark360

    #2
    پاسخ : در خواست کمک برای winavr ؟

    Serial Port
    کد PHP:
    //----- Include Files ---------------------------------------------------------
    #include <avr/io.h>        // include I/O definitions (port names, pin names, etc)
    #include "global.h"        // include our global settings
    #include "uart.h"        // include uart function library
    #include "rprintf.h"    // include printf function library

    //----- Begin Code ------------------------------------------------------------
    int main(void)
    {
        
    // initialize our libraries
        // initialize the UART (serial port)
        
    uartInit();

        
    // set the baud rate of the UART for our debug/reporting output
        
    uartSetBaudRate(9600);

        
    // initialize rprintf system
        // - use uartSendByte as the output for all rprintf statements
        //  this will cause all rprintf library functions to direct their
        //  output to the uart
        // - rprintf can be made to output to any device which takes characters.
        //  You must write a function which takes an unsigned char as an argument
        //  and then pass this to rprintfInit like this: rprintfInit(YOUR_FUNCTION);
        
    rprintfInit(uartSendByte);

        
    rprintf("Hello World\n");

        return 
    0;





    IO Ports
    کد PHP:
    //----- Include Files ---------------------------------------------------------
    #include <avr/io.h>        // include I/O definitions (port names, pin names, etc)

    int main(void)
    {
        
    DDRA 0xFF;                // PORTA is Output
        
    DDRB 0x00;                // PORTB is Input
        
    DDRC |= ( <&ltPC0 )        // PC.0 is Output
        
    DDRC &= ~( <&ltPC1 )        // PC.1 is Input
        
    return 0;




    3
    کد PHP:
    //----- Include Files ---------------------------------------------------------
    #include <avr/io.h>        // include I/O definitions (port names, pin names, etc)

    int main(void)
    {
        
    sbi(DDRBDDB1);
        
    // or
        
    sbi(DDRB1);
        
        
    cbi(DDRBDDB2);
        
        if ( 
    bit_is_set(PINB2) )
        {
            
    //...
        
    }
        
        return 
    0;



    [hr]
    4. ADC
    کد PHP:
    #include <avr/io.h>        // include I/O definitions (port names, pin names, etc)
    #include "global.h"        // include our global settings
    #include "a2d.h"        // include A/D converter function library

    //----- Begin Code ------------------------------------------------------------
    int main(void)
    {
        
    unsigned char adcVal8bit;
        
    unsigned int adcVal10bit;
        
        
    // turn on and initialize A/D converter
        
    a2dInit();

        
    // set the a2d prescaler (clock division ratio)
        // - a lower prescale setting will make the a2d converter go faster
        // - a higher setting will make it go slower but the measurements
        //  will be more accurate
        // - other allowed prescale values can be found in a2d.h
        
    a2dSetPrescaler(ADC_PRESCALE_DIV32);

        
    // set the a2d reference
        // - the reference is the voltage against which a2d measurements are made
        // - other allowed reference values can be found in a2d.h
        
    a2dSetReference(ADC_REFERENCE_AVCC);

        
    // use a2dConvert8bit(channel#) to get an 8bit a2d reading
        // use a2dConvert10bit(channel#) to get a 10bit a2d reading

        
    while(1)
        {
            
    adcVal8bit a2dConvert8bit(0) ;
            
    adcVal10bit a2dConvert10bit(1)
        }

        return 
    0;




    توجه مهم:
    برای مورد پورت سربال و ADC که نوشتم نیاز به کتابخانهٔ Avrlib هست که از اینجا میتونید دانلود کنید.
    چگونه هوشمندانه بپرسیم

    دیدگاه


      #3
      پاسخ : در خواست کمک برای winavr ؟

      با سلام
      ممنون دوست عزیز ,اما یه مشکلی هست این لینکی که دادی خرابن داره و اون برنامه هاییی هم که نوشتی اونا هم یه جورایی error میدن مخصوصا این سومیه. :angry:
      اگه یه لینکه دیگه داری اینجا قرار بدی ممنون میشم. :angry:
      راستی من از winavr توی AVR Studio استفاده میکنم مشکل از این نباشه ؟ :mrgreen:

      با تشکر
      :nerd:
      دانلود کی های جدید کاسپر
      جهت سفارش طراحی و برنامه نویسی سایت, قالب, بنر قیف و فلش
      با این آی دی تماس بگیرید :
      sam.shark360

      دیدگاه


        #4
        پاسخ : در خواست کمک برای winavr ؟

        نه لینک که مشکلی نداره

        بهرحال این لینک مستقیم کتابخانهٔ Avrlib با فرمت zip
        http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib/avrlib.zip

        با فرمت exe برای نصب :
        http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib/avrlib_setup.exe

        نوشته اصلی توسط sharktech
        ... اون برنامه هاییی هم که نوشتی اونا هم یه جورایی error میدن مخصوصا این سومیه. :angry:
        بله طبیعیه که error میده.
        اگر دوست داشتید بفرمایید یه دونه بنویسم پلود کنم ببینید روند کار به چه صورته.
        چگونه هوشمندانه بپرسیم

        دیدگاه


          #5
          پاسخ : در خواست کمک برای winavr ؟

          3-به غیر از این دستور دستور دیگه ای برای یک کردن یه پین وجود نداره آخه این تابع یکم ضایع است DDRB |= 1<<1;
          سلام،
          اصلا اینطور نیست چون اگر عادت کنید به این سبک، کدتون پرتابل میشه و خیلی راحت میتونید اون رو به قطعات و کامپایلرها و حتی coreهای دیگه پورت کنید.
          There is nothing so practical as a good theory. — Kurt Lewin, 1951

          دیدگاه


            #6
            پاسخ : در خواست کمک برای winavr ؟

            با سلام و تشکر
            اگر دوست داشتید بفرمایید یه دونه بنویسم پلود کنم ببینید روند کار به چه صورته.
            این چه حرفیه ,چرا دوست ندارم ,نیکی و پرسش !!! oo:

            اگه این کار رو بکنی که خیلی خوب میشه. :nice:

            اصلا اینطور نیست چون اگر عادت کنید به این سبک، کدتون پرتابل میشه و خیلی راحت میتونید اون رو به قطعات و کامپایلرها و حتی coreهای دیگه پورت کنید.
            منظورتون رو نفهمیدم . :mrgreen:
            اگه توضیح بدید ممنون میشم.

            with many thanks
            :nerd:
            دانلود کی های جدید کاسپر
            جهت سفارش طراحی و برنامه نویسی سایت, قالب, بنر قیف و فلش
            با این آی دی تماس بگیرید :
            sam.shark360

            دیدگاه


              #7
              پاسخ : در خواست کمک برای winavr ؟

              برنامه نمونه برای ADC براتون گزاشتم. امیدوارم مفید باشه.
              کاری که کردم این بود که سورسآ‌های مورد نیاز برای کامپایل رو از پوشه نصب avrlib توی یه پوشه در داخل فولدر برنامه گزاشتم که بدون داشتن avrlib بصورت کامل هم کامپایل بشه.
              البته بهتره که Avrlib یه جای ثابتی از فایل سیستم باشه که نیاز به آوردن سورسها داخل پوشهٔ پروژه نباشه.

              روند کامپایل هم توی Makefile معلومه که به چه صورت هست.

              نمیآ‌دونم توی AVR Studio چطور باید کامپایل کرد.
              من توی ترمینال با زدن make کامپایل میآ‌کنم ، الان فایل هگز ساخته شده.

              موفق باشید دوست عزیز :smile:

              نوشته اصلی توسط رضا سپاس یار
              3-به غیر از این دستور دستور دیگه ای برای یک کردن یه پین وجود نداره آخه این تابع یکم ضایع است DDRB |= 1<<1;
              سلام،
              اصلا اینطور نیست چون اگر عادت کنید به این سبک، کدتون پرتابل میشه و خیلی راحت میتونید اون رو به قطعات و کامپایلرها و حتی coreهای دیگه پورت کنید.
              کاملا حق با جناب سپاس یار هست :smile:
              عادت کنید به اون شکل استفاده کنید.
              فایل های پیوست شده
              چگونه هوشمندانه بپرسیم

              دیدگاه


                #8
                پاسخ : در خواست کمک برای winavr ؟

                نمیآ‌دونم توی AVR Studio چطور باید کامپایل کرد.
                خیلی ساده تر از Winavr :biggrin:

                دیدگاه


                  #9
                  پاسخ : در خواست کمک برای winavr ؟

                  با سلام
                  من هر برنامه ای که بیرون مینویسم error میده اما وقتی که توی فولدر فایل ضمیمه شده توسط شما می نویسم توی main.c دیگه error نمیده . :angry: :angry:
                  این avrlib_setup.exe فایل رو هم نصب کردم اما دوباره error میده که فلان head فایل موجود نیست,خودم فکر کنم که مسیری که avrlib رو نصب کردم اشتباهه ,به نظر شما این فایل رو باید کجا نصب کنم که دیگه error نده. :cry:
                  راستی من این فایل رو توی خود پوشه winavr نصب کردم به این صورت :
                  کد:
                  F:\WinAVR-2009\AVRlib
                  با تشکر
                  :nerd:
                  دانلود کی های جدید کاسپر
                  جهت سفارش طراحی و برنامه نویسی سایت, قالب, بنر قیف و فلش
                  با این آی دی تماس بگیرید :
                  sam.shark360

                  دیدگاه


                    #10
                    پاسخ : در خواست کمک برای winavr ؟

                    باید مسیر نصب avrlib توی متغیری بنام AVRLIB قرار بگیره. ( منظور متغیر در برنامه نیست ، در خود سیستم هست. مثلا برای ویندوز اینجا رو ببینید. )

                    طبیعتا Makefile هم باید ادیت بشه. به Example های خود avrlib توجه کنید.

                    توضیحات مفصل در مورد نصب هم اینجا داده شده.
                    چگونه هوشمندانه بپرسیم

                    دیدگاه


                      #11
                      پاسخ : در خواست کمک برای winavr ؟

                      نوشته اصلی توسط رضا سپاس یار
                      3-به غیر از این دستور دستور دیگه ای برای یک کردن یه پین وجود نداره آخه این تابع یکم ضایع است DDRB |= 1<<1;
                      سلام،
                      اصلا اینطور نیست چون اگر عادت کنید به این سبک، کدتون پرتابل میشه و خیلی راحت میتونید اون رو به قطعات و کامپایلرها و حتی coreهای دیگه پورت کنید.
                      سلام
                      کلا استاندارهای لازم برای کد های پرتابل رو از کجا میشه پیدا کرد؟
                      دوم اینکه مثلا ما اگه کد بالایی رو بصورت DDRB|=0x02 بنویسیم از حالت پرتابل بودن خارج میشه؟

                      دیدگاه


                        #12
                        پاسخ : در خواست کمک برای winavr ؟

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


                        سلام،
                        اصلا اینطور نیست چون اگر عادت کنید به این سبک، کدتون پرتابل میشه و خیلی راحت میتونید اون رو به قطعات و کامپایلرها و حتی coreهای دیگه پورت کنید.
                        سلام
                        کلا استاندارهای لازم برای کد های پرتابل رو از کجا میشه پیدا کرد؟
                        دوم اینکه مثلا ما اگه کد بالایی رو بصورت DDRB|=0x02 بنویسیم از حالت پرتابل بودن خارج میشه؟

                        [/quote]

                        سلام،

                        استانداردها همون استاندارد ANSI/ISO C است یعنی وقتی میبینید ANSI C همچین چیزی نداره: DDRB.2 =1 شما هم نباید چنین چیزی تو برنامه تون داشته باشید. بهترین مرجع برای یادگیری برنامه نویسی استاندارد، کتابخانه Avrlib است که توسط Pascal Stang به شکل کاملاً حرفه ای و استاندارد نوشته شد.
                        There is nothing so practical as a good theory. — Kurt Lewin, 1951

                        دیدگاه


                          #13
                          پاسخ : در خواست کمک برای winavr ؟

                          نوشته اصلی توسط حمید رستمی
                          باید مسیر نصب avrlib توی متغیری بنام AVRLIB قرار بگیره. ( منظور متغیر در برنامه نیست ، در خود سیستم هست. مثلا برای ویندوز اینجا رو ببینید. )

                          طبیعتا Makefile هم باید ادیت بشه. به Example های خود avrlib توجه کنید.

                          توضیحات مفصل در مورد نصب هم اینجا داده شده.
                          سلام
                          من هم نمیتونم lib ها رو اضافه کنم.در قسمت سیستم>ادونس>Environment >و در قسمت سیتم واریابل همونطور که خودشون گفتن:
                          کد:
                          AVRLIB = c:/code/avr/avrlib    <-- change to actual AVRlib install directory
                          یک واریابل با نام AVRlib درست کردم ولی روش تست خودش و make برنامه من نشون میده که هنوز نصب نشده.
                          فایل exe که خودش تحت عنوان avrlib_setup گذاشته هم همون کارهایی رو میکنه که من در بالا انجام دادم ولی بی فایدست. :NO:
                          متاسفانه تو تاپیک دیگه هم گیر افتادم:
                          http://www.eca.ir/forum2/index.php?topic=30048.0
                          پیشاپیش از راهنماییهاتون تشکر میکنم....

                          دیدگاه


                            #14
                            پاسخ : در خواست کمک برای winavr ؟

                            سلام.
                            یه جزوه اینجا هست:
                            winavr.kavirelectronic.ir

                            دیدگاه


                              #15
                              پاسخ : در خواست کمک برای winavr ؟

                              حواستون باشه توی مسیر نصب AVRlib فاصله نباشه.

                              یا اگر مایلید از این آ‌Makefile استفاده کنید. که دیگه نیاز به نصب avrlib نداشته باشید!
                              توی پوشهٔ پروژه یه پوشه بنام avrlib درست میآ‌کنید و سورسآ‌کدهای مورد نیاز رو از پوشهٔ avrlib ( هر جا که هست مهم نیست دیگه! ) به این پوشه کپی میآ‌کنید.
                              بعدش توی Makefile اونارو معرفی میآ‌کنید که کامپایل کنه.



                              مثلا برای نوشتن برنامهآ‌ای که از adc بخونه و به پورت سریال ارسال کنه نیاز به سورسآ‌های a2d.c , uart.c , rprintf.c هست. پس اینارو توی خط اول همینطور که میآ‌بینید میآ‌نویسیم. بعلاوه اینکه فایل سورس + هیدر مربوطه رو به پوشهٔ avrlib که خودمون در دایرکتوری پروژمون ساختیم کپی میآ‌کنیم.


                              کد PHP:
                              OBJS avrlib/buffer.o avrlib/uart.o avrlib/rprintf.o avrlib/a2d.o main.o
                              CC 
                              avr-gcc
                              MCU 
                              atmega32
                              INCDIR 
                              = -I. -I./avrlib
                              CPFLAGS 
                              = -O1

                              all
                              : $(OBJS)
                                  
                              avr-gcc $(OBJS) -o output.$(INCDIR) -mmcu=$(MCU) $(CPFLAGS) -Wall
                                  avr
                              -objcopy output.o output.hex -O ihex
                                  
                              @echo [Done]
                                  
                              flash:
                                  
                              sudo avrdude -c usbasp -$(MCU) -U flash:w:output.hex

                              rfuse
                              :
                                  
                              avrdude -cusbasp -pm8 -U lfuse:r:lfuse.txt:r
                                  avrdude 
                              -cusbasp -pm8 -U hfuse:r:hfuse.txt:r
                                  hexdump lfuse
                              .txt
                                  hexdump hfuse
                              .txt

                              %.o: %.c
                                  
                              $(CC) -$< -Wall $(INCDIR) -mmcu=$(MCU) $(CPFLAGS) -o$@

                              .
                              S.o:
                                  $(
                              CC) -$< -x assembler-with-cpp -Wall $(INCDIR) -mmcu=$(MCU) $(CPFLAGS) -o$@

                              .
                              c.s:
                                  $(
                              CC) -$< -Wall $(INCDIR) -mmcu=$(MCU) $(CPFLAGS) -o$@
                                  
                              clean:
                                  
                              rm -rfv *.*.hex ./avrlib/*.o 


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

                              دیدگاه

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