نه مهدی جان.من پیگیر پیگیرم .راستش رو بخوایی من خودم زبانم افتضاحه.واسه همین نمی نونستم دیتاشیت رو ترجمه کنم.اما این آموزشات خیلی کمکم کرده.دمت گرم داداش.خیر ببینی مادددددر
منتظر بقیه اون هستیماااااااااااااااااا
نه مهدی جان.من پیگیر پیگیرم .راستش رو بخوایی من خودم زبانم افتضاحه.واسه همین نمی نونستم دیتاشیت رو ترجمه کنم.اما این آموزشات خیلی کمکم کرده.دمت گرم داداش.خیر ببینی مادددددر
منتظر بقیه اون هستیماااااااااااااااااا
یعنی میگید قانون بند یک را اجرا نکنیم!!؟ این جوری بد میشها !
در ضمیمه دو فایل spi.c و spi.h هست که کمک میکنه. در فایل اول چند تا تابع هست . برای روتین وقفه:
پیکربندی اولیه:کد:void SPI0Handler (void) __irq
ارسال:کد:DWORD SPIInit( void )
دریافت:کد:void SPISend( BYTE buf)
دریافت بایت:کد:void SPIReceive( BYTE *buf, DWORD Length )
که در فایل spi.h ثوابت تعریف شده اند.کد:BYTE SPIReceiveByte( void )
با سر در آوردن از اینها میشه یه برنامه ساده تر اجرا کرد. حالا ما یکی یکی سوال میکنیم تا اساتید جواب بدند(مثل قبلی ها که جواب دادند!)
این دستور در پیکر بندی اولیه SPI برای چی هست:کد:IODIR0 |= 0x4000;
ویرایش توسط mzarkoob : 02-02-2012 در ساعت 21:42
_____________________________________
_____________________________________
راستي شما براي اين فايل راه انداز(spi.h , spi.c) مثال هم داريد، نميدنم اما يه چيزي به ذهنم رسيد اول ميخوام مطمئن بشم بعد اگه درست بود عنوان ميكنم.
_____________________________________
_____________________________________
در فایلی که هست چند فایل کمه خطا داره در اجرا. امروز داشتم بهش ور می رفتم نشد که خطاها را برطرف کنم. البته تا الان. فکر کنم را حل منطقیش اینه که یکی یکی بریم جلو . مثلا فقط فایل ارسال بعد ...
_____________________________________
_____________________________________
بله دستور ارسال
اصل فایل همینه که گذاشتم. فقط یه فایل اصلی داره که از اینها استفاده می کنه
اینم فایل:
ویرایش توسط mzarkoob : 02-02-2012 در ساعت 23:51
خوب به نظر شما چيكار كنيم؟
شما ميگيد كه تابع ارسال رو توضيح بديم در واقع هدف اصلي اين باشه كه دقيقا كار هر كدوم از رجيستر هارو يا بگيريم و اينكه براي دستور ارسال دقيقا چه رجيسترهايي رو بايد برنامه ريزي كنيم. بعد يه مثال هم در آخر كار براش مي نويسيم.
_____________________________________
_____________________________________
هر کدوم ما را به هدفمون برسنه فرقی نمی کنه
اگه اولی را بخواهیم انجام بدیم می خواهیم دستور :
را راه بندازیم. در تابع اصلی از این دستور استفاده شده. تابع آن هم اینه:کد:SPISend(data)
موارد ابهام اینهاست:کد:void SPISend( BYTE buf) { BYTE Dummy; IOCLR0 |= 0x4000; S0SPDR = buf; while(0==(S0SPSR&0x80)); IOSET0 |= 0x4000; Dummy = S0SPDR; /* Flush the RxFIFO */ Dummy = Dummy; /* ·ÀÖ¹±àÒëÆ÷±¨´í */ return; }
این چیه! : BYTE Dummy
ما با پایه 14 چیکار داریم؟ IOSET0 |= 0x4000
اگه ارسال می کنیم چرا رجیستر داده را می خونیم؟ Dummy = S0SPDR
البته در پست 17 کتابخونه آقای عبداللهی که گذاشتند هم مورد سوال را گفته ام.
ویرایش توسط mzarkoob : 02-02-2012 در ساعت 23:54
داداش مهدی.به نظر من بدونیم کار رجیسترها چیه خیلی عالیه.هر چند در عمل ممکنه زیاد کاری باهاش نداشته باشیم(چون همواره از لایبری استفاده میکنیم)ولی خوب واسه کار با میکرو های دیگه کمکمون میکنه.چون بالاخره همشون از رجیسترهای مشابه استفاده میکنن.بازم میگم دمت گرم داداشی.منتظر دومیش هستییییییییییییییییم
_____________________________________
_____________________________________
_____________________________________
_____________________________________
حالا پایه 14 مهم نیست. اصل مطلب نحوه ارسال است که چگونه باید انجام شود.
ویرایش توسط mzarkoob : 03-02-2012 در ساعت 18:53
سلام علیکم خوبی بهتره شما روی مبحث بافر 8 بایتی دریافت و ارسال رابط ssp هم کار کنی...
و هر كس از ياد [خداى] رحمان دل بگرداند، بر او شيطانى مىگماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مىدارند و [آنها] مىپندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش] به حضور ما آيد، [خطاب به شيطان] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(
سلام
ببخشید سوالم ناشیانه س ولی این سیمولینک کیل ار کجا باز میشه ؟ تو کدوم قسمتشه؟
آقایون اساتید سلام
چرا کسی جواب سوال منو نمیده ؟
اگه پایه p0.16 رو با رجیستر pinsel0 در حالت ssel قرار بدیم ، باز هم میشه که مقدار اون رو در خروجی تغییر داد ؟
من برای کار با آیسی صدای isd4004 این رو میپرسم
سلام دوست عزیز .من خوذم با 2378 کار نمیکنم و با 1768 کار میکنم.
در حالت کلی همه سعی میکنن کار پایه ssel رو به برنامه واگذار نکنن و خوذشون اونو کنترل کنن. من خوذم هم با وجود اینکه با ذستورات cmsis کار میکنم اما بازم این پایه رو در حالت gpio نگه میدارم و خوذم کنترلش میکنم.شما میتونیذ این کار رو نکننین و کنترل ائن رو به برنامه بسپرین.انتخاب با شماست دااشم