امتیاز موضوع:
  • 5 رأی - میانگین امتیازات: 3.4
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش قدم به قدم AVR
#31
اینم یه برنامه ساده برای میکرو کنترلر مستر در حالت فرستنده!!!!!!!

MASTER TRANSMIT
کد:
#include <mega8.h>    
void main(void){
char status;    //1
TWBR=0x48;      //2
TWAR=0x00;      //3
TWCR=0x04;      //4


TWCR |=0xA0;    //5

while (1){
if(TWCR&0x80){  //6
    
status=TWSR & 0xF8;    //7
  if(status==0x08){    //8
                  TWDR=8;
                  TWCR &=0xDF;    
                  TWCR |=0x80;
                  }
                              
  if(status==0x18){   //9
                   TWDR=0x11;     
                   TWCR |=0x80;    
                  }

  else if(status==0x20){//10
                        TWCR |=0x90;                                            
                       }
  if(status==0x28){   //11
                  TWCR |=0x90;    
                  }
  if(status==0x30){      //12
                   TWCR |=0x90;
                  }
        }      
       }
}

1) متغییر status برای قرار دادن مقدار ثبات TWSR قرار دادیم
تو قسمت 2و3و4 به ثباتهای I2C مقدار اولیه دادیم چون میکرو مستر هستش تو ثبات آدرس صفر قرار میدیم و تو ثبات کنترل TWCR بیت 2 یعنی TWEN برابر 1 قرار دادیم تا پورت فعال بشه.
شماره 5:
تو این قسمت عدد 0xA0 رو با TWCR ثبات کنترلی or میکنیم به این ترتیب بیتهای TWSTA , TWINT برابر 1 میشن و به این ترتیب پیغام START فرستاده میشه توجه کنید همونطور که قبلاً گفتم برای شروع هر کاری باید بیت TWINT رو clear کنیم که همونطور که میبینید با نوشتن یا همون or کردن 1 با این بیت، این بیت رو clear کردیم و به این ترتیب پیغام استارت فرستاده میشه و کد حاصله از این عمل تو ثبات وضعیت قرار میگیره
شماره 6 :
میکرو منتظر میمونه تا بیت TWINT یک بشه در واقع وقتی این بیت 1 میشه یعنی پورت I2C یه کاری رو تموم کرده و کد حاصل از نتیجه عملیات رو توی ثبات وضعیت TWSR ریخته و منتظر عملیات بعدی ما است
شماره 7 : ثبات وضعیت رو سه بیت اولی شو یعنی بیتهای 0و1و2 رو ماسک میکنه و 5 بیت با ارزشتر رو تو متغییر status میریزه
دستور شماره 8 :
همونطور که قبلا گفتم اگه پیغام استارت با موفقیت ارسال بشه عدد 0x08 تو ثبات TWSR قرار میگره پس این دستور به معنی اینه که اگه پیغام استارت با موفقیت ارسال شده آدرس اسلیو رو بفرست

شماره 9:
وقتی عدد 0x18 توی ثبات وضعیت TWSR قرار میگره یعنی آدرس اسلیو به همراه دستور R/W با موفقیت ارسال شده و پاسخ دریافت ACK از سمت اسلیو دریافت شده و الان میتونیم اطلاعاتی رو که میخواهیم به اسلیو بفرسیتیم ، که من عدد 0X11 رو میخوام بفرستم پس این عدد رو توی ثبات داده TWDR میریزم و حالا به محض اینکه بیت TWINT رو clear کنیم این عدد به اسلیو ارسال میشه.
پاسخ
 سپاس شده توسط ehsanware
#32
Wink 
ممنونم از زحماتتون
من تازه جلسه اولو تموم کردم
اومدم تشکر کنمو برم سراغ بقیه مطالب
خسته نباشین مهندس
Heart
پاسخ
 سپاس شده توسط d_azad_b ، حسین 1369
#33
سلام و خسته نباشید
تاپیک حل مشکلات رو پیدا نکردم مهندس برا همین اینجا میزارم مشکلم رو ممنون میشم اگه کمک کنی.چون رشته من برق نیست .
من میخوام اطلاعات چندتا سنسور رو با میکروکنترلر بخونم و پروتکل ارتباطی این سنسورهام I2C هست.میشه راهنماییم کنی چجوری اینکار رو بکنم.
خیلی ممنون
پاسخ
#34
با سلام
مناسب دیدم برای علاقه مندان به برنامه نویسی AVR و PIC دو برنامه که مال شرکت MikroC است قرار بدم.این دو برنامه نیاز به نصب ندارد و پس از خارج شدن از حالت زیپ قابل استفاده می باشد.توصیه میشود که در درایو اصلی کپی شود.

mikroC_PRO_for_AVR.rar
http://www.uplooder.net/cgi-bin/dl.cgi?k...8c9f04a023

mikroC_PRO_for_PIC.rar
http://www.uplooder.net/cgi-bin/dl.cgi?k...74aa21e45f
پاسخ
#35
سلامف این تاپیک خیلی مفیدی بودSmile

کاش کسی مثل اقای amin پیدا میشد و ادامه ی درس دادن ایشون(جلسه 4 به بعد) رو اموزش میداد...
پاسخ
#36
(10-8-1391، 11:31 صبح)ehsanware نوشته است: سلام و خسته نباشید
تاپیک حل مشکلات رو پیدا نکردم مهندس برا همین اینجا میزارم مشکلم رو ممنون میشم اگه کمک کنی.چون رشته من برق نیست .
من میخوام اطلاعات چندتا سنسور رو با میکروکنترلر بخونم و پروتکل ارتباطی این سنسورهام I2C هست.میشه راهنماییم کنی چجوری اینکار رو بکنم.
خیلی ممنون

مدل سنسور چیه ؟
پاسخ
#37
درود بیکران به دوستان
در مد کپچر AVR ، من می خواستم بجای اینکه از پین سخت افزاری ICP1 برای نمونه برداری از کانتر 1 در مگا 169 استفاده کنم اینکار رو بصورت نرم افزاری بهش فرمان Capture بدم. ولی نمیدونم چطور میشه این کارو کرد. ممنون میشم کسی منو تو این زمینه یاری کنه . با کنترل کدام بیت از کدام رجیستر بصورت نرم افزاری می توان فرمان Capture را داد؟
تو دیتا شیتش نوشته :
An Input Capture can be triggered by software by controlling the port of the ICP1 pin
ولی من متوجه نشدم.
با کدویژن دارم کد می نویسم.
ببخشید اگر جای نامناسبی مطرح کردم ولی خیلی گیرم .
ممنونم
پاسخ
#38
واقعا ممنونم.خیلی خوب بود.
 
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  آموزش ساخت تابلو روان 3 و 7 رنگ و آموزش ساخت تابلو چرخان moein masoumi 365 125,841 21-12-1396، 09:42 عصر
آخرین ارسال: pad_kay
  آموزش avr studio به فارسی abedanew 0 666 4-11-1393، 02:32 صبح
آخرین ارسال: abedanew
  کتاب آموزش کاربردی AVR peyman9 2 1,118 25-6-1393، 03:01 عصر
آخرین ارسال: peyman9
  آموزش ساخت کامل و جامع ریموت کنترل برای ربات electronicnarm2010 21 8,313 19-10-1392، 10:15 عصر
آخرین ارسال: maysamshirani
  آموزش میکرو کنترلر AVRاز صفر mohammd-98 0 697 29-9-1392، 02:19 عصر
آخرین ارسال: mohammd-98
Video آموزش بسکام پروژه یازدهم( ساخت ساعت با lcd) akbar8 45 18,001 12-1-1392، 11:04 صبح
آخرین ارسال: ehsancompany
  فیلم آموزش avr morteza90 2 1,122 3-1-1392، 07:46 عصر
آخرین ارسال: morteza90
  آموزش مفهومی تایمر/کانتر amir68000 1 1,479 25-9-1391، 11:14 عصر
آخرین ارسال: mohammad_amin
  حل مشکلات تاپیک آموزش قدم به قدم AVR امیرحسین 35 9,742 4-7-1391، 08:38 عصر
آخرین ارسال: atmelboy
  آموزش bascome reza137171 9 2,500 16-4-1391، 04:08 عصر
آخرین ارسال: masal

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان