Forum: Compiler & IDEs SPI-Funktion falsch?


von ElGreco (Gast)


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();
}

von Benedikt (Gast)


Lesenswert?

Lass mal das CPHA und CPOL weg, es sollte mit dem SPI Mode 0
funktionieren.

von ElGreco (Gast)


Lesenswert?

danke für die antwort, aber der fehler lag in meiner unachtsamkeit...
hatte in den defines 2 pins vertauscht

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.