اطلاعیه

Collapse
No announcement yet.

نمونه کدهایی برای XMEGA

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : نمونه کدهایی برای XMEGA

    وقت بخیر

    کد:
    void init_adc (void)
    {
      ADC_CalibrationValues_Load(&ADCA);
      ADC_ConvMode_and_Resolution_Config(&ADCA, ADC_ConvMode_Signed, ADC_RESOLUTION_12BIT_gc);
      ADC_Prescaler_Config(&ADCA, ADC_PRESCALER_DIV512_gc);
       
       ADC_Reference_Config(&ADCA, ADC_REFSEL_INTVCC_gc);
       ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH0,ADC_CH_INPUTMODE_SINGLEENDED_gc,ADC_CH_GAIN_1X_gc);
       
       ADC_Ch_InputMux_Config(&ADCA.CH0, ADC_CH_MUXPOS_PIN1_gc, 0);
       ADC_Ch_Interrupts_Config(&ADCA.CH0, ADC_CH_INTMODE_COMPLETE_gc, ADC_CH_INTLVL_LO_gc);
     
       ADC_Enable(&ADCA);
     
       ADC_Wait_32MHz(&ADCA);
       __enable_interrupt();
       ADC_Ch_Conversion_Start(&ADCA.CH0);
    }
    این کد راه اندازی هست !! البته من برای iar نوشتم .

    نکته این که دستورات تعریف شده تغییر رنگ نمیدن !!

    دیدگاه


      پاسخ : نمونه کدهایی برای XMEGA

      با تشکر از پاسخ گویی شما دوست عزیز ، در اتمل استودیو ورژن 7 که من دارم هنگامی که دستورات نوشته بشوند اگر درست باشد ( داخل لایبرری فراخوانی شده ، قرار داشته باشد ) تغیر رنگ میدهد به بنفش یا رنگ های دیگر به معنی اینکه " دستور نوشته شده داخل لایبرری ها موجود است " می دهد .
      و مورد دوم اینکه بنده دنبال راه اندازی نیستم ، دنبال بدست آوردن مقدار اندازه گیری شده برای همه کانال ها هستم. در کدویژن خیلی راحت با دستور( ADCx_read(n ، که n شماره کانال است ، مقدار نوشته شده بدست می آید ولی در اتمل نمیدونم به چه تابعی اینکار رو انجام میدن . جالب اینجاس که تو منوال نوشته نتایج داخل ADCx.CHn.RESL/H قرار می گیره ولی کامپایلر اشکال های نامفهوم میگیره .

      دیدگاه


        پاسخ : نمونه کدهایی برای XMEGA

        من برای راه اندازی ds3231 خواستم از کتابخانه استاد کی نژاد استفاده کنم اما مشکلم اینه کدم به اینجا که میرسه هنگ میکنه
        کد:
        [FONT=Yekan]TWI_MasterWriteRead(&twiMaster,SLAVE_ADDRESS,address_data,1,3);[/FONT]
        [FONT=Yekan]while (twiMaster.status != TWIM_STATUS_READY);[/FONT]
        کدهای main هم به این صورته :
        کد:
        [FONT=Yekan]#define F_CPU 2000000ul[/FONT]
        #include <avr/io.h>
        #include <util/delay.h>
        #include <stdlib.h>
        
        
        #include "xmega_keypad.h"
        #include "xmega_lcd_v0.h"
        #include "twi_master_driver.h"
        
        
        #define F_CPU            2000000UL
        #define BAUDRATE        100000UL
        #define SLAVE_ADDRESS   0x68
        
        
        TWI_Master_t twiMaster;    /* TWI master module. */
        
        
        char x[]="ds1307 init";
        char xx[]="NO KEY";
        char xxx[]="get time...";
        
        
        
        
        
        
        int main(void)
        {  
            int keypad;
            char temp;
            unsigned char  address_data[4];
            address_data[0]=0;
             PORTB_DIR=0x0f;
             PORTB_OUT=0x0f;
             _delay_ms(500);
             PORTB_OUT=0x00;
             _delay_ms(500);
             init_keypad();
            LCDInit();
            PORTB_OUT=0x00;
            LCDGotoXY(0,0);
            TWI_MasterInit(&twiMaster,&TWIE,TWI_MASTER_INTLVL_LO_gc,TWI_BAUD(F_CPU, BAUDRATE));    
            LCDStringRam(x);
            _delay_ms(2000);
            LCDClr();
            
            
            while (1) 
            {
            keypad=key_scan();
            if (keypad==15)
            {
                LCDStringRam(xxx);
                TWI_MasterWriteRead(&twiMaster,SLAVE_ADDRESS,address_data,1,3);
                while (twiMaster.status != TWIM_STATUS_READY);
                temp=twiMaster.readData[0];
                LCDClr();
                LCDGotoXY(0,0);
                LCDSendData(temp);
                temp=twiMaster.readData[1];
                LCDGotoXY(1,1);
                LCDSendData(temp);
                
            }
            
            _delay_ms(250);
            LCDClr();
            }
        }
        کد:
        
        

        دیدگاه


          پاسخ : نمونه کدهایی برای XMEGA

          وقت بخیر

          بنظر میاد مشکل شما در شناسایی و آدرس دهی باشه !! پیشنهاد میکنم برای دنبال کردن صحت ارسال آدرس روی باس از دیباگر کمپایلر استفاده کنید و مطمئن بشید که آدرس اسلیو درست ارسال میشه !! مواقعی لازمه که آدرس شیفت به چپ بشه دقت کنید اعمال میشه یا خدتون باید اینکارو بکنید .

          دیدگاه


            پاسخ : نمونه کدهایی برای XMEGA

            نوشته اصلی توسط reza.falahi نمایش پست ها
            من برای راه اندازی ds3231 خواستم از کتابخانه استاد کی نژاد استفاده کنم اما مشکلم اینه کدم به اینجا که میرسه هنگ میکنه
            ک
            من کد شما را با دقت بررسی نکردم. اما در نمونه کدی که شما از آن استفاده کرده اید، وقفه فعال است. در حالیکه در سورس شما نه روتین وقفه twi وجود دارد و نه مجوز کلی وقفه فعال شده است.
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه


              پاسخ : نمونه کدهایی برای XMEGA

              نوشته اصلی توسط طراح نمایش پست ها
              من کد شما را با دقت بررسی نکردم. اما در نمونه کدی که شما از آن استفاده کرده اید، وقفه فعال است. در حالیکه در سورس شما نه روتین وقفه twi وجود دارد و نه مجوز کلی وقفه فعال شده است.
              استاد من این ها رو به کدم اضافه کردم
              شروع main
              کد HTML:
              sei();
              بعد از اتمام main
              کد HTML:
              ISR(TWIE_TWIM_vect){	TWI_MasterInterruptHandler(&twiMaster);	LCDClr();	LCDStringRam(xxxx);	_delay_ms(500);	LCDClr();}
              اما وارد روتین وقفه نمیشه شما حدس نمیزنید که اشتباه من کجاس ؟؟

              دیدگاه


                پاسخ : نمونه کدهایی برای XMEGA

                در نمونه کد اصلی در تابع init_tcd0 به PMIC_CTRL مقدار دهی مناسب انجام شده تا وقفه های سطح Low مجوز وقوع پیدا کنند. آیا در کد شما هم به این رجیستر مقدار درست نسبت داده شده است؟
                اوژن: به معنای افکننده و شکست دهنده است
                دانایی، توانایی است-Knowledge is POWER
                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                دیدگاه


                  پاسخ : نمونه کدهایی برای XMEGA

                  یه سوال داشتم استاد
                  برای راه اندازی GLCD از کتابخانه شما استفاده کردم اما چندتا warning داره و هیچ کاریم انجام نمیشه !!
                  هیچ پیکسلی روشن نمیشه !!
                  میتونه اشکال از این warning ها باشه یا جای دیگه ای دنبال مشکل بگردم ؟؟
                  کد HTML:
                  Warning		inline function 'ks0108ReadData' declared but never defined	glcd test	D:\projects\New folder\GLCD TEST\glcd test\glcd test\XMEGA_ks0108_v0.h	116

                  دیدگاه


                    پاسخ : نمونه کدهایی برای XMEGA

                    در صورت عدم نمایش روی LCD ابتدا وضعیت پتانسیومتر contrast را تغییر دهید و ببینید در حد نهایی آن آیا همه پیکسل ها روشن می شوند یا نه.
                    اوژن: به معنای افکننده و شکست دهنده است
                    دانایی، توانایی است-Knowledge is POWER
                    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                    دیدگاه


                      پاسخ : نمونه کدهایی برای XMEGA

                      نوشته اصلی توسط طراح نمایش پست ها
                      در صورت عدم نمایش روی LCD ابتدا وضعیت پتانسیومتر contrast را تغییر دهید و ببینید در حد نهایی آن آیا همه پیکسل ها روشن می شوند یا نه.
                      ممنون که جواب دادید
                      بله همه پیکسل ها روشن میشن با تغییر وضعیت contrast اما با روشن کردن میکرو پیکسل ها به صورت درهم ریخته ونامرتب روشن و خاموش میشن
                      ی سوال داشتم :
                      من پایه های xmega رو مستقیما به glcd وصل کردم با توجه به تفاوت ولتاژ کاری هاشون میتونه اشکال از اینجا باشه یا نه ؟؟

                      دیدگاه


                        پاسخ : نمونه کدهایی برای XMEGA

                        نوشته اصلی توسط reza.falahi نمایش پست ها
                        بله همه پیکسل ها روشن میشن با تغییر وضعیت contrast اما با روشن کردن میکرو پیکسل ها به صورت درهم ریخته ونامرتب روشن و خاموش میشن
                        ی سوال داشتم :
                        من پایه های xmega رو مستقیما به glcd وصل کردم با توجه به تفاوت ولتاژ کاری هاشون میتونه اشکال از اینجا باشه یا نه ؟؟
                        با توجه به این که عملکرد کتابخانه به لحاظ صحت کد قبلا تست شده باید صحیح بودن اتصال سخت افزار و سالم بودن LCD را بررسی کنید. در مورد اختلاف تغذیه LCD و XMEGA هم برای نوشتن از طرف میکروکنترلر مورد خاصی وجود ندارد. برای خواندن هم بصورت اصولی یا باید از روش هایی مثل سری کردن مقاومت به منظور محدود کردن جریان روی خطوط Data با استفاده از دیودهای معکوس در ورودی پین استفاده شودو یا از Leve; converter استفاده شود. اما در آزمایش های عملی انجام شده با LCD های Techstar ظاهرا خروجی LCD دارای سطح ولتاژی بود که آسیبی را به میکروکترلر وارد نمی کرد و بدون رعایت موارد بالا به خوبی کار می کرد.
                        اوژن: به معنای افکننده و شکست دهنده است
                        دانایی، توانایی است-Knowledge is POWER
                        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                        دیدگاه


                          پاسخ : نمونه کدهایی برای XMEGA

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

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

                          دیدگاه


                            پاسخ : نمونه کدهایی برای XMEGA

                            نوشته اصلی توسط reza.falahi نمایش پست ها
                            فقط چطوری فونت فارسی اضافه کنم به برنامه اگه میشه راهنمایی کنید
                            یکی از در دسترس ترین روش ها استفاده از سورس هایی است که جناب مهندس نوربخش در انجمن قرار داده اند و شما فقط باید تغییرات لازم را متناسب با XMEGA در سورس ایجاد کنید.
                            اوژن: به معنای افکننده و شکست دهنده است
                            دانایی، توانایی است-Knowledge is POWER
                            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                            دیدگاه


                              پاسخ : نمونه کدهایی برای XMEGA

                              سلام
                              adcb آی سی xmega128a1u رو فعال کردم و
                              با دستورات زیر نمونه گیری میکنم
                              مشکل اینجاست که chanl 0 رو درست اندازه میگیره ولی باقی کانال ها adcb1,2,3,4,5, ... رو فقط یه مقدار 945 نشون میده و هیچ تغییری نداریم
                              ممنون میشم کمکم کنید

                              Config Adcb = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Off , Reference = Int1v , Event_mode = None , Prescaler = 32 , Bandgap = Enabled , Ch0_gain = 1 , Ch0_inp = Single_ended , Ch1_gain = 1 , Ch1_inp = Single_ended , Mux0 = 0

                              Y = Getadc(adcb , 0)
                              X = Getadc(adcb , 1)

                              دلیل: ادغام دو پست برای جلوگیری از اسپم

                              البته ولتاژ پایه ها رو اندازه گرفتم 1.1 ولت رو پایه های دیگه adcb هست
                              ممکنه adc سوخته باشه؟

                              دیدگاه


                                پاسخ : نمونه کدهایی برای XMEGA

                                درود به کاربران انجمن
                                از دوستان کسی میدونه مشکل من در ارور IAR در glcd چی هستش البته ks0108readdata رو در atmel studio بصورت warning نشون میده اما ارور نمیگیره.
                                Free image hosting and sharing service, upload pictures, photo host. Offers integration solutions for uploading images to forums.

                                دیدگاه

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