SPI-Funktion falsch?

Gast #410893
Lesenswert?

ich möchte einen ad9833 (dds-chip) per spi mit einem atmega32 @16MHz
ansteuern. mit meiner spi-funktion zeigt er allerdings absolut keine
reaktion.
ich programmiere den uC per spi über den pc-parallelport. der ad9833
hängt an den selben pins dran, und bekommt demnach auch alle daten ab
die beim programmieren für den avr bestimmt. das komische daran ist,
dass er während der programmierphase jede menge an output liefert, er
scheint also problemlos daten erhalten zu können. allerdings nur nicht
mit meiner spi-funktion!
ich wüsste nicht was daran falsch sein sollte, help please! :)

void spiMasterInit(void)
{
  SPI_DDR |= (1<<SPI_SS_PIN)|(1<<SPI_MOSI_PIN)|(1<<SPI_SCK_PIN);
  //spi ena, master, fosc/16 = 1MHz bei 16MHz
  SPCR = (1<<SPE)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA);
  SPI_PORT |= (1<<SPI_SS_PIN);
}

void spiSendWord(unsigned int data)
{
  SPI_SS_LOW();

  SPDR = (data>>8) & 0xFF;
  while(!(SPSR & (1<<SPIF)));

  SPDR = data & 0xFF;
  while(!(SPSR & (1<<SPIF)));

  SPI_SS_HIGH();
}

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