18f4550 sd kart bulunamaması

Başlatan hasankomur, 14 Ekim 2015, 22:01:22

hasankomur

Merhaba,
18f4550 kullanarak bir sd kart uygulaması üzerinde çalışıyorum. İsis simülasyonunda çalışan devreyi ve yazılımı gerçek ortamda çalıştıramadım. Sorun kartı bulamaması. Donanımsal bir hata olduğunu düşünüyorum. Pic 48Mhz de çalışıyor. Rs232 haberleşmesinde problem yok o çalışıyor. Ve ekranda sürekli "kart bulunamadı" yazısı çıkıyor.

Microc de derlemiş olduğum kod şu şekilde,
sbit Mmc_Chip_Select           at LATC0_bit;
sbit Mmc_Chip_Select_Direction at TRISC0_bit;

int mmc_deg=15;

void main() {
     ADCON1|=0x0F;
     CMCON|=0x07;
     
     UART1_Init(19200);
     delay_ms(10);
     
     SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV64,_SPI_DATA_SAMPLE_MIDDLE,_SPI_CLK_IDLE_LOW,_SPI_LOW_2_HIGH);

      while(1)
      {
      delay_ms(1000);
      SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV64,_SPI_DATA_SAMPLE_MIDDLE,_SPI_CLK_IDLE_LOW,_SPI_LOW_2_HIGH);
              mmc_deg=Mmc_Init();
              if(mmc_deg==0)
              {
                 UART1_Write_Text("kart bulundu\r");
                 delay_ms(1000);
              }
              else if(mmc_deg==1)
              {
                  UART1_Write_Text("kart bulunamadi\r");
                  delay_ms(1000);
              }
              else if(mmc_deg==255)
              {
                   UART1_Write_Text("sistem taninmadi\r");
                   delay_ms(1000);
              }
              else
              {
                  UART1_Write_Text("hata!\r");
                  delay_ms(1000);
              }
      }
}


Gerçekte kurmuş olduğum devrenin şeması, (Güncellendi)


Kullandığım adaptör ve sd kart,


Sorunu nerede aramalıyım?


M_B

Merhaba SD kartı 1GB olarak deneyin.

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

hasankomur

Alıntı yapılan: M_B - 14 Ekim 2015, 22:29:52
Merhaba SD kartı 1GB olarak deneyin.



Elimde olmadığı için denememiştim. En yakın zamanda deneyeceğim.

kantirici

while içerisinde SPI birimini sürekli init etmenize gerek yok. Ayrıca bu sd card işinde lojik seviye önemli oraya bir göz atın.

RaMu

#4
Mmc_Init()
içinde okunan veya biryerde tanımlı olan
acaba sd kart takılı mı diye kontrol edilen bir pin olur,
sd kart okuma yazma fonksiyonlarıyla bir alakası yoktur,
fiziksel olarak kartın takılı olup olmadığını anlamak için
bir butonmuş gibi düşünülebilir,
bu kısmı bulup iptal etmelisin
veya
bu kısma denk gelen pini bulup sd kart okuyucu soketinle kullanabilirsin.

mesaj birleştirme:: 15 Ekim 2015, 01:38:37

Ayrıca picden çıkan 5V u sd karta 3.3V olarak vermek için
kurduğun gerilim bölücü bağlantısı yanlış gibi.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

hasankomur

#5
Alıntı yapılan: kantirici - 14 Ekim 2015, 23:22:11
while içerisinde SPI birimini sürekli init etmenize gerek yok. Ayrıca bu sd card işinde lojik seviye önemli oraya bir göz atın.

Sd kartın uçlarına gelen gerilimler (gerilim bölücüler yardımıyla) 2.89-2.90V. Yeterli değil mi?

mesaj birleştirme:: 15 Ekim 2015, 09:02:31

Alıntı yapılan: RaMu - 15 Ekim 2015, 01:34:49
Mmc_Init()
içinde okunan veya biryerde tanımlı olan
acaba sd kart takılı mı diye kontrol edilen bir pin olur,
sd kart okuma yazma fonksiyonlarıyla bir alakası yoktur,
fiziksel olarak kartın takılı olup olmadığını anlamak için
bir butonmuş gibi düşünülebilir,
bu kısmı bulup iptal etmelisin
veya
bu kısma denk gelen pini bulup sd kart okuyucu soketinle kullanabilirsin.

mesaj birleştirme:: Ekim 15, 2015, 02:38:37

Ayrıca picden çıkan 5V u sd karta 3.3V olarak vermek için
kurduğun gerilim bölücü bağlantısı yanlış gibi.

-Mmc_Init() fonsiyonunu hiç kullanmasam da olur diyorsunuz. Sadece takılı olup olmadığını kontrol amaçlı bir fonksiyon.
-Devre şemasındaki gerilim bölücüleri konuya eklemek için tekrar çizerken yanlış çizmişim. Gerçek devrede güncellemiş olduğum şekilde bağlı.

M_B

Çalışan kod.
/*..............................................................
SD CARD PROJECT
===============
In this project a SD card is connected to PORTB as follows:
CS  RB2
CLK RB1
DO  RB0       mosi
DI  RC7       miso
The program opens a file called Test.TXT on the SD card
and writes the string "Writing to SD Card..." to this file.
Author: studentcompanion.co.za
Date: July 2013
File: Test.C
..............................................................*/

// MMC module connections
sbit Mmc_Chip_Select           at  LATB2_bit;
sbit Mmc_Chip_Select_Direction at TRISB2_bit;


unsigned cnt;
sbit Led1 at RE0_bit;
sbit Led2 at RE1_bit;
sbit Led3 at RE2_bit;


char filename[] = "Test.TXT";
unsigned char txt[] = "Writing to SD Card...";


void main()
{
  ADCON1 |= 0x0F;                  // AN pinleri I/O olarak yapılandırıldı
  CMCON  |= 7;                     // Komparatörler kapatıldı
  TRISE = 0;                       // PORTE çıkış yapıldı
  PORTE = 0x00;                    // PORTB ayarlandı


  Delay_ms(10);

  Led1=1;     //  Power on led.      RE0
  Led2=0;     // Hata Led            RE1
  Led3=0;     // Hata yok ledi       RE2
  delay_ms(500);


  // Initialise the SPI bus

  SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV16,_SPI_DATA_SAMPLE_MIDDLE,_SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
  


  if (Mmc_Fat_Init() == 1)
            {

            SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
            Mmc_Fat_Assign(&filename, 0x80);          // Find existing file or create a new one
            Mmc_Fat_Rewrite();
            Mmc_Fat_Write(txt,21);
            Led3=1;
            }
                   Led2=1;
  for(;;);
}
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

RaMu

Alıntı yapılan: hasankomur - 15 Ekim 2015, 08:57:43
-Mmc_Init() fonsiyonunu hiç kullanmasam da olur diyorsunuz. Sadece takılı olup olmadığını kontrol amaçlı bir fonksiyon.

Öyle demedim,
muhtemelen mmc_init in içinde bir yerde,
belkide mmc_init ile hiç alakası olmayan ayrı bir fonksiyon olarak bir yerde,
program acaba sd kart fiziksel olarak takılı mı diye bir pini kontrol ediyor olabilir.

isis de denediğim şu örnek anlatım var,
belki faydası olur
https://www.picproje.org/index.php?topic=54274.0
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html