PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل با spi میکرو



microprocesor_2002
12-10-2010, 12:17
سلام به همه دوستان عزیز ...
من با SPI میکروی 7x256 مشکل دارم ... هر کاری میکنم راه اندازی نمیشه.... فایل برنامه رو پیوست می کنم براتون ... ممنون می شم کمکم کنید ...

1nafar
20-10-2010, 21:47
سلام
بهتر بود یه مقدار توضیح میدادید که برنامه قراره چه کاری انجام بده
توی برنامه ی شما یه سری مشکل وجود داره
1- نیازی به تعریف کردن یا مقدار دهی رجیستر های مربوط به PIO نیست ، فقط کافیه پایه های مورد نیاز باس رو از حالت خروجی ساقط کنید :
AT91C_BASE_PIOA->PIO_PDR=((1<<17)|(1<<16)|(1<<18))
2- برای مقدار دهی رجیستر های sPI از جملات معادل استفاده کنید ، تا بهتر بشه برنامه رو تفکیک کرد :
//enable SPI clock
AT91C_BASE_PMC->PMC_PCER = ( 1 << SPI_ID );
//spi enable and reset
SAT91C_BASE_SPI0->SPI_CR = AT91C_SPI_SPIEN | AT91C_SPI_SWRST;
//SPI Mode Register: Fault detection disable, variable periph. chip select
AT91C_BASE_SPI0->SPI_MR = AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | AT91C_SPI_PS;
//enable SPI
AT91C_BASE_SPI0->SPI_CR = AT91C_SPI_SPIEN; //check this!
3-برای دریافت یا ارسال داده از یک متغیر استفاده کنید :
while( !( AT91C_BASE_SPI0->SPI_SR & AT91C_SPI_TDRE ) );
AT91C_BASE_SPI0->SPI_TDR = DATA;

while( !( AT91C_BASE_SPI0->SPI_SR & AT91C_SPI_RDRF ) );
receivedData = (AT91C_BASE_SPI0->SPI_RDR );

return(receivedData);
اگه داده ی شما بیشتر از 8 بیت باشه باید اون رو شیفت بدید .
توضیحات بیشتر رو میتونید در مجله ی PMN8 ویرایش دوم مشاهده کنید .

microprocesor_2002
21-10-2010, 10:11
سلام دوست عزیز ... ممنونم از راهنمایی .... راستشو بخوای یه آی سی خیلی جالب پیدا کردم به شماره dm132 این ای سی 16 کانال خروجی با امکانات pwm و io معمولی داره . بدرد خیلی کارا می خوره ، مثلا نورپردازی و ....... حالا اگه راه افتاد میزارمش واسه همه....