12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /***************************************************************
- *
- * External DAC for Alligator Board
- *
- ****************************************************************/
-
- #include "../../inc/MarlinConfig.h"
-
- #if MB(ALLIGATOR)
-
- #include "dac_dac084s085.h"
-
- #include "../../MarlinCore.h"
- #include "../../HAL/shared/Delay.h"
-
- dac084s085::dac084s085() { }
-
- void dac084s085::begin() {
- uint8_t externalDac_buf[] = { 0x20, 0x00 }; // all off
-
- // All SPI chip-select HIGH
- SET_OUTPUT(DAC0_SYNC_PIN);
- #if HAS_MULTI_EXTRUDER
- SET_OUTPUT(DAC1_SYNC_PIN);
- #endif
- cshigh();
- spiBegin();
-
- //init onboard DAC
- DELAY_US(2);
- WRITE(DAC0_SYNC_PIN, LOW);
- DELAY_US(2);
- WRITE(DAC0_SYNC_PIN, HIGH);
- DELAY_US(2);
- WRITE(DAC0_SYNC_PIN, LOW);
-
- spiSend(SPI_CHAN_DAC, externalDac_buf, COUNT(externalDac_buf));
- WRITE(DAC0_SYNC_PIN, HIGH);
-
- #if HAS_MULTI_EXTRUDER
- //init Piggy DAC
- DELAY_US(2);
- WRITE(DAC1_SYNC_PIN, LOW);
- DELAY_US(2);
- WRITE(DAC1_SYNC_PIN, HIGH);
- DELAY_US(2);
- WRITE(DAC1_SYNC_PIN, LOW);
-
- spiSend(SPI_CHAN_DAC, externalDac_buf, COUNT(externalDac_buf));
- WRITE(DAC1_SYNC_PIN, HIGH);
- #endif
-
- return;
- }
-
- void dac084s085::setValue(const uint8_t channel, const uint8_t value) {
- if (channel >= 7) return; // max channel (X,Y,Z,E0,E1,E2,E3)
-
- const uint8_t externalDac_buf[] = {
- 0x10 | ((channel > 3 ? 7 : 3) - channel << 6) | (value >> 4),
- 0x00 | (value << 4)
- };
-
- // All SPI chip-select HIGH
- cshigh();
-
- if (channel > 3) { // DAC Piggy E1,E2,E3
- WRITE(DAC1_SYNC_PIN, LOW);
- DELAY_US(2);
- WRITE(DAC1_SYNC_PIN, HIGH);
- DELAY_US(2);
- WRITE(DAC1_SYNC_PIN, LOW);
- }
- else { // DAC onboard X,Y,Z,E0
- WRITE(DAC0_SYNC_PIN, LOW);
- DELAY_US(2);
- WRITE(DAC0_SYNC_PIN, HIGH);
- DELAY_US(2);
- WRITE(DAC0_SYNC_PIN, LOW);
- }
-
- DELAY_US(2);
- spiSend(SPI_CHAN_DAC, externalDac_buf, COUNT(externalDac_buf));
- }
-
- void dac084s085::cshigh() {
- WRITE(DAC0_SYNC_PIN, HIGH);
- #if HAS_MULTI_EXTRUDER
- WRITE(DAC1_SYNC_PIN, HIGH);
- #endif
- WRITE(SPI_EEPROM1_CS_PIN, HIGH);
- WRITE(SPI_EEPROM2_CS_PIN, HIGH);
- WRITE(SPI_FLASH_CS_PIN, HIGH);
- WRITE(SD_SS_PIN, HIGH);
- }
-
- #endif // MB(ALLIGATOR)
|