Subversion Repository Public Repository

amptest

This repository has no backups
This repository's network speed is throttled to 100KB/sec

Diff Revisions 2 vs 3 for /trunk/dac.cpp

Diff revisions: vs.
  @@ -9,19 +9,23 @@
9 9
10 10 #ifdef USE_SPI
11 11
12 - #define CS_PIN 10 // SYNC
13 - #define LDAC_PIN 8
12 + #define CS_PIN 10 // SYNC
13 + #define LDAC_PIN 8
14 14
15 15
16 16 #define MODEBIT_PD0 0x1000
17 17 #define MODEBIT_PD1 0x2000
18 18 #define MODEBIT_BUF 0x4000
19 19 #define MODEBIT_ChB 0x8000
20 + #define MODEBIT_ChA 0x0000
20 21
21 22
23 +
24 + uint16_t mode_params = 0;
25 +
22 26 #else
23 27
24 - #define DAC_PIN DAC0
28 + #define DAC_PIN DAC1
25 29
26 30 #endif // USE_SPI
27 31
  @@ -46,6 +50,8 @@
46 50 SPI.setBitOrder(MSBFIRST);
47 51 SPI.setDataMode(SPI_MODE1);
48 52
53 + // mode_params = MODEBIT_ChA | MODEBIT_BUF | MODEBIT_PD0;
54 +
49 55 #else
50 56
51 57 pinMode(DAC_PIN, OUTPUT);
  @@ -57,23 +63,31 @@
57 63
58 64 void dac_write(uint32_t dac)
59 65 {
60 - uint32_t value = dac;
66 + uint16_t value = (uint16_t)dac;
67 +
68 + value &= 0x0FFF; // 12 bit value
69 +
61 70
62 71 #if defined(USE_SPI)
63 72
64 - //value |= MODEBIT_ChB; // channel B
73 + value |= mode_params; // add params
74 +
75 +
76 + digitalWrite(LDAC_PIN, LOW);
65 77
66 78 digitalWrite(CS_PIN, LOW);
67 - delay(1);
68 - SPI.transfer((value >> 8) & 0xFF);
69 - SPI.transfer(value & 0xFF);
79 + delayMicroseconds(20);
80 + SPI.transfer16(value);
81 + //SPI.transfer((value >> 8) & 0xFF, SPI_CONTINUE);
82 + //SPI.transfer(value & 0xFF);
70 83 digitalWrite(CS_PIN, HIGH);
71 84
72 - digitalWrite(LDAC_PIN, LOW);
73 - delay(1);
85 +
86 + delayMicroseconds(20);
74 87 digitalWrite(LDAC_PIN, HIGH);
75 88
76 89 #else
90 +
77 91
78 92 analogWrite(DAC_PIN, value);
79 93