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


امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 4
  • 1
  • 2
  • 3
  • 4
  • 5
انتقال اطلاعات بین دو میکرو
#1
سلام
خلاصه کاری که می خوام انجام بدم :
میخوام یه سری متغییر رو از یه میکرو به میکرو دیگه منتقل کنم .
حالا مشروحش :
هرچی تو سایت ها رو نگاه کردم به نتیجه درستی نرسیدم . انواع ارتباط ها معرفی شده ، که فکر کنم i2c و usart کارا تر باشن برای من . فاصله بین دو میکرو زیاد نیست . احتمال نویزی بودن محیط ( نه در حد زیاد ) هم هست . تو ارتباط از طریق I2C  میشه یه متغییر رو فرستاد . حالا می خوام ببینم راهی هست که من بتونم چند متغییر رو از Slave به متغییر های مشابه در Master  بفرستم یا نه . یه سری سنسور دارم که به میکرو Slave  متصل هستن و پردازش های اصلی هم روی میکرو Master باید انجام بشه .
البته می شه تو یه حلقه چندین مرتبه ورودی I2c رو خوند و در متغییر های جداگانه ریخت ، ولی فکر کنم کار جالبی نباشه . حالا بر فرض که بخوایم اینطوری چند متغییر رو بفرستیم ، تاخیر های حلقه باید چقدر باشه تا خطایی پیش نیاد ؟ 
ممنون می شم اگه کسی که تابحال این کار رو کرده و یا اطلاعات درست و کاملی از این جریان داره راهنماییم کنه .
یا علی
تمام طول هفته را در انتظار جمعه ام 
چه جمعه ها که یک به یک غروب شد نیامدی ...
پاسخ
#2
با سلام
قبل از هر چیز یه سری به این تایپیک بزنید ، اگر بازم سوالی بود در حد توان در خدمتیم ..
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
پاسخ
#3
ممنون . اون مطالب و help بسکام رو خوندم . حالا برم باهاش ور برم ببینم می تونم نتیجه بگیرم یا نه .
 
تمام طول هفته را در انتظار جمعه ام 
چه جمعه ها که یک به یک غروب شد نیامدی ...
پاسخ
#4
سلام
بعد زا خوندن اون تاپیک ، یه کارهایی کردم . اول یه مقدار توضیحات بدم :
یه میکرو atmega 32  به عنوان master و یه میکرو atmega 16 به عنوان slave دارم .
اطلاعات پایه های میکرو 16 به میکرو 32 ارسال می شه ، یه سری تصمیم گیری هایی انجام می گیره و بعد ز اون میکرو 32 باید تغییراتی روی یکی از پورت های میکرو 16 اعمال کنه .
من چون می خواستم چند متغییر مختلف رو بفرستم ، اومدم برای هر متغییر عدد خاصی رو در نظر گرفتم . یعنی اینکه موقع ارسالش ، با یه عددی (مثلا 10 ) جمع می کنم و موقع رسیوش ، از همون عدد کم می کنم ( البته این بخاطر اینکه اوصل ارسال رو بلد نیستم ). سر کم و زیاد کردن اعداد مشکلی ندارم .
حالا اون مشکل اصلیی که واسم پیش اومده اینه که : بعضی از اعداد درست ارسال و یا دریافت نمیشن . چطوی  ؟ اینطوری که تو برنامه میکرو 32 یه حلقه 1 تا 255 گذاشتم که هر یه ثانیه عدد شمارنده حلقه رو بفرسته ، و واسه میکرو 16 هم نوشتم که هر عددی که میاد رو بهم نشون بده .
اعداد 1 تا 4 درست دریافت می شن ، بجای عدد 5 ، عدد (فکر کنم) 129 رو دریافت می کنم ، باز اعداد دیگه درست دریافت می شن تا مثلا عدد 12 ، که به جای اون ، عددی مثل 147 رو دریافت می کنه . خلاصه اینکه به همین منوال ، یه سری اعداد درست و یه سری هم اشتباه دریافت می شن . چند مرتبه هم میکرو ها رو خاموش و روشن کردم ، باز هم درست همون اعداد سری قبل نمایش داده می شن .
هنوز که نتونستم راهی واسه حل این مشکل پیدا کنم . اگه از دست کسی بر میاد ، محض رضای خدا یه کمکی برسونه .
ارتباط میکرو آسنکرون هست . 
 

راستی ، یه سوال دیگه :
واسه اینکه ارتباط بین دو میکرو بصورت سنکرون انجام بشه باید چیکار کنم ؟
یه سرچی که زدم ، یه سری کد ها واسه کدویژن پیدا کردم ، که بدردم نخورد ، آخه من با بسکام کار می کنم . و اینکه چقدر تفاوت بین این دو هست ؟ یعنی تو حالت سنکرون چه چیزی هست که تو آسنکرون نیست ؟ مثلا درصد خطا کم میشه ؟ میکرو کمتر درگیر می شه ؟ چیه ؟
 
تمام طول هفته را در انتظار جمعه ام 
چه جمعه ها که یک به یک غروب شد نیامدی ...
پاسخ
#5
 با سلام
دوست عزیز مدارتو بزار اینجا هم شماتیک و هم برنامه اگر مایلی 
از کریتسال استفاده میکنی؟ هر دو یکی هستن؟ منبع تغذیه چطور؟ 
این خطا همون اسنکرون هست که میگی یه سری اصلاعات درست نمیرسند.
ارتباط بین دو میکرو چی هست؟کدوم روش
پاسخ
#6
سلام مجدد . 
مدار یه یه مدار ساده ( 2 میکرو و 2 تا هم LCD ) هست ، ولی اگه بخواین باید شماتیک رو بکشم ( یعنی تقریبا کشیدمش ها)
برنامه هم باید برنامه همون رو آماده کنم ( آخه این کد یه قسمت از حدود 1500 خط کد هست ) .
توضیح برنامم رو یه بار دیگه مختصر می گم : در قسمت فرستنده یه حلقه 1 تا 255 هست که هر یه ثانیه یه مرتبه مقدار شمارنده حلقه رو می فرسته و گیرنده هم با دستور ()Inkey مقدار رو دریافت و نمایش می ده . ولی بازم اگه احساس می کنین کد لازمه ، آمادش کنم .
از کریستال 8MHz استفاده می کنم . هر دو کریستال یکی هستن . منبع تغذیه مشترکه . از طریق خطوط RX/TX بدون سنکرون استفاده می کنم که با این حساب فکر کنم اسمش میشه UART .
واسه ارتباط سنکرون غیر از اتصال پایه XCK ( اگه اشتباه ننوشته باشم ) چه کاری باید کرد ؟ منظورم هم کارهای نرم افزاری هست و هم سخت افزاری .
باز هم ازتون ممنون هستم .
یا علی 
تمام طول هفته را در انتظار جمعه ام 
چه جمعه ها که یک به یک غروب شد نیامدی ...
پاسخ
#7
با سلام
دوست عزیز میتونی فیوز بیت ها رو برای اوسیلاتور خارجی (مربعی چهار پایه) تنظیم کنی و با یک کریستال چندتا میکرو رو سنکرون راه بندازی.
"البته من این روش امتحان نکردم" دوستان تست کنند ببیند آیا امکان داره ( تو یه سایت خارجی خوندم )

 

 
پاسخ
#8
ببخشید ، فکر نمی کنین خیلی کلی گفتین ؟
یه کم آهسته آهسته بگین تا ما  برسیم بهتون .
کرستال های چهارپایه چه تفاوتی دارن با کریستال های 2 پایه ؟ و بعد اینکه اگه همه CLKSEL ها رو فعال کنیم ، کریستال خارجی فعال می شه . حالا اینکه این چهارتا پایه جریانشون چیه و اون دو تا پایه دیگه کارشون چیه و به کجا وصل می شن ؟ سوال دیگه اینکه اگه کریستال های میکرو ها از هم جدا ولی با یه مشخصات باشن ، تفاوتی داره با اینکه فرمودین چند میکرو با یه کریستال ؟ 
حالا یه سوال دیگه : واسه رفتن تو حالت سنکرون یه کارایی باید کرد . مثلا وصل کردن پایه XCK دو میکرو به هم که در اون صورت مستر میاد کلاک ارتباطی رو تنظیم می کنه و بر اساس کلاک اون پایه اطلاعات رد و بدل می شن . و اگه این چیزایی که نوشتم ( که بر اساس خوندن چندین فروم و ... بوده ) درست باشن ، یه تیکه کد باید به برنامه اضافه بشه که من هنوز سر اون تیکه کد ( بسکام ) گیر و سرگردونم .
تمام طول هفته را در انتظار جمعه ام 
چه جمعه ها که یک به یک غروب شد نیامدی ...
پاسخ
#9
با سلام
دوست عزیز کریستال برای تولید کلاک نیاز به چند گیت منطقی و خازن های پایدار کننده داره که معمولا داخل میکرو تعبیه شده و برای همین کریستال به دو پایه از میکرو وصل میشه اما اسیلاتور همه چیزهای مورد نظر رو برای تولید کلاک داخل خودش داره و شما کافیه اونو تغذیه کنید و خروجی کلاکش رو به یکی از پایه های میکرو که تو دیتاشیت مشخص شده وصل کنید. کریستال معمولی سیگتال ضعیفی تولید میکنه ولی اسیلاتور 4 پایه ها تغذیه میگیرن و پالس دقیق و مربع شکل تولید میکنن.

واسه سنکرون کردن دارم مطالعه میکنم ببینم چه کارهایی نیازه
پاسخ
#10
بسیار عالی . ممنون از پاسختون .
جواب بقیه سوال هام رو هم می تونین بدین ؟
باز هم سپاس
تمام طول هفته را در انتظار جمعه ام 
چه جمعه ها که یک به یک غروب شد نیامدی ...
پاسخ
مشترک شدن در این موضوع


پرش به انجمن:

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

انتخاب پوسته :

دسترسی سریع
درباره ما
انجمن سرزمین الکترونیک در 20 شهریور 91 تاسیس شده ، که همیشه سعی کرده با ظاهری متفاوت و سرعتی خوب رضایت کاربران را جلب کند ، امیدواریم توانسته باشیم گامی کوچک در پیشرفت فناوری در ایران برداشته باشیم...
نیرو گرفته از MyBB 1.8.6 با فارسی سازی مای بی بی ایران - طراحی شده در : ملت دیزاین
© تمامی حقوق برای انجمن سرزمین الکترونیک محفوظ می باشد .

پوسته‌ی انجمن: