📄 compact.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 + -