Meine "Vom-SPI-Empfangs"-Funktion...
Die is doch bestimmt Gruetze, oder?
Kritiken und Anmerkungen ausdruecklich Erwuenscht!
Diese Funktion hab ich jetzt mal in zwei unterteilt:
Code:
char *getString( void )
{
char *string;
char singleChar;
int i = 0;
while( 1 )
{
singleChar = getChar();
if ( singleChar == 0x00 )
break;
string[i] = singleChar;
i++;
}
cout<<string;
return string;
}
char getChar( void )
{
char r;
while ( MA_OK != MA_TestChar_SPI() );
r = MA_GetChar_SPI();
return r;
}
Es läuft jetzt bis zu der While-Schleife in der getChar-Fkt., doch aus dieser kommt er nie heraus!
Ich habe mal nachgeschaut und in der entsprechenden c-Datei fuer das ganze SPI-Zeug steht, das ich fuer die MA_GetChar_SPI-Fkt. halt die MA_TestChar_SPI-Fkt. nutzen soll, doch hängt er scheinbar immer in dieser sich an dem SPIF-Flag auf (im AVRStudio hab ich gesehen, dass dieses nie gesetzt wird)
Hier mal die TestChar-Fkt.:
Code:
S8 MA_TestChar_SPI( void )
/*
**---------------------------------------------------------------------------
**
** Abstract:
** Test if serial transfer is complete.
**
** Parameters:
** None
**
** Returns:
** MA_OK Serial transfer is complete
** MA_EMPTY Serial transfer is not complete
**
**---------------------------------------------------------------------------
*/
{
S8 Status;
/*--- Handle user code on function entry ---*/
ENTER_MA_TESTCHAR_SPI;
if( SPSR & __BIT_MASK( SPIF ) )
{
/*--- Serial transfer is complete ---*/
Status = MA_OK;
}
else
{
/*--- Serial transfer is not complete ---*/
Status = MA_EMPTY;
}
/*--- Handle user code on function exit ---*/
EXIT_MA_TESTCHAR_SPI;
/*--- Thread safe return ---*/
return Status;
} /* MA_TestChar_SPI */
Ich schau hier echt wien Schwein ins Uhrwerk, wenn ihr nen Tipp habt...
BITTE MELDEN!!!
BGMF[/b]
Lesezeichen