44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
/***************************************************************************//**
|
|
@addtogroup async_io
|
|
@{
|
|
@file l502_async.c
|
|
Файл содержит реализацию функций для асинхронного ввода/вывода
|
|
(пока только вывода)
|
|
******************************************************************************/
|
|
#include <stdlib.h>
|
|
|
|
#include "l502_cmd.h"
|
|
#include "l502_global.h"
|
|
#include "l502_fpga.h"
|
|
#include "l502_defs.h"
|
|
#include "l502_async.h"
|
|
#include "l502_fpga_regs.h"
|
|
|
|
|
|
|
|
|
|
void async_dac_out(uint8_t ch, int32_t val) {
|
|
val &= 0xFFFF;
|
|
if (ch==L502_DAC_CH1) {
|
|
val |= L502_STREAM_OUT_WORD_TYPE_DAC1;
|
|
} else {
|
|
val |= L502_STREAM_OUT_WORD_TYPE_DAC2;
|
|
}
|
|
fpga_reg_write(L502_REGS_IOHARD_ASYNC_OUT, val);
|
|
}
|
|
|
|
|
|
void async_dout(uint32_t val, uint32_t msk) {
|
|
static uint32_t last_out = L502_DIGOUT_WORD_DIS_H | L502_DIGOUT_WORD_DIS_L;
|
|
if (msk != 0) {
|
|
val &= ~msk;
|
|
val |= last_out & msk;
|
|
}
|
|
val &= 0xFFFF;
|
|
|
|
fpga_reg_write(L502_REGS_IOHARD_ASYNC_OUT, val);
|
|
last_out = val;
|
|
}
|
|
|
|
/** @} */
|