سلام دوستان
امیدورام حالتون خوب باشه
من یه برنامه برای راه اندازی کارت حافظه mmc 32mbyte با میکرو کنترلر pic18f458 و کامپایلر c18 نوشتم که کار نمی کنه.تو این برنامه از آی سی 74hc244 برای تطبیق ولتاژ بین میکرو و کارت استفاده کردم و کارت رو هم در ماژول کارت حافظه ای که در فروشگاه eca.irوجود داره گذاشتم.می خوام کارت رو به وضعیت idle ببرم ولی هیچ جوابی نمی گیرم.حتی شکل مو ج هارو هم رو اشسکوپ انداختم.اگر راهنمایی کنیید ممنون میشم.این هم برنامه ی من:
[code=c]
#include <p18f458.h>
#pragma config OSC=HS
#pragma config DEBUG=OFF
#pragma config WDT=OFF
#pragma config BOR=OFF
#pragma config LVP=OFF
#pragma config PWRT=ON
unsigned char writespi(unsigned char);
void main(void)
{
unsigned char ali;
TRISBbits.TRISB7=0;
SSPSTAT=0;
SSPCON1=0X21;
TRISC=0;
TRISCbits.TRISC4=1;
PORTCbits.RC2=1;
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0x40);
writespi(0x00);
writespi(0x00);
writespi(0x00);
writespi(0x00);
writespi(0x95);
for(;
{
while(SSPSTATbits.BF==0);
ali=SSPBUF;
if(ali==0x01)
{
break;
}
writespi(0XFF);
PORTBbits.RB7=0;
}
PORTBbits.RB7=1;
while(1);
}
unsigned char writespi(unsigned char s)
{
SSPBUF=s;
while(SSPSTATbits.BF==1);
}
[/code]
اضافه شده در تاریخ :
دوستا ن کسی نظری نداره من می خوام کارت رو ریست کنم و اون را به حالت idle ببرم.اول 10 بار 0xffرو به کارت فرستادم و بعد عدد 0x40رو فرستادم و بعد 4 تا 0x00 رو فرستادم و بعد x95 رو فرستادم و بعد تا زمانی که کارن پیغام 0x01 رو بفرسته مدام بهش مقدار 0xff رو فرستادم.همه این مقادیر رو در حالتی که cs کارت مقدار یک رو داره فرستادم.ولی جوابی دریافت نکردم.کسی نظری نداره؟
امیدورام حالتون خوب باشه
من یه برنامه برای راه اندازی کارت حافظه mmc 32mbyte با میکرو کنترلر pic18f458 و کامپایلر c18 نوشتم که کار نمی کنه.تو این برنامه از آی سی 74hc244 برای تطبیق ولتاژ بین میکرو و کارت استفاده کردم و کارت رو هم در ماژول کارت حافظه ای که در فروشگاه eca.irوجود داره گذاشتم.می خوام کارت رو به وضعیت idle ببرم ولی هیچ جوابی نمی گیرم.حتی شکل مو ج هارو هم رو اشسکوپ انداختم.اگر راهنمایی کنیید ممنون میشم.این هم برنامه ی من:
[code=c]
#include <p18f458.h>
#pragma config OSC=HS
#pragma config DEBUG=OFF
#pragma config WDT=OFF
#pragma config BOR=OFF
#pragma config LVP=OFF
#pragma config PWRT=ON
unsigned char writespi(unsigned char);
void main(void)
{
unsigned char ali;
TRISBbits.TRISB7=0;
SSPSTAT=0;
SSPCON1=0X21;
TRISC=0;
TRISCbits.TRISC4=1;
PORTCbits.RC2=1;
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0xFF);
writespi(0x40);
writespi(0x00);
writespi(0x00);
writespi(0x00);
writespi(0x00);
writespi(0x95);
for(;

{
while(SSPSTATbits.BF==0);
ali=SSPBUF;
if(ali==0x01)
{
break;
}
writespi(0XFF);
PORTBbits.RB7=0;
}
PORTBbits.RB7=1;
while(1);
}
unsigned char writespi(unsigned char s)
{
SSPBUF=s;
while(SSPSTATbits.BF==1);
}
[/code]
اضافه شده در تاریخ :
دوستا ن کسی نظری نداره من می خوام کارت رو ریست کنم و اون را به حالت idle ببرم.اول 10 بار 0xffرو به کارت فرستادم و بعد عدد 0x40رو فرستادم و بعد 4 تا 0x00 رو فرستادم و بعد x95 رو فرستادم و بعد تا زمانی که کارن پیغام 0x01 رو بفرسته مدام بهش مقدار 0xff رو فرستادم.همه این مقادیر رو در حالتی که cs کارت مقدار یک رو داره فرستادم.ولی جوابی دریافت نکردم.کسی نظری نداره؟
دیدگاه