This is what I have used to produce 3 sinewaves out of 3 MCP4921 DACs. Cant find an MCP4291
regardsCode:include "modedefs.bas" ANSEL = %00000000 'Disable analog inputs Channels 0 to 7 ANSELH = %00000000 'Disable analog inputs Channels 8 to 11 WPUB = %00000000 'Disable weak pull-ups ADCON0 = %00000000 'A/D Module is OFF CM1CON0 = %00000000 'Comparator1 Module is OFF CM2CON0 = %00000000 'Comparator2 Module is OFF INTCON = %00000000 'INTerrupts CONtrol TRISA = %00000000 'Set Input/Output (0 to 5) PORTA = %00000000 'Ports High/Low (0 to 5) TRISB = %00000000 'Set Input/Output (4 to 7) PORTB = %00000000 'Ports High/Low (4 to 7) TRISC = %01000000 'Set Input/Output (0 to 7) PORTC = %01000000 'Ports High/Low (0 to 7) addr var word [90] addr[1]=2139 addr[2]=2278 addr[3]=2415 addr[4]=2551 addr[5]=2684 addr[6]=2813 addr[7]=2938 addr[8]=3059 addr[9]=3175 addr[10]=3285 addr[11]=3389 addr[12]=3486 addr[13]=3576 addr[14]=3658 addr[15]=3732 addr[16]=3797 addr[17]=3854 addr[18]=3902 addr[19]=3940 addr[20]=3969 addr[21]=3989 addr[22]=3998 addr[23]=3998 addr[24]=3989 addr[25]=3969 addr[26]=3940 addr[27]=3902 addr[28]=3854 addr[29]=3797 addr[30]=3732 addr[31]=3658 addr[32]=3576 addr[33]=3486 addr[34]=3389 addr[35]=3285 addr[36]=3175 addr[37]=3059 addr[38]=2938 addr[39]=2813 addr[40]=2684 addr[41]=2551 addr[42]=2415 addr[43]=2278 addr[44]=2139 addr[45]=2002 addr[46]=1861 addr[47]=1722 addr[48]=1585 addr[49]=1449 addr[50]=1316 addr[51]=1187 addr[52]=1062 addr[53]=941 addr[54]=825 addr[55]=715 addr[56]=611 addr[57]=514 addr[58]=424 addr[59]=342 addr[60]=268 addr[61]=203 addr[62]=146 addr[63]=98 addr[64]=60 addr[65]=31 addr[66]=11 addr[67]=2 addr[68]=2 addr[69]=11 addr[70]=31 addr[71]=60 addr[72]=98 addr[73]=146 addr[74]=203 addr[75]=268 addr[76]=342 addr[77]=424 addr[78]=514 addr[79]=611 addr[80]=715 addr[81]=825 addr[82]=941 addr[83]=1062 addr[84]=1187 addr[85]=1316 addr[86]=1449 addr[87]=1585 addr[88]=1722 addr[89]=1861 addr[90]=1996 '------------------------------------------------------------------------------- ' Variables SCK VAR PORTB.6 'Clock pin CS1 VAR PORTC.0 'Chip Select Active low CS2 VAR PORTC.1 CS3 VAR PORTC.2 SDO VAR PORTC.7 'Data Out pin FREQ VAR BYTE SWITCH VAR PORTC.6 counter VAR word highbit var word lbit var highbit.byte0 hbit var highbit.byte1 '------------------------------------------------------------------------------- START: IF SWITCH THEN FREQ = 35 ELSE FREQ = 185 ENDIF for counter = 1 to 90 highbit = addr[counter] +20480 low cs1 SHIFTOUT SDO,SCK,msbfirst,[hbit] SHIFTOUT SDO,SCK,msbfirst,[lbit] high cs1 PAUSEUS FREQ low cs2 SHIFTOUT SDO,SCK,msbfirst,[hbit] SHIFTOUT SDO,SCK,msbfirst,[lbit] high cs2 PAUSEUS FREQ low cs3 SHIFTOUT SDO,SCK,msbfirst,[hbit] SHIFTOUT SDO,SCK,msbfirst,[lbit] high cs3 PAUSEUS FREQ next counter counter=1 GOTO START: END
aajgss




Bookmarks