سلام دوستان من میخوام با استفاده از میکروی pic18f452 کتابخانه های mikroc روی sd card داخل یک فایل تکست چیزی بنویسم اما وقتی میخوام کارت حافظه رو initialize کنم برنامه درست کار نمیکنه و مقدار ۲۵۵ رو بر میگردونه که یعنی کارت حافظه شناسایی نشد. برنامم به صورت زیر هستش. ولتاژ ;پایه ها رو که اندازه میگیرم ولتاژ sck رو صفر نشون میده بقیه ولتاژها عادیه اتصالات رو از روی شکل زیر وصل کردم
}

کد:
void usart_sendstring (char *s); void usart_sendchar(char chr); void usart_init(void); sbit Mmc_Chip_Select at LATB4_bit; sbit Mmc_Chip_Select_Direction at TRISB4_bit; unsigned long size; char character[10]; unsigned char i; char err; void main() { usart_init(); usart_sendstring("start"); // Initialize SPI1 module /*SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE,_SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);*/ TRISC &= ~(1<<3); // set SCK pin as output TRISC &= ~(1<<5);// set SDO pin as output TRISC |= (1<<4); // set MISO as input SSPCON1 |= (1<<5); err= Mmc_Fat_Init(); if (err==0) { usart_sendstring("sd card initialized successfully"); // reinitialize SPI1 at higher speed SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH); } else if (err !=0); { usart_sendstring("sd card initialization failed"); usart_sendchar(err); } Mmc_Fat_Assign("MIKRO007.TXT",0xA0); Mmc_Fat_Append(); Mmc_Fat_Write("Hello world",255); Mmc_Fat_Reset(&size); for (i=0;i<11;i++); { Mmc_Fat_Read(&character[i]); usart_sendstring(character); } } void usart_init(void) { TXSTA |= (1<<5); // Transmit Enable bit TXSTA |= (1<<2); // baudrate generator to high speed TRISC |=(1<<7);// congifure rx and tx TRISC &=~(1<<6); RCSTA |= (1<<7); // serial enable bit RCSTA |= (1<<4); // Enabling the reception by setting bit CREN SPBRG =129; // baudrate 9600 } void usart_sendchar(char chr) { while(!(TXSTA &(1<<1))); TXREG=chr; } void usart_sendstring (char *s) { while (*s) { usart_sendchar(*s); s++; }