Ah stimmt, glatt übersehen^^
Aber irgendwas stimmt da trotzdem noch nicht...
Das SPI funzt zwar, aber eigentlich sollte der DAC je nach konfiguration entweder von 0V-2.048V oder 0V-4.096V (Dann halt mit halb so großer Genauigkeit) ausgeben können.
Bei mir macht der ganz was anderes.
0V-4.096V wird zu 2.048V-4.096
und bei
0V-2.048V gibt er immer 2.048V aus, egal welchen Wert ich reinschreib..
Naja, mal drüber schlafen, vielleicht krieg ichs morgen noch hin. Oder ich nerv mal demnächst meinen Ausbilder damit^^
Viele Grüße
-schumi-
Hast du das Problem gelöst?
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Da ich fast die gleichen DACs habe, bin ich natürlich auch daran interessiert ob du sie ans laufen bekommst. Hast du mal versucht die Reihenfolge der Bits zu ändern ? Irgendwie scheint es mir so, dass erst die Config Bits eintreffen sollten und dann die Datenbits.
Grüße,
Daniel
Also ich habs gerade mal mit Bascom und C probiert und bei mir laufen sie![]()
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Bei mir funktionierts so:
In setspg steht der gewünschte Wert der Ausgangsspg drin.Code:SPI_WORD( 0b10100000 | ((setspg>>6) & 0b00011111) , setspg<<2 );
Gibt dann 0V-4.095 aus. (Vermute ich, aufs Bit genau geht mein DMM nicht)
Allerdings ist das hier noch ein wenig verschoben (beim zuerst gesendeten Byte hab ich meine Angaben um ein Bit nach links verschoben (Glück gehabt, dass das MSB 0 sein muss wenn man DAC_A braucht^^).
Ich hab den verdacht, dass SCK schon irgendwo zu früh eine steigende Flanke macht und der DAC schon am lesen ist. Aber ich hab leider momentan in der Arbeit wenig Zeit übrig (Prüfungsvorbereitung) und deswegen bin ich noch nicht dazu gekommen mir den BUS mit dem Digitaloskar anzusehen.
PS: meine SPI Routinen:
Viele GrüßeCode:void SPI_INIT (void) { DDRB = DDRB | (1<<DDB5) | (1<<DDB7) | (1<<DDB4); SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR0) | (1<<CPHA); } void SPI_WORD (char data1, char data2) { PORTB = PORTB & 0b11101111; SPDR = data1; while(!(SPSR & (1<<SPIF))); SPDR = data2; while(!(SPSR & (1<<SPIF))); PORTB = PORTB | 0b00010000; }
-schumi-
Geändert von -schumi- (09.03.2012 um 22:15 Uhr)
Lesezeichen