Skip to content

Instantly share code, notes, and snippets.

@bodokaiser
Created June 17, 2024 12:19
Show Gist options
  • Save bodokaiser/c556b28e4d4e9489d6b8ff7966b8ba6d to your computer and use it in GitHub Desktop.
Save bodokaiser/c556b28e4d4e9489d6b8ff7966b8ba6d to your computer and use it in GitHub Desktop.

Revisions

  1. bodokaiser created this gist Jun 17, 2024.
    49 changes: 49 additions & 0 deletions main.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,49 @@
    import spcm
    from spcm import units
    import numpy as np

    config = {
    # 18925: {
    # "path": "/dev/spcm0",
    # "freq": np.linspace(84.5, 120.5, 3),
    # "freq": [(120.5+84.5)/2]
    # },
    18924: {
    "path": "/dev/spcm1",
    #"freq": np.linspace(85.0, 121.0, 3),
    "freq": [(121+85)/2]
    #"freq": [84.5]
    #"freq": [120.5]
    },
    }

    with spcm.CardStack(
    card_identifiers=[config["path"] for config in config.values()]
    ) as stack:
    channels = spcm.Channels(stack=stack, card_enable=spcm.CHANNEL0)
    channels.enable(True)
    channels.amp(2. * units.V)

    for card in stack.cards:
    card.card_mode(spcm.SPC_REP_STD_DDS)

    dds = spcm.DDS(card, channels=channels)
    dds.reset()

    conf = config[card.sn()]

    for i, freq in enumerate(conf["freq"]):
    frac = 40 / len(conf["freq"])

    dds[i].amp(frac * units.percent)
    #dds[i].amp(100 * units.percent)
    dds[i].freq(freq * units.MHz)

    print(f"set core {i} to {freq} MHz and {frac} % amplitude")

    dds.exec_at_trg()
    dds.write_to_card()

    stack.start(spcm.M2CMD_CARD_ENABLETRIGGER, spcm.M2CMD_CARD_FORCETRIGGER)

    input("press enter to exit")