⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compact.h

📁 avr的fat文件系统测试程序
💻 H
字号:
//#########################################################################
// File: compact.h
//
// CompactFlash hardware definitions
//
//#########################################################################
// Last change: 21.04.2003
//#########################################################################
// holger.klabunde@t-online.de
// http://home.t-online.de/home/holger.klabunde/homepage.htm
//#########################################################################
// Compiler: AVR-GCC 3.2
//#########################################################################

#ifndef __COMPACT_FLASH_H	
#define __COMPACT_FLASH_H

//CF register adresses
#define CF_IO		0	//IO-Port
#define CF_FEATURES	1	//Errors Out / Features In
#define CF_SECCOUNT	2	//Sectorcount
#define CF_LBA0		3	//LBA 0-7
#define CF_LBA1		4	//LBA 8-15
#define CF_LBA2		5	//LBA 16-23
#define CF_LBA3		6	//LBA 24-27
#define CF_STACOM	7	//Status Out / Command In

//ATAPI commands
#define CF_READ_SEC	0x20
#define CF_WRITE_SEC    0x30
#define CF_IDENTIFY     0xEC

//port where data i/o has to be done
//without pullups on PortA some CF do not work !
//maybe for some CF ATMegas internal pullups are to weak.
//then use 10k external pullups on port and please use short
//cables (max. 30cm)
#define CF_DATA_DIR_IN()  	DDRA=0x00; PORTA=0xFF; // set io-pins to inputs, Pullups
#define CF_DATA_DIR_OUT() 	DDRA=0xFF; // set io-pins to outputs
#define CF_READ_DATA()    	PINA	  // read PIN, ! NOT ! PORT
#define CF_WRITE_DATA(a)  	PORTA=(a); // write to data port

#define CF_ADR_PORT 	PORTB   //Port CF_Adresspins ( D0..3 )
#define CF_ADR_PIN 	PINB    

#define CF_CS 		4	//Pin number for CF_CS
#define CF_CS_PORT 	PORTB   //Port where CF_CS is located
#define CF_CS_ON() 	sbi(CF_CS_PORT,CF_CS);
#define CF_CS_OFF() 	cbi(CF_CS_PORT,CF_CS);

#define CF_RD 		5	//Pin number for CF_RD
#define CF_RD_PORT 	PORTB   //Port where CF_RD is located
#define CF_RD_ON() 	sbi(CF_RD_PORT,CF_RD);
#define CF_RD_OFF() 	cbi(CF_RD_PORT,CF_RD);

#define CF_WR 		6	//Pin number for CF_WR
#define CF_WR_PORT 	PORTB   //Port where CF_WR is located
#define CF_WR_ON() 	sbi(CF_WR_PORT,CF_WR);
#define CF_WR_OFF() 	cbi(CF_WR_PORT,CF_WR);

//prototypes
extern unsigned char CFReadSector(unsigned long lba, unsigned char *buf);
extern unsigned char CFWriteSector(unsigned long lba, unsigned char *buf);
extern unsigned char CFIdentify(void);
extern unsigned char CFWaitReady(void);
extern unsigned char CFWaitDrq(void);
extern unsigned char CFReadAdr(unsigned char adr);
extern unsigned char CFRead(void);
extern void CFWriteAdr(unsigned char adr, unsigned char dat);
extern void CFSetAdr(unsigned char adr);

#define ReadSector(a,b) 	CFReadSector((a),(b))
#define WriteSector(a,b) 	CFWriteSector((a),(b))
#define IdentifyMedia()		CFIdentify()

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -