try to use irq for CS and use dedicated SS for hardware SPI
This commit is contained in:
parent
2aee210d13
commit
d095867fe4
@ -31,6 +31,7 @@ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
|||||||
|
|
||||||
#include <util/delay.h>
|
#include <util/delay.h>
|
||||||
|
|
||||||
|
|
||||||
//############################################################################
|
//############################################################################
|
||||||
//Routine zur Initialisierung der MMC/SD-Karte (SPI-MODE)
|
//Routine zur Initialisierung der MMC/SD-Karte (SPI-MODE)
|
||||||
unsigned char mmc_init (void){
|
unsigned char mmc_init (void){
|
||||||
@ -43,12 +44,10 @@ unsigned char mmc_init (void){
|
|||||||
MMC_Direction_REG |= (1<<SPI_Clock); //Setzen von Pin MMC_Clock auf Output
|
MMC_Direction_REG |= (1<<SPI_Clock); //Setzen von Pin MMC_Clock auf Output
|
||||||
MMC_Direction_REG |= (1<<SPI_DO); //Setzen von Pin MMC_DO auf Output
|
MMC_Direction_REG |= (1<<SPI_DO); //Setzen von Pin MMC_DO auf Output
|
||||||
MMC_Direction_REG |= (1<<MMC_Chip_Select);//Setzen von Pin MMC_Chip_Select auf Output
|
MMC_Direction_REG |= (1<<MMC_Chip_Select);//Setzen von Pin MMC_Chip_Select auf Output
|
||||||
//MMC_Direction_REG |= (1<<SPI_SS);
|
MMC_Direction_REG |= (1<<SPI_SS);
|
||||||
MMC_Write |= (1<<MMC_Chip_Select); //Setzt den Pin MMC_Chip_Select auf High Pegel
|
MMC_Write |= (1<<MMC_Chip_Select); //Setzt den Pin MMC_Chip_Select auf High Pegel
|
||||||
|
|
||||||
for(a=0;a<200;a++){
|
for(a=0;a<200;a++){
|
||||||
nop();
|
|
||||||
nop();
|
|
||||||
nop();
|
nop();
|
||||||
}; //Wartet eine kurze Zeit
|
}; //Wartet eine kurze Zeit
|
||||||
|
|
||||||
@ -56,18 +55,14 @@ unsigned char mmc_init (void){
|
|||||||
//SPI Clock teilen durch 128
|
//SPI Clock teilen durch 128
|
||||||
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1); //Enable SPI, SPI in Master Mode
|
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1); //Enable SPI, SPI in Master Mode
|
||||||
|
|
||||||
_delay_ms(10);
|
|
||||||
//Initialisiere MMC/SD-Karte in den SPI-Mode
|
//Initialisiere MMC/SD-Karte in den SPI-Mode
|
||||||
for (a = 0;a<0x0f;a++){ //Sendet min 74+ Clocks an die MMC/SD-Karte
|
for (a = 0;a<0x0f;a++){ //Sendet min 74+ Clocks an die MMC/SD-Karte
|
||||||
mmc_write_byte(0xff);
|
mmc_write_byte(0xff);
|
||||||
_delay_us(100);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Sendet Commando CMD0 an MMC/SD-Karte
|
//Sendet Commando CMD0 an MMC/SD-Karte
|
||||||
unsigned char CMD[] = {0x40,0x00,0x00,0x00,0x00,0x95};
|
unsigned char CMD[] = {0x40,0x00,0x00,0x00,0x00,0x95};
|
||||||
while(mmc_write_command (CMD) !=1){
|
while(mmc_write_command (CMD) !=1){
|
||||||
_delay_us(100);
|
|
||||||
if (Timeout++ > 200){
|
if (Timeout++ > 200){
|
||||||
MMC_Disable();
|
MMC_Disable();
|
||||||
return(1); //Abbruch bei Commando1 (Return Code1)
|
return(1); //Abbruch bei Commando1 (Return Code1)
|
||||||
@ -93,7 +88,6 @@ unsigned char mmc_init (void){
|
|||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//############################################################################
|
//############################################################################
|
||||||
//Sendet ein Commando an die MMC/SD-Karte
|
//Sendet ein Commando an die MMC/SD-Karte
|
||||||
unsigned char mmc_write_command (unsigned char *cmd){
|
unsigned char mmc_write_command (unsigned char *cmd){
|
||||||
|
|||||||
@ -17,8 +17,8 @@ Copyright (C) 2004 Ulrich Radig
|
|||||||
#define SPI_DI 6 //Port Pin an dem Data Output der MMC/SD-Karte angeschlossen ist
|
#define SPI_DI 6 //Port Pin an dem Data Output der MMC/SD-Karte angeschlossen ist
|
||||||
#define SPI_DO 5 //Port Pin an dem Data Input der MMC/SD-Karte angeschlossen ist
|
#define SPI_DO 5 //Port Pin an dem Data Input der MMC/SD-Karte angeschlossen ist
|
||||||
#define SPI_Clock 7 //Port Pin an dem die Clock der MMC/SD-Karte angeschlossen ist (clk)
|
#define SPI_Clock 7 //Port Pin an dem die Clock der MMC/SD-Karte angeschlossen ist (clk)
|
||||||
#define MMC_Chip_Select 4 //Port Pin an dem Chip Select der MMC/SD-Karte angeschlossen ist
|
#define MMC_Chip_Select 3 //Port Pin an dem Chip Select der MMC/SD-Karte angeschlossen ist
|
||||||
//#define SPI_SS 4 //Nicht Benutz mu<6D> aber definiert werden
|
#define SPI_SS 4 //Nicht Benutz mu<6D> aber definiert werden
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user