Subversion Repository Public Repository

amptest

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <Arduino.h>
#include <SPI.h>
#include "dac.h"



//#define USE_SPI


#ifdef USE_SPI

#define CS_PIN      10  // SYNC
#define LDAC_PIN    8


#define MODEBIT_PD0  0x1000
#define MODEBIT_PD1  0x2000
#define MODEBIT_BUF  0x4000
#define MODEBIT_ChB  0x8000
#define MODEBIT_ChA  0x0000



uint16_t mode_params = 0;

#else

#define DAC_PIN   DAC1

#endif // USE_SPI







void dac_init()
{

#if defined(USE_SPI)

    pinMode(CS_PIN, OUTPUT);
    digitalWrite(CS_PIN, HIGH);

    pinMode(LDAC_PIN, OUTPUT);
    digitalWrite(LDAC_PIN, HIGH);

    SPI.begin();
    SPI.setBitOrder(MSBFIRST);
    SPI.setDataMode(SPI_MODE1);

//    mode_params = MODEBIT_ChA | MODEBIT_BUF | MODEBIT_PD0;

#else

    pinMode(DAC_PIN, OUTPUT);
    analogWriteResolution(12);

#endif // __SAM3X8E__
}


void dac_write(uint32_t dac)
{
    uint16_t value = (uint16_t)dac;

    value &= 0x0FFF; // 12 bit value


#if defined(USE_SPI)

    value |= mode_params; // add params


    digitalWrite(LDAC_PIN, LOW);

    digitalWrite(CS_PIN, LOW);
    delayMicroseconds(20);
    SPI.transfer16(value);
    //SPI.transfer((value >> 8) & 0xFF, SPI_CONTINUE);
    //SPI.transfer(value & 0xFF);
    digitalWrite(CS_PIN, HIGH);


    delayMicroseconds(20);
    digitalWrite(LDAC_PIN, HIGH);

#else
    

    analogWrite(DAC_PIN, value);

#endif //  __SAM3X8E__
}


Commits for amptest/trunk/dac.cpp

Diff revisions: vs.
Revision Author Commited Message
3 Diff Diff DimirtiusGu picture DimirtiusGu Sat 12 Nov, 2022 18:41:39 +0000

- расширен диапазон частот
- переименованы режимы

2 DimirtiusGu picture DimirtiusGu Wed 20 Jul, 2022 00:52:33 +0000