HITDAQ/FPGA_nios/hit_pat/src/sensor.c
2024-10-16 10:07:43 +02:00

63 lines
2.5 KiB
C

/******************************************************************************
* Copyright *
* Scintillating Fibre Beam Profile Monitor Software by Michal Dziewiecki, *
* Blake Leverington and Liqing Qin is licensed under CC BY 4.0 *
* https://creativecommons.org/licenses/by/4.0/ *
* funded by the Deutsche Forschungsgemeinschaft *
* (DFG, German Research Foundation) Projektnummer 419255448 *
* Project Leader: B.Leverington *
*******************************************************************************
* Create Date - Aug 19, 2019 *
* Author: M.Dziewiecki *
* Module - sensor.c *
* Edited by L.Qin on Oct 15. 2024 *
******************************************************************************/
#include <stdio.h>
#include "includes.h"
#include <system.h>
#include <io.h>
#include <altera_msgdma.h>
/* Nichestack definitions */
#include "ipport.h"
#include "libport.h"
#include "osport.h"
#include "utils.h"
#include "dev_commands.h"
#include "sensor.h"
void sensor_command_bit(alt_u32 base, alt_u8 bitmask, alt_u8 state)
{
alt_u8 tmp = IORD_8DIRECT(base, SENSOR_REG_COMMAND);
if (state)
tmp |= bitmask;
else
tmp &= ~bitmask;
IOWR_8DIRECT(base, SENSOR_REG_COMMAND, tmp);
}
void sensor_preconfigure(alt_u32 base)
{
printf(" *** Preconfiguring sensor module... \n");
sensor_command(base, 0); //disable
sensor_set_sensorclk(base, 6); //sensor clock - 3.57 MHz
sensor_set_adccnv(base, 31); //conversion delay - default
sensor_set_delay(base, 1); //trigger delay - default
sensor_set_shutter(base, 100); //integration time - dummy default
sensor_set_serspeed(base, 50); //synchro serial port - 1 Mbps
sensor_set_header_anydata(base, 0x00); //should be 0
sensor_set_header_cmd(base, COMMAND_DATA_TRANSFER); //command header, must be this one
sensor_command(base, 1); //enable, gain low, SCLK full
sensor_set_cluster_threshold(base, 10); //default cluster threshold 10
sensor_set_cluster_size(base, 4); //default cluster size 4
sensor_set_in_algo_threshold(base, 4); //default algo threshold 4
}