Något är tokigt med andra ord. DAC'en blir dessutom aningen varm, även om jag inte kopplar något på utgången... Har testat med en likadan DAC, men det är samma sak där.
Så här har jag kopplat:
(PIC --> DAC)
SCK (Serial clock) --> BCK (Bit Clock Input)
SDO (Data ut) --> DATA (Data input)
DAC'en har två "kanaler". Om WS-pinnen är låg så används "Left-kanalen", är WS hög så används "Right-kanalen". Så den har jag satt låg och kopplat Left-utgången till en OP-förstärkare. (Har även testat med mätinstrumentet direkt på DAC'ens Left-utgång, det var då jag fick 1v oavsett vad som skickades in från PIC-kretsen. Har även testat Right-kanalen, med samma resultat.)
Lite kod kanske?

Kod: Markera allt
program DACtest
'En liten test som skickar ut $00 och $FF till TDA1543 (DAC)
'Använder MSSP (SPI)
TRISC.3=0 ' Utgång på SCK -Serial Clock-
TRISC.4=1 ' Ingång på SDI -Data IN- Används inte i detta test...
TRISC.5=0 ' Utgång på SDO -Data UT-
SSPSTAT.7=0 ' Input data sampled at the middle of data output time. Men jag skickar bara ut data i detta test, så den behövs inte egentligen.
SSPSTAT.6=1 ' Data tas emot on rising edge of SCK. Den här behövs egentligen inte heller när jag bara skickar ut data.
SSPCON1.7=0 ' Ingen WriteCollisionDetect
SSPCON1.6=0 ' Ingen ReceiveOverflowIndicator
SSPCON1.5=1 ' Enable serieport och SCK, SDo, SDI och SS
SSPCON1.4=0 ' Idle state för clock är Låg
SSPCON1.3=0 ' Master mode, clock = Fosc/4 ' Har testat olika "Fosc" utan skillnad.
SSPCON1.2=0 ' Master mode, clock = Fosc/4
SSPCON1.1=0 ' Master mode, clock = Fosc/4
SSPCON1.0=0 ' Master mode, clock = Fosc/4
'MSSP består av ett transmitt/receive shiftregister (SSPSR) och ett Buffer register (SSPBUF).
'SSPSP kan inte nås, däremot SSPBUF.
'SSPSTAT kan däremot läsas av för att se "vad som händer".
main:
do
SSPBUF = $0000 ' Skicka ut nada/zip/zero/inget...
delay_ms(500)
SSPBUF = $FFFF ' Skicka ut alla 16bitar. Har även testat med 8bitar.
delay_ms(500)
loop until 0 = 1
end.
Har jag förstått fel, eller borde det fungera?
edit: Ändrat rubriken lite..
