به نظر می رسد که شما عضو سایت نیستید و یا وارد نشده اید, امکان ارسال مطلب و دانلود فایل و همچنین دسترسی به انجمن هایی که فقط اعضا ثبت نام شده امکان دسترسی به آن را دارند از امتیازات ثبت نام در سایت میباشد.

لطفا از طریق این لینک برای ثبت نام اقدام نمایید.

    
You have (1) Unread PM; Click The Icon To Read It You have a new PM
جدیدترین موضوعات انجمنها


بازگشت   متارو > قطعات > مافوق‌صوت (UltraSonic)

نحوه خواندن srf02 با میکروکنترلر AVR

مافوق‌صوت (UltraSonic)

پاسخ
 
LinkBack ابزارهای موضوع نحوه نمایش
قدیمی 09-12-2010, 01:33 PM   #1
پیش فرض نحوه خواندن srf02 با میکروکنترلر AVR

سلام.یه برنامهsrf02 میخواستم.میشه یه نمونه اش رو بذارید!
__________________
در آغاز هیچ نبود ،فقط یک کلمه بود و آن کلمه "خدا" بود!
Nashi آنلاین نیست.   پاسخ با نقل قول
قدیمی 09-12-2010, 02:59 PM   #2
پیش فرض پاسخ : srf02

سلام...
به چه زبانی ؟ با چه کامپایلری ؟ با چه میکرویی؟
__________________
We fight through the hurt ... And we live and we learn ...
And we Try and Try And Try


saeebrobotic.blogfa.com
________________________
We Are OpenSource
mohamad.nasr آنلاین نیست.   پاسخ با نقل قول
قدیمی 09-12-2010, 02:59 PM   #3
پیش فرض پاسخ : srf02

سلام...
به چه زبانی ؟ با چه کامپایلری ؟ با چه میکرویی؟
__________________
We fight through the hurt ... And we live and we learn ...
And we Try and Try And Try


saeebrobotic.blogfa.com
________________________
We Are OpenSource
mohamad.nasr آنلاین نیست.   پاسخ با نقل قول
قدیمی 09-13-2010, 10:25 AM   #4
پیش فرض پاسخ : srf02

نوشته اصلی توسط mohamad.nasr نمایش پست ها
سلام...
به چه زبانی ؟ با چه کامپایلری ؟ با چه میکرویی؟
سی- کدویژن ای وی ار-atmege128
__________________
در آغاز هیچ نبود ،فقط یک کلمه بود و آن کلمه "خدا" بود!
Nashi آنلاین نیست.   پاسخ با نقل قول
قدیمی 03-04-2011, 12:42 AM   #5
پیش فرض پاسخ : srf02

فقط مهم بود این سوالات بشه واسه باقیش کسی نیست.
alime آنلاین نیست.   پاسخ با نقل قول
قدیمی 03-05-2011, 12:21 AM   #6
پیش فرض پاسخ : srf02

خوب حالا چرا ناراحت می شید.
برای خواندن قطعاتی نظیر SRFxx یا CMPS03 که با پروتکل i2c کار می کنند .همانطور که در برگه ی اطلا عاتی آنان ذکر شده است.باید مانند خواندن از حافظه ها سری 24xxx عمل کرد.
برای این منظور دو روش در میکروکنترلر های AVR پیشنهاد می گردد.
1- روش نرم افزاری :در این روش شما می توانید قطعه را به هر پایه ی میکرو را که خواستید متصل کنید.در این روش CPU درگیر خواندن اطلا عات می گردد.کد زیر که از help codevision avr گرفته شده برای این منظور استفاده می گردد.

کد:
/* read a byte from the EEPROM */
unsigned char eeprom_read(unsigned char address) {
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}


/* write a byte to the EEPROM */
void eeprom_write(unsigned char address, unsigned char data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_write(data);
i2c_stop();
/* 10ms delay to complete the write operation */
delay_ms(10);
}
لازم به ذکر است EEPROM_BUS_ADDRESS آدرس قطعه است.و address مربوط به شماره ی رجیستری است که می خواهید اطلاعات را از آن بخوانید.

2-روش سخت افزاری.
در این روش CPU درگیر دریافت اطلاعات نمی شود.و واحد TWI مسئول دریافت اطلا عات می شود.کد زیر که از سایت Atmel دریافت شده جهت این کار استفاده میگردد.در این روش حتما قطعه باید به پایه های مربوط به واحدTWI در میکرو متصل گردد.


کد:
unsigned long int i2cread(char address, char reg)
{
unsigned long int read_data = 0;

   TWCR = 0xA4;                  // send a start bit on i2c bus
   while(!(TWCR & 0x80));       // wait for confirmation of transmit  
   TWDR = address;               // load address of i2c device
   TWCR = 0x84;                  // transmit 
   while(!(TWCR & 0x80));       // wait for confirmation of transmit
   TWDR = reg;                   // send register number to read from
   TWCR = 0x84;                  // transmit
   while(!(TWCR & 0x80));        // wait for confirmation of transmit

   TWCR = 0xA4;                   // send repeated start bit
   while(!(TWCR & 0x80));         // wait for confirmation of transmit 
   TWDR = address+1;              // transmit address of i2c device with readbit set
   TWCR = 0xC4;                   // clear transmit interupt flag
   while(!(TWCR & 0x80));         // wait for confirmation of transmit
   TWCR = 0x84;                   // transmit, nack (last byte request)
   while(!(TWCR & 0x80));         // wait for confirmation of transmit 
   read_data = TWDR;              // and grab the target data
   TWCR = 0x94;                   // send a stop bit on i2c bus
   return read_data;

}
__________________
معشوق من چنان لطیف است که خود را به بودن نیالوده است...
emami آنلاین نیست.   پاسخ با نقل قول
3 کاربر از emami به خاطر این مطلب مفید تشکر کرده اند
قدیمی 03-05-2011, 10:42 AM   #7
پیش فرض پاسخ : srf02

سلام...
برنامه ي زير از آدرس 0xE0 كه Hآدرس پيشفرض srf ها و قابل تغيير است اطلاعات را ارسال و دريافت ميكنه...
اين تابع بيشتر جنبه ي آموزشي داره و مي تونه خيلي بهينه تر هم باشه..

کد PHP:
{    
void read_srf()
{  
int ultra=0
                       
//firs send 0x51 to mudoule for get centimeter 
    
i2c_start(); 
    
i2c_write(0xE0); 
    
i2c_write(0); 
    
i2c_write(0x51); 
    
i2c_stop(); 
    
delay_ms(65);  //delay for send & recive((65ms)) 
         
            //read high byte of dicteance 

    
i2c_start(); 
    
i2c_write(0xE0); 
    
i2c_write(2); 
    
i2c_start(); 
    
i2c_write(0xE1); 
    
ultra=i2c_read(0)<<8
    
i2c_stop();     

            
//read low byte of dicteance 
    
i2c_start(); 
    
i2c_write(0xE0); 
    
i2c_write(3); 
    
i2c_start(); 
    
i2c_write(0xE1); 
    
ultra+=i2c_read(0); 
    
i2c_stop();  
     
    return 
ultra

__________________
We fight through the hurt ... And we live and we learn ...
And we Try and Try And Try


saeebrobotic.blogfa.com
________________________
We Are OpenSource
mohamad.nasr آنلاین نیست.   پاسخ با نقل قول
2 کاربر از mohamad.nasr به خاطر این مطلب مفید تشکر کرده اند
قدیمی 05-26-2011, 03:32 PM   #8
پیش فرض پاسخ : نحوه خواندن srf02 با میکروکنترلر AVR

این هم با بسکام:

کد:
$regfile = "m16def.dat"
کد:
$crystal = 8000000
$baud = 9600 Config Portb = Input Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = _ Portc.7 , E = Portc.2 , Rs = Portc.0 Config Lcd = 16 * 2 Dim A As Byte Dim B As Byte Dim C As Word Enable Interrupts Cursor Off Cls Do Cls Printbin 0 Waitms 50 Printbin 84 A = Waitkey() B = Waitkey() C = A * 256 C = C + B
Locate 1 , 1 : Lcd "R=" : Lcd C : Lcd "Cm " Waitms 300 Loop End

alime آنلاین نیست.   پاسخ با نقل قول
اين کاربران از alime به خاطر این مطلب مفید تشکر کرده اند
قدیمی 12-08-2011, 02:28 PM   #9
پیش فرض پاسخ : نحوه خواندن srf02 با میکروکنترلر AVR

آقای نصر من نتونستم با این برنامه ای که نوشتید از srf02 با کدویژن جواب بگیرم. ممنون میشم کمکم کنید.......



ببخشید همین الان جواب داد ، ممنونم
چطور میتونم بهینش کنم؟

ویرایش توسط alime : 12-08-2011 در ساعت 02:31 PM.
alime آنلاین نیست.   پاسخ با نقل قول
قدیمی 12-08-2011, 09:28 PM   #10
پیش فرض پاسخ : نحوه خواندن srf02 با میکروکنترلر AVR

اون زمان 65 میلی ثانیه را با استفاده از تایمر ایجاد کنید
__________________
We fight through the hurt ... And we live and we learn ...
And we Try and Try And Try


saeebrobotic.blogfa.com
________________________
We Are OpenSource
mohamad.nasr آنلاین نیست.   پاسخ با نقل قول
پاسخ

علاقه مندی ها (Bookmarks)

« موضوع قبلی | موضوع بعدی »
ابزارهای موضوع
نحوه نمایش

انتخاب سریع یک انجمن

موضوعات مشابه for: نحوه خواندن srf02 با میکروکنترلر AVR
موضوع نویسنده موضوع انجمن پاسخ ها آخرين نوشته
سوال فاصله سنح با avr با SRF02 hamidhamid AVR 7 03-08-2012 04:14 PM


اکنون ساعت 04:59 AM برپایه ساعت جهانی (GMT - گرینویچ) +4.5 می باشد.


تمامي حقوق مادي و معنوي اين مجموعه متعلق به شركت ربات گستران آپادانا مي‌باشد Persian Skin By : Vbskin