Elm-Chan Fat Kütüphanesini Pic için Uyarlama

Başlatan kantirici, 30 Temmuz 2012, 16:14:48

kantirici

Merhaba arkaşlar.Elm-Chanın fat kütüphanesini SD kart uygulaması yapmak için pic16f877aya uyarlamaya çalışıyorum.Program sorunsuz derlenmesine rağmen birtürlü dosyaya birşeyler kaydedebilmiş veya okuyabimiş değilm.Derleyici olarak hitech c kullanıyorum.

Uyarlama işlemini @erhanyılmaz hocanın mcu-turkey deki açıklamarı doğrultusunda yaptım.(http://www.mcu-turkey.com/?p=15774 )

İlk olarak SPI kullanmdan daha sonrada SPI ile yaptıgım denemeler sonuca ulaşmadı birtürlü  :(

SPI kütüphanesini kullanmadan uyarladıgım mmc.c aşagıda.
Tüm proje dosyaları:
https://hotfile.com/dl/164982578/4309d57/generic.rar.html

#include "diskio.h"
#include<htc.h>
#include <pic16f877a.h>
#include "delay.h"


void dly_us(unsigned int n);
void init_port(void);

/*-------------------------------------------------------------------------*/
/* Platform dependent macros and functions needed to be modified           */
/*-------------------------------------------------------------------------*/

//#include <hardware.h>			/* Include hardware specific declareation file here */

#define	INIT_PORT()	init_port()	/* Initialize MMC control port (CS/CLK/DI:output, DO:input) */
#define DLY_US(n)	DelayUs(n)	/* Delay n microseconds */
//#define	FORWARD(d)	forward(d)	/* Data in-time processing function (depends on the project) */



#define CS_PORT         PORTA           //CS pininin bağlı olduğu port
#define CK_PORT         PORTA           //CK pininin bağlı olduğu port
#define DI_PORT         PORTA           //DI pininin bağlı olduğu port
#define DO_PORT         PORTA            //DO pininin bağlı olduğu port
#define CS              1<<0            //CS pininin bağlı olduğu port biti
#define CK              1<<1            //CK pininin bağlı olduğu port biti
#define DI              1<<2            //DI pininin bağlı olduğu port biti
#define DO_             1<<3            //DO pininin bağlı olduğu port biti
#define	CS_H()		CS_PORT |=  CS	//CS pinini bir yap.
#define CS_L()		CS_PORT &= ~CS	//CS pinini sıfır yap.
#define CK_H()		CK_PORT |=  CK	//CK pinini bir yap.
#define	CK_L()		CK_PORT &= ~CK	//CK pinini sıfır yap.
#define DI_H()		DI_PORT |=  DI	//DI pinini bir yap.
#define DI_L()		DI_PORT &= ~DI	//DI pinini sıfır yap.
#define DO              DO_PORT & DO_   //DO pinindeki veriyi oku.















//	#define	CS_H()		PORTA&=0xFF;	/* Set MMC CS "high" */
//	#define CS_L()		PORTA&=0xFE;	/* Set MMC CS "low" */
//	#define CK_H()		PORTA&=0bFF;	/* Set MMC SCLK "high" */
//	#define	CK_L()		PORTA&=0bFD;;	/* Set MMC SCLK "low" */
//	#define DI_H()		PORTA&=0xFF;	/* Set MMC DI "high" */
//	#define DI_L()		PORTA&=0xFC;	/* Set MMC DI "low" */
//	#define DO	        PORTA&0x08;	/* Get MMC DO value (high:true, low:false) */



/*--------------------------------------------------------------------------

   Module Private Functions

---------------------------------------------------------------------------*/

/* Definitions for MMC/SDC command */
#define CMD0	(0x40+0)	/* GO_IDLE_STATE */
#define CMD1	(0x40+1)	/* SEND_OP_COND (MMC) */
#define	ACMD41	(0xC0+41)	/* SEND_OP_COND (SDC) */
#define CMD8	(0x40+8)	/* SEND_IF_COND */
#define CMD16	(0x40+16)	/* SET_BLOCKLEN */
#define CMD17	(0x40+17)	/* READ_SINGLE_BLOCK */
#define CMD24	(0x40+24)	/* WRITE_BLOCK */
#define CMD55	(0x40+55)	/* APP_CMD */
#define CMD58	(0x40+58)	/* READ_OCR */

/* Card type flags (CardType) */
#define CT_MMC				0x01	/* MMC ver 3 */
#define CT_SD1				0x02	/* SD ver 1 */
#define CT_SD2				0x04	/* SD ver 2 */
#define CT_SDC				(CT_SD1|CT_SD2)	/* SD */
#define CT_BLOCK			0x08	/* Block addressing */



static
BYTE CardType;			/* b0:MMC, b1:SDv1, b2:SDv2, b3:Block addressing */

void init_port(void){
TRISA=0b00001000;


****Buradan Sonrasında değişiklik yapılmadı*****
}





Ayrıca SD kart için kullandıgım yuvada resimde görülen yuva.



Yardımcı olabilirseniz sevinirim.Sabahtan beri ugraşıyorum sinir etti beni.teşekkürler...

kantirici


yamak

Yapacağın tek şey SPI için yazılmış kodları PIC e uyarlamak. Eğer çalışmıyosa muhtemelen SPI ayarlarını yanlış yapmışsındır. Bi de 16f877 nin hafızası yetiyo mu buna.

kantirici

@ yamak hocam 877a kullanıyorum.Bu kullandıgım kütüphane PFF olarak geçen az işlevli az yer kaplayan kütüphane.Sorunsuz derleniyor yer yetiyor yani.SPI de ayarları yanlış yapıyorum diye SPIsiz çalıştırmaya çalışıyorum fakak yok olmuyor olmuyor.

Port ayarlarını yapıyorum,geçikme yi define ediyorum başlık dosyasını ekliyorum fakat şu ana kadar tek bir olumlu gelişme olmadı.mmc.c deki yaptıgım altı üstü 10 satırlık kod değişikligi aşagıdaki gibi.

#

#include<htc.h>
#include "delay.h"

define	CS_H()		 RD0=1
#define CS_L()		 RD0=0
#define CK_H()		 RD2=1
#define	CK_L()		 RD2=0
#define DI_H()	     RD1=1
#define DI_L()		 RD1=0 
#define DO           RD3==1


void init_port(void){
TRISD=0b00001000;
PORTD=0x00;
}


Hazır sd kart soketi ile devreye bagladım olmadı.Kart üzerinden lehim yaptım yine olmadı.
main fonksiyonunda da var olan dosyayı açıp içinden 5 karekter okutup lcdye yazdırmaya çalışıyorum fakat kart hiç bir tepki vermiyor.Allah rızası için bi yol gösterin arkadaşlar 2 gündür kafayı yemek üzereyim vallahi bunaldım  herhalde 10 sefer baştan yapmışımdır ama bir şeyler gözümden kaçıyor beceremedim bir türlü.

serdararikan

burada çevrilmişi var.aşağıdaki örnekte SD karttaki bmp resimleri TFT ekrana basan bir program var.umarım işinize yarar

http://depositfiles.com/files/taj1ap48e

KIRIKDR

Hocam bu soket çok güzelmiş nereden aldınız acaba ben de soket bulamadım.. İnce uçlu havyam olmadığı içinde birkaç tane soketi sökerken ziyan ettim ...

bocek

avr işlemcilerde pini input olarak ayarlamak için 0 verilir, output için 1.
pic'te sanırım tersi.
1 ya da 0. işte 'bit'ün mesele..

AsHeS

@kantirici off kütüphanesinde delay fonksiyonları kullanıyor mu? kullanıyorsa bi ihtimal sorun ondan olabilir çünkü microchipin example delay kodları sağlıklı çalışmıyor

kantirici

@KIRIKDR geç oldu ama soketi ebaydan aldım.

@AsHeS35, hocam delay kullanılıyor, hitech'in standart delay kütüphanesini kullanmıştım.Yapamayınca bırakmıştım bende.Şu aralar yogun geçiyor biraz, ilk fırsatta tekrar deneyecegim.

RaMu

@kantirici halen sd kart ile ilgileniyorsanız yardımcı olmaya çalışırım, ben ağırlıklı olarak Chan ın yaptığı açıklamalara ve netteki sd kart datasheetlerine bakarak 16f877 ile sd karttan .txt okuyan bunu 2*16 lcd de gösteren bir program yazdım programı asm ile yazdım ama karşılaştığım problemler belki sizinde işinize yarayabilir. SD karta en az 512 byte yazma yapılabiliyor, sadece okuma yapılacaksa sıkıntı yok, ama yazma yapılacaksa 16f877 yetersiz kalıyor. SD kartlarda 2-4-32 gb kartların hepsi farklı protokoller ile initialise-giriş işlemine tabi tutuluyor, örneğin ben sadece 2 gb kartları okuyabiliyorum henüz. Birde denemelerinizi yaparken eğer sd karta FAT gibi bilgi,sayarın tanıyabildiği formatta veri yazmazsanız bu yazdıklarınızı bilgisayarda göremezsiniz, bunun için ben başlangıçta row data - ham veri yazarken sd karta, bunları görüntülemek için winhex adlı programı kullandım (ilacıda var) ilk uuygulamamı yine asm ile yazılmış antrak.org daki bir sd kart örneği ile yapmıştım, orada yanlış hatırlamıyorsam 18f452 kullanılmıştı fakat bu pic ile 16f877 hemen hemen aynı olduğundan uyarlamak kolay olmuştu, hatta tavsiyem bu iş için 16f877 kullanmayın aynısı ve daha iyisi olan 18f452 daha ucuz. Bu arada programın tamamı gözükmüyor portd yi kullanmışsınız, chan yazılımsal spi mi kullanmış?
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

dombilik

Alıntı yapılan: serdararikan - 01 Ağustos 2012, 19:09:13
burada çevrilmişi var.aşağıdaki örnekte SD karttaki bmp resimleri TFT ekrana basan bir program var.umarım işinize yarar

http://depositfiles.com/files/taj1ap48e

Hocam;
"Bu dosya bulunmuyor, aşağıdaki dosyaya erişimi sınırlıdır veya telif hakkı ihlalinden dolayı silindi." şeklinde bir uyarı aldım.
İlgili çalışma dosyasını başka bir yerlere upload yapmanız mümkünmü?
Bildiklerini kime miras bıraktın?kimseyemi? O zaman bildiklerinin ne önemi kalır. ******** /////////// ******** PROTON-ASM PROTEUS 7.4 SP3 EAGLE 5.40

serdararikan

bazı arkadaşlar dosyanın silindiğini söylediler. linki yeniliyorum.umarım ilgilenen arkadaşlara faydalı olur

http://www.dosya.tc/server35/xhMkdb/bmpson.rar.html

Mucit23


RaMu

Mucit23 hangi derleyici - md.yi kullanacaksın,
birde düşük boyutlu olması şartmı?
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

serdararikan

Bende acildi.aksam kontrol edip tekrar yukleyeyim