اطلاعیه

Collapse
No announcement yet.

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

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

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

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

    دیدگاه


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

      نوشته اصلی توسط طراح
      برنامه 5:
      شدت نور LED در این برنامه به صورت نوسانی کم و زیاد می شود به این ترتیب که از حداقل نور به تدریج زیاد می شود و مجددا به آرامی کم می شود و این کار همچنان ادامه می یابد. برای انجام این پدیده از خروجی PWM استفاده شده است.

      [/ltr]
      خیلی ممنون
      اگه بخواهیم با استفاده از یک pwm رو جند تا پایه دیگه میکرو موج pwm درست کنیم امکانش هست؟؟
      به سایت ما هم یه سری بزنید
      http://www.amirsad.ir

      دیدگاه


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

        در اینحا برای شما یک کتابخانه برای راه اندازی LCD گرافیکی با چیپست KS0108 قرار دادم که برای انواع میکروکنترلرهای Xmega قابل استفاده است.
        برنامه در محیط Atmel studio و میکروکنترلر ATxmega128A1AU نوشته شده و تست شده است.

        http://uplod.ir/llkwrysxqkh6/G_LCD_KS0108.rar.htm

        دیدگاه


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

          با سلام خدمت استاد کی نژاد
          من میخوتستم میکروفن رو با ADC بخونم و همون کد صدای خونده شده رو از طریق DAC بفرستم به یک بلند گو.
          سخت افزار بنده به این صورته که میکروفن رو بدون تقویت کننده راه اندازی کردم و خروجی اون رو دادم به adc1 یک ATXmega32a4au که پایه 41 اون میشه و از DAC0 اون که پایه 6 میشه دادم به ورودی lm386 . قسمت دیجیتال به آنالوگ درست کار میکنه چون با برنامه های مختلف تست کردم و ملودی های مختلفی رو باهاش پخش کردم اما هر کاری کردم نتونستم یه صدای قابل قبول از میکروفن بخونم و در DAC پخش کنم و هر چی برنامه رو تغییر میدم نهایتا صدایی که ار میکروفن میخونه بصورت خر خر پخش میکنه . یه بار هم تقویت کننده ای که شما برای اکوی دیجیتال برای قسمت میکروفن بسته بودیدو بستم ولی نتیجه ای نداشت . نمونه کد برنامه ام را در پایین قرار میدم ، لطفا راهنماییم کنید . ممنون .
          $regfile = "xm32a4def.dat"
          $crystal = 32000000
          $hwstack = 64
          $swstack = 64
          $framesize = 64
          $lib "xmega.lib"
          $external _xmegafix_clear
          $external _xmegafix_rol_r1014
          '******************************************** ***********************************
          Config Osc = Enabled , 32mhzosc = Enabled

          Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1

          Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = _
          Portc.7 , E = Portc.2 , Rs = Portc.1

          Config Lcd = 16 * 2

          Config Adca = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Off , _
          Reference = Arefb , Event_mode = None , Prescaler = 512 , Ch0_gain = 4 , _
          Ch0_inp = Single_ended , Mux0 = &B000_00 _
          Ch1_gain = 4 , Ch1_inp = Single_ended , Mux1 = &B1_000 , Ch2_gain = 4 , _
          Ch2_inp = Single_ended , Mux2 = &B10_000 , Ch3_gain = 64 , _
          Ch3_inp = Single_ended , Mux3 = &B11_000


          Config Dacb = Enabled , Io0 = Enabled , Channel = Single , Reference = Arefb , _
          Interval = 64 , Refresh = 512 ' , Dacb0 = 4095
          '******************************************** ***********************************
          Main:
          Dim A As Word
          Dim Mux As Byte
          Start Adca
          Start Dacb
          Do
          Mux = 8
          A = Getadc(adca , 1 , Mux)
          Locate 1 , 1
          Lcd "A= " ; A ; " "
          Dacb0 = A
          Loop
          البته خودم هم زیاد از تنظیمات ADC سر در نمیارم و این قسمت و از HELP بسکام کپی کردم و نهایتا یه جاهاییشو تغییر دادم .
          الهم صل علی محمد و آل محمد و عجل فرجهم
          www.adaksell.com

          دیدگاه


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

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

            دیدگاه


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

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

              دیدگاه


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

                نمونه کد راه اندازی سنسور SHT11 و SHT75

                که در اینجا پین B0 از پورت B به عنوان دیتا
                و پین E3 از پورت E به عنوان کلاک

                کد:
                #define _TEMP  0x03
                #define _HUMI  0x05
                #define _RESET 0x1E
                
                const float d1C = -40.1;    //@ i4bit
                const float d2C = 0.01;     //@ i4bit
                const float C1 = -4.0;     //@ 12bit
                const float C2 = 0.0405;    //@ 12bit
                const float C3 = -0.0000028;  //@ 12bit
                const float t1 = 0.01;     //@ 12bit
                const float t2 = 0.00008;   //@ 12bit
                
                float tempt, humi;
                float RH_linear, RH_true;
                char txt[13];
                char *ptr;
                
                
                 void DATA_X(char CMD){  //Direction Change For DATA PIN is PORTB AND PIN0
                 if (CMD==0){ 
                  PORTB.DIR = PORTC.DIR | 0x1; 
                  }else{
                  PORTB.DIR = PORTC.DIR & 0xFE;
                  }
                 } 
                 
                 void SCK(char CMD){  // SCK DATA Change 
                 if (CMD==0){ 
                  PORTE.OUT = PORTC.OUT & 0xF7;
                  
                  }else{
                  PORTE.OUT = PORTC.OUT | 0x8; 
                  }
                 } 
                 
                  void DATAO(char CMD){ //DATA PIN data Change
                 if (CMD==0){ 
                  PORTB.OUT = PORTC.OUT & 0xFE;
                  
                  }else{
                  PORTB.OUT = PORTC.OUT | 0x1; 
                  }
                 } 
                 
                //function use for measure temperature or humidiy from SHT only
                unsigned SHT_Measure(char CMD){
                     char i;
                     char m = 128;
                     unsigned temp = 0;
                     DATA_X(0);
                     DATAO(1); 
                     delay_us(1);
                     SCK(0); 
                     delay_us(1);
                // Connection reset sequence
                     for(i=0; i<10; i++){
                       SCK(1);
                       delay_us(1);
                       SCK(0); 
                       delay_us(1);
                     }
                // initial transmistion pluses
                
                     DATAO(1); 
                     delay_us(2);
                     SCK(1);  
                     delay_us(2);
                     DATAO(0);   
                     delay_us(2);
                     SCK(0);  
                     delay_us(5);
                     SCK(1);  
                     delay_us(2);
                     DATAO(1);
                     delay_us(2);
                     SCK(0);
                
                //Transmit command.
                     for(i=0; i<8; i++){
                       if(!(m & CMD)) DATAO(0);
                       else DATAO(1);
                       delay_us(2);
                       SCK(1); 
                       delay_us(2);
                       SCK(0);   
                       delay_us(2);
                       m >>= 1;
                     }
                //Check acknowledge pulse. return 0 if no pulse.
                     DATA_X(1);
                     SCK(1);     
                     delay_us(2);
                     if(PORTB.IN & 1) return 0;
                     SCK(0);
                     while(!(PORTB.IN & 1));
                // wait until data is ready
                     while(PORTB.IN & 1);
                     //delay_ms(250);
                // get first byte MSB
                     for(i=0; i<8; i++){
                       temp <<= 1;
                       SCK(1);  
                       delay_us(2);
                       if(PORTB.IN & 1) temp |= 1;
                       SCK(0); 
                       delay_us(2);
                     }
                // acknowledge pluse
                     DATA_X(0);
                     DATAO(0); 
                     delay_us(2);
                     SCK(1);
                     delay_us(2);
                     SCK(0);   
                     delay_us(2);
                     DATA_X(1);
                // get second byte LSB
                     for(i=0; i<8; i++){
                       temp <<= 1;
                       SCK(1); 
                       delay_us(2);
                       if(PORTB.IN & 1) temp |= 1;
                       SCK(0);
                       delay_us(2);
                     }
                // return value without CRC
                     return temp;
                }
                
                
                
                Void main(void){
                  
                 while(1){
                   
                   //read adc temperature value from SHT
                      tempt = SHT_Measure(_TEMP);
                      tempt = d1C + (tempt * d2C);
                      ftoa(tempt,2,txt);
                      printf_uartc0("T : ");
                      printf_uartc0(txt);
                      printf_uartc0("\r"); 
                   //read adc humidity value from SHT
                      humi = SHT_Measure(_HUMI);
                      RH_linear = C1 + (C2*humi) + (C3*humi*humi);
                      RH_true = (tempt-25)*(t1+(t2*humi))+ RH_linear;
                      if(RH_true > 100.0) RH_true = 100.0;
                      if(RH_true < 0.1) RH_true = 0.1;
                      ftoa(RH_true,2,txt);
                      printf_uartc0("H : ");
                      printf_uartc0(txt);
                      printf_uartc0("\r");
                      delay_ms(500);  
                 }  
                }

                دیدگاه


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

                  کتابخانه ارتباط سریال (USART) :

                  http://goo.gl/x8dco7


                  کتابخانه ال سی دی کاراکتری (C-LCD) :

                  http://goo.gl/jTxk42


                  کتابخانه توابع گرافیکی برای ال سی دی کاراکتری :

                  http://goo.gl/5YDrk2

                  دیدگاه


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

                    از شما جناب اقای کی نژاد برای زحماتتون ممنونم .اگر ممکنه کانفیگ ای دی سی ADC رو برای مد سیگنل اندد به صورت اسمبلی قزار دهید .من که هر کاری میکنم ونمیتونم به اسمبلی راه بندازم ای دی سی رو.

                    دیدگاه


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

                      کتابخانه ماژول قطب نما CMPS03 :
                      http://goo.gl/wAVzhw

                      کتابخانه آی سی ساعت DS1307 :
                      http://goo.gl/kKgRgi

                      کتابخانه سنسور دما DS18B20 :
                      http://goo.gl/moKY5l

                      کتابخانه ماژول درایور موتور به همراه انکودر MD25 :
                      http://goo.gl/m6pKPt

                      کتابخانه پروتکل ارتباطی تک سیمه (1WIRE) :
                      http://goo.gl/YfYXNT

                      کتابخانه پروتکل ارتباطی دو سیمه (I2C , TWI) :
                      http://goo.gl/LvW0Z3

                      دیدگاه


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

                        جناب Reza.bahrami این نمونه کد ها برای چه کامپایلری هست؟
                        اگه برای Atmel studio کتابخونه دارین لطفا روی سایت قرار بدین. با تشکر

                        دیدگاه


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

                          دوستان و اساتیدی که با xmega در محیط اتمل استودیو کار کردن کسی میدونه که بعد از تنظیمات adc چه ظور میشه مقدار اندازه گیری شده رو بدست اورد؟
                          با ADCA.CH0.RES کار کردم ولی کامپایلر قبول نکرد! oo: دقیقا تابع برای فراخوانی مقدار اندازی گیری شده چیه؟ :read:

                          دیدگاه


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

                            نوشته اصلی توسط Mehran bakhsh nezhad
                            جناب Reza.bahrami این نمونه کد ها برای چه کامپایلری هست؟
                            اگه برای Atmel studio کتابخونه دارین لطفا روی سایت قرار بدین. با تشکر
                            بله تحت کامپایلر اتمل استادیو هستند.
                            کتابخانه ها در خود فایل پروژه ها قرار دارند

                            دیدگاه


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

                              نوشته اصلی توسط Mehran bakhsh nezhad
                              دوستان و اساتیدی که با xmega در محیط اتمل استودیو کار کردن کسی میدونه که بعد از تنظیمات adc چه ظور میشه مقدار اندازه گیری شده رو بدست اورد؟
                              با ADCA.CH0.RES کار کردم ولی کامپایلر قبول نکرد! oo: دقیقا تابع برای فراخوانی مقدار اندازی گیری شده چیه؟ :read:
                              وقت بخیر

                              کد:
                                adc_sample[index]=ADC_ResultCh_GetWord(&ADCA.CH0);
                                 
                                 ADC_Ch_Conversion_Start(&ADCA.CH0);
                              با این دو دستور خونده میشه و دوباره برای بار دوم استارت میشه ! البته اگر وقفه فعال باشه این عملیات در وقفه انجام میشه .
                              امیدوارم مفید باشه !!

                              دیدگاه


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

                                متاسفانه جواب نمی ده ، یا نمیدونم من اشتباه میزنم :cry: ! نمونه کد باید اینجوری باشه ؟ :
                                کد:
                                ISR (ADCA_CH0_vect) 
                                {
                                C[2]=ADC_ResultCh_GetWord(&ADCA.CH0);
                                }
                                اتمل اصلا کد های بالا رو نمیشناسه یعنی رنگی نمی شه .

                                دیدگاه

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