reg-cast

jaga-jaga/calibrato-16-24bit-adc-dds/reg-cast

No description
reg-cast
@/reg-cast
UPDpulse
Triggers new read
DATAport
data input(SER, DS)
LATCHport
latch input(RCLK, ST_CP)
CLOCKport
clock input(SRCLK, SH_CP)
CHOICEnumber
select the shift register you want to control
TOTALnumber
the number of shift registers you are using.
H2byte
H1byte
reg-cast
UPD
DATA
LATCH
CLOCK
CHOICE
TOTAL
H2
H1
DONE
DONEpulse
Fires on a successful write
To use the node in your project you should have the jaga-jaga/calibrato-16-24bit-adc-dds library installed. Use the “File → Add Library” menu item in XOD IDE if you don’t have it yet. See Using libraries for more info.

C++ implementation

#pragma XOD evaluate_on_pin enable input_UPD
#pragma XOD error_raise enable
struct State {
    
};

{{ GENERATED_CODE }}

void evaluate(Context ctx) {
    if (!isInputDirty<input_UPD>(ctx))
        return;

    const uint8_t lch = getValue<input_LATCH>(ctx);
    const uint8_t cl = getValue<input_CLOCK>(ctx);
    const uint8_t dt = getValue<input_DATA>(ctx);
    const uint8_t myConst = getValue<input_H1>(ctx);
    const uint8_t myConst2 = getValue<input_H2>(ctx);
  
    int cho = getValue<input_CHOICE>(ctx);
    ::pinMode(lch, OUTPUT);
    ::pinMode(cl, OUTPUT);
    ::pinMode(dt, OUTPUT);
   
    int allnumb = getValue<input_TOTAL>(ctx);
  
     //Входные байты
     //формируем ноль на latchPin и удерживаем его до конца передачи
    digitalWrite(lch, 0);
    //Отправляем первый байт
    shiftOut(dt, cl, LSBFIRST, myConst);
    //Отправляем второй байт
    shiftOut(dt, cl, LSBFIRST, myConst2);
     //возвращаем высокий уровень на latchin, тем самым сообщая микросхеме о том, что
     //больше не требуется воспринимать информацию
     ::digitalWrite(lch, 1);
    emitValue<output_DONE>(ctx, 1);
}