Hallo, ich möchte die Datenübertragung mit SPI von AT90usb1287 zum DA-Wandler (AD5666) realisieren. Jedoch wurden keine Takte auf SCLK-PIN (PB1) im MCU erzeugt. Und an den Ausgänge von AD5666 wurden auch keine Signale erzeugt (komisch~~~). Jemand weiß wieso? Im Voraus herzlichen Dank. void SPI_Init() { DDRB|=0x06; // SCLK und MOSI as output DDRC|=_BV(PC3); //SYNC , PC3 as output SPCR=0x55; /*SPI enable ,MSB first,Master select, SPI transfer format with CPHA=1 and CPOL=0, fosc/16=1M hz */ } void AD5666(uint daword,uchar com,uchar chan) //chan is Channel number, com is command in input register content { uchar temp1,temp2,temp3; uint daword1; DDRC|=_BV(PC2); //LDAC PORTC|=_BV(PC2); //high LDAC, not update PORTC&=~_BV(PC3); //AD5666 select, --->low SYNC SPSR=0; //clear stateregister SPDR=com; while(!(SPSR&(1<<SPIF))); temp1=(uchar)(daword>>12); temp1=temp1+(chan<<4); SPSR=0; SPDR=temp1; while(!(SPSR&(1<<SPIF))); SPSR=0; daword1=(daword<<4); temp2=(uchar)(daword1>>8); SPDR=temp2; while(!(SPSR&(1<<SPIF))); SPSR=0; daword&=0x000F; //transmit low 4 bits temp3=(uchar)(daword<<4); SPDR=temp3; while(!(SPSR&(1<<SPIF))); SPSR=0; PORTC|=_BV(PC3); //ad5666 not selected, high SYNC PORTC&=~_BV(PC2); //low LDAC, asynchronous LDAC update mode _delay_ms(0.01); //LDAC pulse width low, 10ns PORTC|=_BV(PC2); } void main() { uint ddata; SPI_Init(); while (1) { ddata=65535; AD5666(ddata,0x03,0); //channel 0 } }
Gast
#1080480
> Und an den Ausgänge von AD5666 wurden auch keine Signale erzeugt >(komisch~~~). Setz SS mal auf Ausgang.
holger wrote: >> Und an den Ausgänge von AD5666 wurden auch keine Signale erzeugt >>(komisch~~~). > > Setz SS mal auf Ausgang. SS (PB0) ist frei (keinen Anschluss). Trotzdem geht es denn doch?
holger wrote: >> Und an den Ausgänge von AD5666 wurden auch keine Signale erzeugt >>(komisch~~~). > > Setz SS mal auf Ausgang. SS wurde auf Ausgang gesetzt. Bei DA-Wandler gab es noch kein Ausgangssignal. Wieso?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.