Skip to content

Commit

Permalink
initial arduino-ci (#4)
Browse files Browse the repository at this point in the history
  • Loading branch information
RobTillaart committed Dec 18, 2020
1 parent 0172671 commit 661732f
Show file tree
Hide file tree
Showing 14 changed files with 269 additions and 127 deletions.
7 changes: 7 additions & 0 deletions .arduino-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
compile:
# Choosing to run compilation tests on 2 different Arduino platforms
platforms:
- uno
- leonardo
- due
- zero
13 changes: 13 additions & 0 deletions .github/workflows/arduino_test_runner.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
name: Arduino CI

on: [push, pull_request]

jobs:
arduino_ci:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: Arduino-CI/action@master
# Arduino-CI/action@v0.1.1
44 changes: 22 additions & 22 deletions DAC8554.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@
// FILE: DAC8554.cpp
// AUTHOR: Rob Tillaart
// PURPOSE: Arduino library for DAC8554 SPI Digital Analog Convertor
// VERSION: 0.1.4 experimental
// VERSION: 0.2.0
// URL: https://github.com/RobTillaart/DAC8554
//
// HISTORY:
// 0.1.0: 2017-12-19 initial version
// 0.1.2 2020-04-06 minor refactor, readme.md
// 0.1.3 2020-06-07 fix library.json
// 0.1.4 2020-07-20 fix URL's in demo's; MIT license; minor edits
//
// 0.1.0: 2017-12-19 initial version
// 0.1.2 2020-04-06 minor refactor, readme.md
// 0.1.3 2020-06-07 fix library.json
// 0.1.4 2020-07-20 fix URL's in demo's; MIT license; minor edits
// 0.2.0 2020-12-18 add arduino-ci + unit test

#include <SPI.h>
#include <DAC8554.h>
#include "SPI.h"
#include "DAC8554.h"

#define DAC8554_BUFFER_WRITE 0x00
#define DAC8554_SINGLE_WRITE 0x10
Expand Down Expand Up @@ -60,65 +60,65 @@ void DAC8554::begin()
//
// SETVALUE
//
// DAC = 0,1,2,3
// channel = 0,1,2,3
// value = 0..65535
void DAC8554::bufferValue(uint8_t DAC, uint16_t value)
void DAC8554::bufferValue(uint8_t channel, uint16_t value)
{
uint8_t configRegister = _address;
configRegister |= DAC8554_BUFFER_WRITE;
configRegister |= (DAC << 1);
configRegister |= (channel << 1);
writeDevice(configRegister, value);
}

void DAC8554::setValue(uint8_t DAC, uint16_t value)
void DAC8554::setValue(uint8_t channel, uint16_t value)
{
uint8_t configRegister = _address;
configRegister |= DAC8554_ALL_WRITE;
configRegister |= (DAC << 1);
configRegister |= (channel << 1);
writeDevice(configRegister, value);
}

void DAC8554::setSingleValue(uint8_t DAC, uint16_t value)
void DAC8554::setSingleValue(uint8_t channel, uint16_t value)
{
uint8_t configRegister = _address;
configRegister |= DAC8554_SINGLE_WRITE;
configRegister |= (DAC << 1);
configRegister |= (channel << 1);
writeDevice(configRegister, value);
}

//////////////////////////////////////////////////////////////////////
//
// POWERDOWN
//
// DAC = 0,1,2,3
// channel = 0,1,2,3
// powerDownMode =
// DAC8554_POWERDOWN_NORMAL 0x00
// DAC8554_POWERDOWN_1K 0x40
// DAC8554_POWERDOWN_100K 0x80
// DAC8554_POWERDOWN_HIGH_IMP 0xC0
void DAC8554::bufferPowerDown(uint8_t DAC, uint8_t powerDownMode)
void DAC8554::bufferPowerDown(uint8_t channel, uint8_t powerDownMode)
{
uint8_t configRegister = _address;
configRegister |= DAC8554_BUFFER_WRITE;
configRegister |= (DAC << 1);
configRegister |= (channel << 1);
uint16_t value = (powerDownMode & 0xC0) << 8;
writeDevice(configRegister, value);
}

void DAC8554::setPowerDown(uint8_t DAC, uint8_t powerDownMode)
void DAC8554::setPowerDown(uint8_t channel, uint8_t powerDownMode)
{
uint8_t configRegister = _address;
configRegister |= DAC8554_ALL_WRITE;
configRegister |= (DAC << 1);
configRegister |= (channel << 1);
uint16_t value = (powerDownMode & 0xC0) << 8;
writeDevice(configRegister, value);
}

void DAC8554::setSinglePowerDown(uint8_t DAC, uint8_t powerDownMode)
void DAC8554::setSinglePowerDown(uint8_t channel, uint8_t powerDownMode)
{
uint8_t configRegister = _address;
configRegister |= DAC8554_SINGLE_WRITE;
configRegister |= (DAC << 1);
configRegister |= (channel << 1);
uint16_t value = (powerDownMode & 0xC0) << 8;
writeDevice(configRegister, value);
}
Expand Down
56 changes: 28 additions & 28 deletions DAC8554.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@
// FILE: DAC8554.h
// AUTHOR: Rob Tillaart
// PURPOSE: Arduino library for DAC8554 SPI Digital Analog Convertor
// VERSION: 0.1.4 experimental
// VERSION: 0.2.0
// HISTORY: See DAC8554.cpp
// URL: https://github.com/RobTillaart/DAC8554
//

#include "SPI.h"

#define DAC8554_POWERDOWN_NORMAL 0x00
#define DAC8554_POWERDOWN_1K 0x40
#define DAC8554_POWERDOWN_100K 0x80
#define DAC8554_POWERDOWN_HIGH_IMP 0xC0
#define DAC8554_POWERDOWN_NORMAL 0x00
#define DAC8554_POWERDOWN_1K 0x40
#define DAC8554_POWERDOWN_100K 0x80
#define DAC8554_POWERDOWN_HIGH_IMP 0xC0

#define DAC8554_LIB_VERSION "0.1.4"
#define DAC8554_LIB_VERSION "0.2.0"

class DAC8554
{
Expand All @@ -26,33 +26,33 @@ class DAC8554
// software SPI constructor
DAC8554(uint8_t spiData, uint8_t spiClock, uint8_t slaveSelect, uint8_t address = 0);

void begin();
void begin();

void bufferValue(uint8_t DAC, uint16_t value);
void setValue(uint8_t DAC, uint16_t value);
//writes the value to the DAC but does not affect buffered ones
void setSingleValue(uint8_t DAC, uint16_t value);
void bufferValue(uint8_t channel, uint16_t value);
void setValue(uint8_t channel, uint16_t value);
//writes the value to the channel but does not affect buffered ones
void setSingleValue(uint8_t channel, uint16_t value);

void bufferPowerDown(uint8_t DAC, uint8_t powerDownMode);
void setPowerDown(uint8_t DAC, uint8_t powerDownMode);
void setSinglePowerDown(uint8_t DAC, uint8_t powerDownMode);
void bufferPowerDown(uint8_t channel, uint8_t powerDownMode);
void setPowerDown(uint8_t channel, uint8_t powerDownMode);
void setSinglePowerDown(uint8_t channel, uint8_t powerDownMode);

// write all buffers to all(up to 4) 8554's DAC's
void broadcastBuffer();
// write value to all(up to 4) 8554's DAC's
void broadcastValue(uint16_t value);
// write powerDownMode to all 8554's DAC's
void broadcastPowerDown(uint8_t powerDownMode);
// write all buffers to all(up to 4) 8554's channel's
void broadcastBuffer();
// write value to all(up to 4) 8554's channel's
void broadcastValue(uint16_t value);
// write powerDownMode to all 8554's channel's
void broadcastPowerDown(uint8_t powerDownMode);

private:
uint8_t _spiData;
uint8_t _spiClock;
uint8_t _slaveSelect;
uint8_t _address;
bool _hwSPI;

void writeDevice(uint8_t configRegister, uint16_t value);
void swSPI_transfer(uint8_t value);
uint8_t _spiData;
uint8_t _spiClock;
uint8_t _slaveSelect;
uint8_t _address;
bool _hwSPI;

void writeDevice(uint8_t configRegister, uint16_t value);
void swSPI_transfer(uint8_t value);
};

// -- END OF FILE --
54 changes: 44 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,64 @@
# DAC8554
Arduino library for DAC8554 Digital Analog Convertor

[![Arduino CI](https://github.com/RobTillaart/DAC8554/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci)
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/DAC8554/blob/master/LICENSE)
[![GitHub release](https://img.shields.io/github/release/RobTillaart/DAC8554.svg?maxAge=3600)](https://github.com/RobTillaart/DAC8554/releases)

# DAC8551

Arduino library for DAC8554 SPI Digital Analog Convertor

## Description

not tested extensively
**Warning** not tested extensively

The DAC8551 is a SPI based 16 bit DAC with four channels.

## Interface

### Core

- **DAC8551(uint8_t slaveSelect)** Constructor for hardware SPI,
since 0.2.0 the slaveSelect pin needs to be defined.
- **DAC8551(uint8_t spiData, uint8_t spiClock, uint8_t slaveSelect)** Constructor for the software SPI
- **void begin()** initializes all pins to default state
- **void setValue(uint16_t value)** set the value of the channel to 0 - 65535
- **uint16_t getValue()** returns the last value written.

### Power down
check datasheet for details.

- **void setPowerDown(uint8_t powerDownMode)** sets power down mode. 0 - 3.
- **uint8_t getPowerDownMode()** returns last written mode.

| Power down mode | Value |
|:------------------------|:-----:|
| DAC8554_POWERDOWN_NORMAL | 0x00 |
| DAC8554_POWERDOWN_1K | 0x40 |
| DAC8554_POWERDOWN_100K | 0x80 |
| DAC8554_POWERDOWN_HIGH_IMP | 0xC0 |



## Operation

See examples

**demo_hw_spi.ino**
write a sawtooth to channel A followed by a sinus
uses HW SPI
- write a sawtooth to channel A followed by a sinus
- uses HW SPI

**demo_sw_spi.ino**
write a sawtooth to channel A followed by a sinus
uses SW SPI
- write a sawtooth to channel A followed by a sinus
- uses SW SPI

**demo_same_time_write.ino**
writes two square waves that trigger at the same time
- writes two square waves that trigger at the same time

**demo_sequential_write.ino**
writes two square waves sequentially (slight time difference)
- writes two square waves sequentially (slight time difference)

**demo_powerdown.ino**
idem
- idem

## TODO

Expand Down
5 changes: 1 addition & 4 deletions examples/DAC8554_broadcast/DAC8554_broadcast.ino
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@
// FILE: DAC8554_broadcast.ino
// AUTHOR: Rob Tillaart
// PURPOSE: demo DAC8554 library Arduino with hardware SPI
// VERSION: 0.1.1
// VERSION: 0.2.0
// URL: https://github.com/RobTillaart/Arduino/DAC8554

// HISTORY:
// 0.1.0: 2017-12-19 initial version
// 0.1.1 2020-07-20 fix URL; minor edits

#include "DAC8554.h"

Expand Down
14 changes: 6 additions & 8 deletions examples/DAC8554_hw_spi/DAC8554_hw_spi.ino
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,21 @@
// FILE: DAC8554_hw_spi.ino
// AUTHOR: Rob Tillaart
// PURPOSE: demo DAC8554 library Arduino with hardware SPI
// VERSION: 0.1.1
// VERSION: 0.2.0
// URL: https://github.com/RobTillaart/Arduino/DAC8554
//
// HISTORY:
// 0.1.0: 2017-12-19 initial version
// 0.1.1 2020-07-20 fix URL; minor edits


#include "DAC8554.h"

DAC8554 DAC;
DAC8554 mydac;

void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Serial.println(DAC8554_LIB_VERSION);
DAC.begin();
mydac.begin();
}

void loop()
Expand All @@ -28,7 +26,7 @@ void loop()
// minimal sawtooth
for (uint16_t val = 0; val < 65500; val+= 30)
{
DAC.setValue(channel, val);
mydac.setValue(channel, val);
int av = analogRead(A0);

Serial.print(val);
Expand All @@ -40,7 +38,7 @@ void loop()
for (long i = 0; i < 360; i++ )
{
long s = 32768 + 32768 * sin( i * (PI / 180.0));
DAC.setValue(channel, s);
mydac.setValue(channel, s);
int av = analogRead(A0);
Serial.print(i);
Serial.print("\t ==> \t");
Expand Down
Loading

0 comments on commit 661732f

Please sign in to comment.