Port_Fer ändern ADSP BF592

OP (Firma: tgm) #2960383
Lesenswert?

Ich versuche derzeit auf dem Blackfin eine SPI Schnittstelle zu 
realisieren.

Es soll ein Master sein und mit den Einstellungen der Spi-Parameter habe 
ich auch keine Probleme allerdings mit den Pins. Inzwischen vermute ich 
das ich erst mit dem Port_Fer Register die entsprechenden Pins enablen 
muss. Das Problem daran ist nun, dass ich nicht weiß wie ich auf das 
Port_Fer Register zugreifen kann um es zu ändern. Ich verwende eine 
ursprünglich funktionierende SPI-Schnittstelle welche ich nur 
vereinfacht habe und welche offenbar auch intern funktioniert.

Mein Programm derzeit:
void SPI_Test(void)
{
  //Test Selfmade
  unsigned char *test = malloc(8);
  memset(test, 0xAA, 8);
  //Setup
  //*pFIO_DIR |= PF0;
  *pFIO_DIR |= PF15;
  *pFIO_DIR |= PF14;
  *pFIO_DIR |= PF13;
  *pFIO_FLAG_C |= PF15;


  *pSPI_BAUD = 25;
  *pSPI_CTL = MSTR | TIMOD01 | SPE;  //SPI Mode 0
  *pSPI_FLG = FLS1 | FLG1;
  *pSPI_TDBR = 25;

   *pPORT_MUX      = (~(PF0 | PF1 | PF2));

  //Write_Status
  if (*pSPI_CTL & CPHA)
  {
       *pSPI_FLG &= ~FLG1;
  }
  else
  {
     *pFIO_FLAG_C = PF1;
  }
  for(dummy=0; dummy<100; dummy++);

  WaitForSPIF();
  *pSPI_TDBR=WRSR;
  WaitForSPIF();
  for(dummy=0; dummy<100; dummy++);

  tempchar = rbyte();

  WaitForSPIF();
  *pSPI_TDBR=0;
  WaitForSPIF();
  for(dummy=0; dummy<100; dummy++);

  tempchar = rbyte();
WaitForSPIF();
  *pSPI_TDBR=WRDI;
  WaitForSPIF();
  for(dummy=0; dummy<100; dummy++);
  tempchar = rbyte();
  for(dummy=0; dummy<100; dummy++);
  if (*pSPI_CTL & CPHA)
  {
      *pSPI_FLG |= FLG1;
  }
  else
  {
      *pFIO_FLAG_S = PF1;
  }
  //Disable_SPI();
  *pSPI_CTL  &= ~SPE;
  free(test);
}

Der dazugehörige Header im Anhang

Es ist nun der Fall, dass die pointer auf alle Register mit ausnahme von 
Port_Fer funktionieren. Die möglichkeit direkt auf das Register würde 
auch noch offenstehen, aber ich nicht wie.

Bitte um Hilfe
lg Draugluin
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren