اطلاعیه

Collapse
No announcement yet.

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

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

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

    #################################################
    بعد از اینکلود کردن هدرفایل روی اسم پروژه(آیکون زرد رنگ!) راست کلیک کنید و گزینه Add و بعد گزینه Existing Item
    حالا فایل Lcd.c رو انتخاب و به پروژه اضافه کنید در ضمن باید فایلهای h. و c. رو تو پوشه ی پروژه کپی کرده باشید
    #################################################


    :redface: خب من که نمیدونم فایلهای h. و c. رو ازکجابیارم بریزم تو پوشه ی پروژم؟
    بعدشم اینکه توابع ال سی دی اینجاهم مثل همون توابعی هستند که تو کدویژن استفاده می کردیم آیا؟

    دیدگاه


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

      نوشته اصلی توسط bahram1
      #################################################
      بعد از اینکلود کردن هدرفایل روی اسم پروژه(آیکون زرد رنگ!) راست کلیک کنید و گزینه Add و بعد گزینه Existing Item
      حالا فایل Lcd.c رو انتخاب و به پروژه اضافه کنید در ضمن باید فایلهای h. و c. رو تو پوشه ی پروژه کپی کرده باشید
      #################################################


      :redface: خب من که نمیدونم فایلهای h. و c. رو ازکجابیارم بریزم تو پوشه ی پروژم؟
      بعدشم اینکه توابع ال سی دی اینجاهم مثل همون توابعی هستند که تو کدویژن استفاده می کردیم آیا؟
      باید کتابخونه هایی که احتیاج دارید رو یا از اینترنت دانلود کنید یا خودتون بنویسید. چون کامپایلر GCC که اتمل استودیو ازش استفاده می کنه open source هستش مثالها و کتابخونه های زیادی تو اینترنت براش هست مثلا تو گوگل Pascal Stang یا peter fluery رو سرچ کنید
      اینجا بر خلاف بسکام یا کدویژن باید خودتون محتوای کتابخونه هارو مطالعه کنین و نحوه استفاده شون رو یاد بگیرین و یا حتی اگه لازم شد تغییراتی هم بدید
      مثلا در مورد همین Lcd کتابخونه های مختلفی ممکنه پیدا کنید که تفاوتشون فقط در املای کدنویسی هست ولی همشون یه کار انجام میدن یعنی تو یکی مثلا نوشته ()lcdputs اون یکی نوشته ()lcd_puts ولی هر دو یه کار می کنن.
      گاهی افرادی به موفقیت های بزرگ می رسند، تنها به این دلیل ساده که نمی دانند کاری که به آن دست زده اند بسیار دشوار، بلکه غیر ممکن است.

      دیدگاه


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

        یه مشکل دیگه هم داشتم که بیشتر بر میگرده به adc .شاید درست نباشه اینجا مطرحش کنم ،البته یه پست گذاشتم ولی جوابی نگرفتم.

        قسمت Auto Triggrer _حالت Free Running
        وقتی از این امکان میکرو بخوام استفاده کنم و پشت سر هم نمونه برداریامو از واحد a/d بخوام تو یه آرایه ذخیره کنم میتونم از وقفه استفاده کنم یا نه.
        چطور میتونم این کارو بکنم

        دیدگاه


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

          نوشته اصلی توسط bahram1
          یه مشکل دیگه هم داشتم که بیشتر بر میگرده به adc .شاید درست نباشه اینجا مطرحش کنم ،البته یه پست گذاشتم ولی جوابی نگرفتم.

          قسمت Auto Triggrer _حالت Free Running
          وقتی از این امکان میکرو بخوام استفاده کنم و پشت سر هم نمونه برداریامو از واحد a/d بخوام تو یه آرایه ذخیره کنم میتونم از وقفه استفاده کنم یا نه.
          چطور میتونم این کارو بکنم
          بهتر بود لینک اون پست رو هم می ذاشتی. اگه تا الان به جواب نرسیدی.
          گاهی افرادی به موفقیت های بزرگ می رسند، تنها به این دلیل ساده که نمی دانند کاری که به آن دست زده اند بسیار دشوار، بلکه غیر ممکن است.

          دیدگاه


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

            سلام
            من کد زیر رو برای avr studio نوشتم که ماله lm35 بوده چون با کد ویژن کار میکنم می خواستم بیام تو avr studio برنامه بنویسم این برنامه رو نوشتم اما خط :
            کد:
            ISR(TIMER2_CAPT_vect)
            رو وارنینگ میده ؟؟؟ چرا ؟؟

            کد:
            #define F_CPU 8000000UL
            #include <avr/io.h>
            #include <avr/interrupt.h>
            #include <stdio.h>
            #include <stdlib.h>
            
            
            unsigned char adc_config (void);
            void display (void);
            volatile unsigned int a,i,sum,temp,avg;
            
            int main ()
            {
            	DDRA = 0xFF;
            	ADCSRA = 0x86;
            	ADMUX = 0xC0;
            	TIMSK = 0x80;
            	TCCR2 = 0x0D;
            	OCR2 = 124;
            	sei();
            	
            }
            
            ISR(TIMER2_CAPT_vect)
            {
            	a++;
              if (a ==2500)
              {
              a=0;      
              sum=0;
              avg=0;
              for (i=0;i<=7;i++)
              {
            	adc_config();      
              sum = sum + ADCW; 
            	display ();
              }
              
            }}
            unsigned char adc_config (void)
            {
            	ADCSRA = ADCSRA | 0X40;
            	while (ADCSRA != 0X96);
            	{
            	}
            	ADCSRA |= 0X10;
            	return ADCW;
            }
            
            void display (void)
            {
            	avg = sum/8;
            	temp = avg * 262;
            	temp = temp/1024; 
            }

            دیدگاه


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

              حل شد اشکال تایپی بود.

              دیدگاه


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

                سلام
                سوال دارم.
                1- atmel stdio همون avr stdio هست ؟یا فرق میکنن؟
                ممنون

                دیدگاه


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

                  نوشته اصلی توسط shaiigan
                  سلام
                  سوال دارم.
                  1- atmel stdio همون avr stdio هست ؟یا فرق میکنن؟
                  ممنون
                  کامپایلر هر دو GCC هست. نه تو زبان برنامه نویسی با هم تفاوتی ندارند. فقط امکانات atmel بیشتره مثلا تو دیباگینگ .

                  دیدگاه


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

                    نوشته اصلی توسط Hamed Gh
                    بهتر بود لینک اون پست رو هم می ذاشتی. اگه تا الان به جواب نرسیدی.
                    لینک اون پستم اینه
                    http://www.eca.ir/forum2/index.php?topic=84627.0

                    دیدگاه


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

                      با سلام.
                      آیا برای کامپایلر اتمل استودیو کتابخانه ی Uart نرم افزاری وجود دارد؟به صورت half dublex یا fulldublex فرقی نمی کند؟ یکی از اپلیکیشن نوت های اتمل در این رابطه بود ولی چیزی از کد و نحوه ی پیاده سازی آن متوجه نشدم.

                      دیدگاه


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

                        نوشته اصلی توسط sadeghmojtabaei
                        با سلام.
                        آیا برای کامپایلر اتمل استودیو کتابخانه ی Uart نرم افزاری وجود دارد؟به صورت half dublex یا fulldublex فرقی نمی کند؟ یکی از اپلیکیشن نوت های اتمل در این رابطه بود ولی چیزی از کد و نحوه ی پیاده سازی آن متوجه نشدم.
                        در لینک زیر کتابخونه های زیادی از جمله UART نرم افزاری وجود دارد
                        http://www.procyonengineering.com/embedded/avr/avrlib/
                        گاهی افرادی به موفقیت های بزرگ می رسند، تنها به این دلیل ساده که نمی دانند کاری که به آن دست زده اند بسیار دشوار، بلکه غیر ممکن است.

                        دیدگاه


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

                          نوشته اصلی توسط Hamed Gh
                          در لینک زیر کتابخونه های زیادی از جمله UART نرم افزاری وجود دارد
                          http://www.procyonengineering.com/embedded/avr/avrlib/

                          خیلی ممنون.
                          فقط سوالی که داشتم این است که حداکثر باد ریت برای این کتابخانه چقدر است؟

                          دیدگاه


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

                            نوشته اصلی توسط sadeghmojtabaei

                            فقط سوالی که داشتم این است که حداکثر باد ریت برای این کتابخانه چقدر است؟
                            من این کتابخونه رو تست نکردم.
                            گاهی افرادی به موفقیت های بزرگ می رسند، تنها به این دلیل ساده که نمی دانند کاری که به آن دست زده اند بسیار دشوار، بلکه غیر ممکن است.

                            دیدگاه


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

                              سلام،با تشکر از اقای مرتضوی
                              من سعی کردم کتابخانه مربوط به ماژول nrf24l01 رو که خودتان نوشتید رو به gcc تبدیل کنم اما تا حالا موفق نشدم اگر لطف کنید و شما هم برنامرو چک کنید ممنون میشم
                              کد:
                                      
                              #ifndef __nrf24l01p_h_included__
                              #define __nrf24l01p_h_included__
                              
                              //*****
                              #define NRF_PORT PORTB
                              #define NRF_DDR DDRB
                              
                              //*****#define IRQ PORTB.2
                              //*****#define DD_IRQ DDRB.2
                              #define IRQ 2
                              
                              //*****#define CE PORTB.3
                              //*****#define DD_CE DDRB.3
                              #define CE 3
                              
                              //*****#define CSN PORTB.4
                              //*****#define DD_CSN DDRB.4 
                              #define CSN 4
                              
                              //*****#define MOSI PORTB.5
                              //*****#define DD_MOSI DDRB.5 
                              #define MOSI 5
                              
                              //*****#define MISO PORTB.6
                              //*****#define DD_MISO DDRB.6
                              #define MISO 6
                              
                              //*****#define CLK PORTB.7
                              //*****#define DD_CLK DDRB.7
                              #define CLK 7
                              
                              //*****flash unsigned char base_address[5]={0x00,0x01,0x03,0x07,0x00};
                              unsigned char base_address[5]={0x00,0x01,0x03,0x07,0x00};
                              unsigned char temp_address[5]={0x00,0x01,0x03,0x07,0x00};
                              unsigned char payload[33];
                              unsigned char command_buff=0,status_buff=0,nrf_state=0;
                              char nrf_mode;
                              //*****bit sent_actived=0;
                              char sent_actived=0;
                              unsigned char spi(unsigned char data)
                              {
                                SPDR=data;
                                while(!(SPSR & 0x80)); 
                                data=SPSR; 
                                return SPDR;
                              }
                              void nrf_inst(unsigned char ins)
                              {
                                int i;               
                                //*****CSN=0;
                              	cbi(NRF_PORT,CSN);  
                                status_buff=spi(ins);    
                                switch(ins & 0xE0)
                                {
                                  case 0x00:
                                  {             
                                    if((ins & 0x1F)==0x0A || (ins & 0x1F)==0x0B || (ins & 0x1F)==0x10) 
                                    {
                                      for(i=4;i>=0;i--)
                                      {
                                        temp_address[i]=spi(0xFF);
                                      }
                                    }
                                    else
                                    {
                                      command_buff=spi(0xFF);  
                                    }
                                    break;
                                  }
                                  case 0x20: 
                                  {             
                                    if((ins & 0x1F)==0x0A || (ins & 0x1F)==0x0B || (ins & 0x1F)==0x10)
                                    {
                                      for(i=4;i>=0;i--)
                                      {
                                        spi(base_address[i]);
                                      } 
                                    }
                                    else
                                    { 
                                      spi(command_buff);
                                    }
                                    break;
                                  }     
                                  case 0x60:
                                  {
                                    if((ins & 0x01)==1)
                                    {
                                      i=payload[0];
                                      while(i!=0)
                                      {
                                        payload[i]=spi(0xFF); 
                                        i--;
                                      }  
                                    }
                                    else 
                                    {
                                      command_buff=spi(0xFF);  
                                    }
                                    break;
                                  }
                                  case 0xA0:
                                  {  
                                    i=payload[0];
                                    while(i!=0)
                                    {
                                      spi(payload[i]); 
                                      i--;
                                    }
                                    break;
                                  }
                                  
                                }  
                                //*****CSN=1;
                              	sbi(NRF_PORT,CSN); 
                                _delay_us(10);
                              }
                              
                              //interrupt [EXT_INT2] void ext2_isr()
                              ISR (INT2_vect)
                              { 
                                if(nrf_mode==0)
                                {
                                  nrf_inst(0xFF); 
                                  if(status_buff & 0x20) 
                                  {
                                    nrf_state=2;
                                    nrf_inst(0x17);    
                                    if((command_buff & 0x01)==0)
                                    {
                                      nrf_inst(0x60); 
                                      if(command_buff<=32)
                                      {
                                        payload[0]=command_buff; 
                                        nrf_inst(0x61);  
                                        nrf_state=3;
                                      }
                                      else
                                        nrf_inst(0xE2);
                                    }     
                                  }
                                  else 
                                  {
                                    nrf_state=4;
                                  }
                                }                           
                                else
                                {
                                  nrf_inst(0x60); 
                                  if(command_buff>32)
                                  {
                                    nrf_inst(0xE2);
                                  }
                                  else
                                  {
                                    payload[0]=command_buff;
                                    nrf_inst(0x61);
                                    nrf_state=1;
                                  }
                                }   
                                command_buff=0x7E; 
                                nrf_inst(0x27);  
                                nrf_inst(0xE1);                         
                              }
                              
                              void sent()
                              { 
                                if(sent_actived)
                                {
                                  sent_actived=0; 
                                  if((temp_address[4]==base_address[4]) && (temp_address[3]==base_address[3]) && (temp_address[2]==base_address[2]) && (temp_address[1]==base_address[1]) && (temp_address[0]==base_address[0]))
                                  {
                                    nrf_inst(0xE1); 
                                    nrf_inst(0xA0);      
                                    _delay_ms(10);
                                    //*****CE=1;
                              			sbi(NRF_PORT,CE);
                                    _delay_us(20);
                                    //*****CE=0;
                              			cbi(NRF_PORT,CE);
                                    _delay_ms(10);
                                  }
                                  else
                                    nrf_state=5; 
                                }                   
                              }
                              
                              void nrf_config(char mode)
                              {
                                //*****IRQ=1; 
                                sbi(NRF_PORT,IRQ);
                              	
                              	//*****CSN=1; 
                              	sbi(NRF_PORT,CSN);
                                
                              	//*****DD_CSN=1;
                              	sbi(NRF_DDR,CSN);
                                
                              	//*****CLK=0;
                              	cbi(NRF_PORT,CLK);
                                
                              	//*****DD_CLK=1;
                              	sbi(NRF_DDR,CLK);
                                
                              	//*****CE=0;
                              	cbi(NRF_PORT,CE);
                                
                              	//*****DD_CE=1;
                              	sbi(NRF_DDR,CE);
                                
                              	//*****DD_MOSI=1;
                                sbi(NRF_DDR,MOSI);
                              	
                              	//*****DD_MISO=0;
                              	cbi(NRF_DDR,MISO);
                              	 
                                GIFR=0x20;
                                GICR|=0x20;     
                                //*****#asm("sei")
                                sei();
                              	SPCR=0x50;    
                                _delay_ms(110);
                                
                                nrf_mode=mode;  
                                
                                command_buff=0x01;
                                nrf_inst(0x21);  
                                
                                command_buff=0x01;
                                nrf_inst(0x22);  
                                 
                                command_buff=0x03;
                                nrf_inst(0x23);  
                                
                                command_buff=0x2f;
                                nrf_inst(0x24);  
                                          
                                command_buff=0x01;  
                                nrf_inst(0x25);   
                                
                                command_buff=0x06;  
                                nrf_inst(0x26);   
                                
                                nrf_inst(0x2A);   
                                
                                nrf_inst(0x30);   
                                
                                command_buff=0x01;  
                                nrf_inst(0x3C);   
                                  
                                command_buff=0x07;  
                                nrf_inst(0x3D);     
                                
                                if(mode==0)
                                {
                                  command_buff=0x4E;
                                  nrf_inst(0x20);  
                                  _delay_ms(100);
                                  sent_actived=1;
                                }
                                else
                                {
                                  command_buff=0x3F;
                                  nrf_inst(0x20);  
                                  _delay_ms(5);
                                  //*****CE=1;
                              		sbi(NRF_PORT,CE);
                                } 
                              }
                              #endif
                              از سالم بودن برنامه اصلی و سخت افزار مطمئن هستم.

                              دیدگاه


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

                                چطور میشه تو پروتئوس فابل های avr studio رو دیباگ کرد. من تست کردم نشد ؟؟ یعنی run میشه ولی خط های برنامه رو نشون نمیده !!!

                                دیدگاه

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