Daniel Kramnik
/
aqc-rev-3-f411re
Active quenching circuit rev-3 firmware.
dac2.cpp@0:21fa2141c5b2, 2019-01-08 (annotated)
- Committer:
- kramnik
- Date:
- Tue Jan 08 21:54:34 2019 +0000
- Revision:
- 0:21fa2141c5b2
Working rev-3 firmware
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kramnik | 0:21fa2141c5b2 | 1 | #include "mbed.h" |
kramnik | 0:21fa2141c5b2 | 2 | #include "dac2.h" |
kramnik | 0:21fa2141c5b2 | 3 | |
kramnik | 0:21fa2141c5b2 | 4 | // DAC2 Pin Setup |
kramnik | 0:21fa2141c5b2 | 5 | // 12-bits, 1-channel (I2C1: PB7 = SDA, PB6 = SCL) |
kramnik | 0:21fa2141c5b2 | 6 | I2C i2c_dac2_1ch( PB_7, PB_6 ); |
kramnik | 0:21fa2141c5b2 | 7 | DigitalOut dac2_1ch_addrsel( PB_5 ); // sets the A0 (LSB) address bit (use like chip select) |
kramnik | 0:21fa2141c5b2 | 8 | |
kramnik | 0:21fa2141c5b2 | 9 | void dac2_init( void ) { |
kramnik | 0:21fa2141c5b2 | 10 | i2c_dac2_1ch.frequency( 400000 ); |
kramnik | 0:21fa2141c5b2 | 11 | dac2_write( 0 ); |
kramnik | 0:21fa2141c5b2 | 12 | } |
kramnik | 0:21fa2141c5b2 | 13 | |
kramnik | 0:21fa2141c5b2 | 14 | void dac2_write( uint16_t val ) { // For MCP4725 12-bit DAC (values 0..4095) |
kramnik | 0:21fa2141c5b2 | 15 | dac2_1ch_addrsel = 1; // Assert A0 |
kramnik | 0:21fa2141c5b2 | 16 | |
kramnik | 0:21fa2141c5b2 | 17 | char message[ 3 ]; |
kramnik | 0:21fa2141c5b2 | 18 | message[ 0 ] = 0x40; // Write new value without saving to EEPROM |
kramnik | 0:21fa2141c5b2 | 19 | message[ 1 ] = val / 16; |
kramnik | 0:21fa2141c5b2 | 20 | message[ 2 ] = ( val % 16 ) << 4; |
kramnik | 0:21fa2141c5b2 | 21 | |
kramnik | 0:21fa2141c5b2 | 22 | i2c_dac2_1ch.write( ( 0x61 << 1 ), message, 3 ); |
kramnik | 0:21fa2141c5b2 | 23 | |
kramnik | 0:21fa2141c5b2 | 24 | dac2_1ch_addrsel = 0; // De-assert A0 |
kramnik | 0:21fa2141c5b2 | 25 | } |