try to use irq for CS and use dedicated SS for hardware SPI

This commit is contained in:
David Voswinkel 2009-08-09 13:12:44 +02:00
parent 2aee210d13
commit d095867fe4
2 changed files with 6 additions and 12 deletions

View File

@ -31,6 +31,7 @@ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#include <util/delay.h>
//############################################################################
//Routine zur Initialisierung der MMC/SD-Karte (SPI-MODE)
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_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<<SPI_SS);
MMC_Direction_REG |= (1<<SPI_SS);
MMC_Write |= (1<<MMC_Chip_Select); //Setzt den Pin MMC_Chip_Select auf High Pegel
for(a=0;a<200;a++){
nop();
nop();
nop();
}; //Wartet eine kurze Zeit
@ -56,18 +55,14 @@ unsigned char mmc_init (void){
//SPI Clock teilen durch 128
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
for (a = 0;a<0x0f;a++){ //Sendet min 74+ Clocks an die MMC/SD-Karte
mmc_write_byte(0xff);
_delay_us(100);
}
//Sendet Commando CMD0 an MMC/SD-Karte
unsigned char CMD[] = {0x40,0x00,0x00,0x00,0x00,0x95};
while(mmc_write_command (CMD) !=1){
_delay_us(100);
if (Timeout++ > 200){
MMC_Disable();
return(1); //Abbruch bei Commando1 (Return Code1)
@ -93,7 +88,6 @@ unsigned char mmc_init (void){
return(0);
}
//############################################################################
//Sendet ein Commando an die MMC/SD-Karte
unsigned char mmc_write_command (unsigned char *cmd){

View File

@ -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_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 MMC_Chip_Select 4 //Port Pin an dem Chip Select der MMC/SD-Karte angeschlossen ist
//#define SPI_SS 4 //Nicht Benutz mu<6D> aber definiert werden
#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
#endif