Compare commits

..

No commits in common. "dfe1de471146e5a8454a86f140e4bfc8b1bf0c0f" and "5e9c8a00c2703dfc000718f0f2f8cdcb40cf1a4f" have entirely different histories.

9 changed files with 33 additions and 62 deletions

1
.gitignore vendored
View file

@ -17,4 +17,3 @@ ahepamfile
*.log
nm64file
mustang_scripts
nm64/nm64

View file

@ -125,7 +125,6 @@ int main(int argc, const char * const * argv)
case 0xc364: x = nm_counters(h1); break;
default:
if ((h1 & 0xfff0)==0x12c0) { x = i2c(h1); break; }
if ((h1 & 0xff00)==0xba00) { x = pressure(h1); break; }
switch (h1 & 0xfffc) {
case 0x5710: x = dorn_hk(h1, n_adcs, 1); break;
case 0x5714: x = dorn_samples(h1, n_adcs, 1); break;

View file

@ -364,25 +364,15 @@ static inline error_msg_t parse_alt_cmd_flags(struct command *cmd, const struct
const struct keywords *k = 0;
error_msg_t e = parse_flag(cmd, regs, &k, optional);
while (!e && k) {
if ((k->val & alt_cmd_dflag)) {
unsigned int a = (k->val & alt_cmd_daddr) >> 16;
if (a && a != *cc & (alt_cmd_daddr>>16)) {
e = &parser_keyword_error;
break;
}
*cc |= 0x4000 | (k->val << 16);
}
else {
if (k->val & alt_cmd_trans)
*how &=~ alt_cmd_trans;
*how |= k->val;
if (k->val & alt_cmd_aflag)
*cc |= k->val & 0xffff;
else if (k->val & alt_cmd_addr) {
*cc = *cc & 0xffffc000 | k->val & 0xffff;
if (k->val & alt_cmd_addr) {
*cc = *cc & alt_cmd_write | k->val & 0xffff;
*name = k->name;
}
}
if (k->val & alt_cmd_aflag)
*cc |= k->val & 0xffff;
if (!optional)
optional = 1;
e = parse_flag(cmd, regs, &k, optional);

View file

@ -50,8 +50,6 @@ enum {
alt_cmd_save = 0x8000000,
alt_cmd_force = 0x10000000,
alt_cmd_aflag = 0x20000000,
alt_cmd_dflag = 0x40000000,
alt_cmd_daddr = 0x3fff0000,
alt_cmd_nkeyw = 0x80000000,
alt_cmd_write = 0x4000,
alt_cmd_addr = 0x8000,
@ -60,7 +58,6 @@ enum {
#define ALT_CMD_KW(p) (&(p)->name)
#define ALT_CMD_AD(a) ((const void*)((a)|alt_cmd_nkeyw|alt_cmd_addr))
#define ALT_CMD_AF(a) ((const void*)((a)|alt_cmd_nkeyw|alt_cmd_aflag))
#define ALT_CMD_DF(a, d) ((const void*)((d)|((a)<<16)&alt_cmd_daddr|alt_cmd_nkeyw|alt_cmd_dflag))
#define ALT_CMD_FG(f) ((const void*)((f)|alt_cmd_nkeyw))
enum {

49
dorn.c
View file

@ -3,39 +3,26 @@
#include "altera.h"
static const struct keywords dorn_fifo_kw[] = {
{"read", {.par= ALT_CMD_AD(0x2080 | alt_cmd_read | alt_cmd_inj) }},
{"empty", {.par= ALT_CMD_AD(0x2084 | alt_cmd_read) }},
{"clear", {.par= ALT_CMD_AD(0x2084) }},
{"packet", {.par= ALT_CMD_AD(0x2085 | alt_cmd_read) }},
{"readfifo", {.par= ALT_CMD_AD(0x2085) }},
{"full", {.par= ALT_CMD_AD(0x2086 | alt_cmd_read) }},
{"enable", {.par= ALT_CMD_AD(0x2087) }},
{"hbase", {.par= ALT_CMD_AD(0x2088) }},
{"strobe", {.par= ALT_CMD_AD(0x208b | alt_cmd_inj) }},
{"mwrite", {.par= ALT_CMD_AD(0x208c) }},
{"mdata", {.par= ALT_CMD_AD(0x208d) }},
{"maddr", {.par= ALT_CMD_AD(0x208e) }},
{"mnext", {.par= ALT_CMD_AD(0x208f) }},
{"s_hk", {.par= ALT_CMD_DF(0x208b, 0x00f0) }},
{"s_reset", {.par= ALT_CMD_DF(0x208b, 0x710e) }},
{"s_read", {.par= ALT_CMD_DF(0x208b, 0x0001) }},
{"s_resync", {.par= ALT_CMD_DF(0x208b, 0x0004) }},
{"s_clock", {.par= ALT_CMD_DF(0x208b, 0x0008) }},
{"s_dorn", {.par= ALT_CMD_DF(0x208b, 0x0100) }},
{"e_enable", {.par= ALT_CMD_DF(0x2087, 0x0fff) }},
{"e_disable",{.par= ALT_CMD_DF(0x2087, 0x0000) }},
{"e_men", {.par= ALT_CMD_DF(0x2087, 0x001f) }},
{"e_s1", {.par= ALT_CMD_DF(0x2087, 0x0001) }},
{"e_s2", {.par= ALT_CMD_DF(0x2087, 0x0002) }},
{"e_s3", {.par= ALT_CMD_DF(0x2087, 0x0004) }},
{"e_s4", {.par= ALT_CMD_DF(0x2087, 0x0008) }},
{"e_rfifo", {.par= ALT_CMD_DF(0x2087, 0x0020) }},
{"e_hk", {.par= ALT_CMD_DF(0x2087, 0x0240) }},
{"e_ev", {.par= ALT_CMD_DF(0x2087, 0x0480) }},
{"e_sa", {.par= ALT_CMD_DF(0x2087, 0x0900) }},
{"read", {.par= ALT_CMD_AF( 0) }},
{"empty", {.par= ALT_CMD_AF( 4) }},
{"packet", {.par= ALT_CMD_AF( 5) }},
{"full", {.par= ALT_CMD_AF( 6) }},
{"enable", {.par= ALT_CMD_AF( 7) }},
{"hbase", {.par= ALT_CMD_AF( 8) }},
{"strobe", {.par= ALT_CMD_AF(11) }},
{"mwrite", {.par= ALT_CMD_AF(12) }},
{"mdata", {.par= ALT_CMD_AF(13) }},
{"maddr", {.par= ALT_CMD_AF(14) }},
{"mnext", {.par= ALT_CMD_AF(15) }},
KW_END
};
int dorn_fifo(struct command *cmd, const struct command_par *par)
{
return altera_set_register(cmd, par, dorn_fifo_kw, 0,
(unsigned int)par->par, "fifo");
}
static const struct keywords dorn_trigger_kw[] = {
{"t1", {.par= ALT_CMD_AF( 8) }},
{"t2", {.par= ALT_CMD_AF( 9) }},
@ -108,7 +95,7 @@ int dorn_l3(struct command *cmd, const struct command_par *par)
}
static const struct keywords dorn_commands[] = {
CMD_KW("fifo", altera_cmd, 255, &dorn_fifo_kw),
CMD_KW("fifo", dorn_fifo, 255, (void*)(0xa080)),
CMD_KW("enable", dorn_trigger, 255, (void*)(0xa008)),
CMD_KW("thres", dorn_l1, 255, (void*)(0xe040|alt_cmd_inj)),
CMD_KW("l1", dorn_l1, 255, (void*)(0xe040|alt_cmd_inj)),

View file

@ -1,8 +1,8 @@
@clock/short
@v S=sec%12
@s/if hk_mes>1: v hk_count=1
@s/if hk_mes>1: v hk_c=1
@s/if !S: nm/cou/re/cl/fl; s/exit
@s/if S&1: i2c/run; s/exit
@s/if S&1 and I: al/cmd/inj I; s/exit
@s/if S&2: pres/inj; s/exit
@s/if S&4: v hk_count=1; s/exit
@s/if S&8: dorn/fifo/strobe/inj 0x30; s/exit
@s/if S&4: v hk_c=1; s/exit
@s/if S&8 and H: al/cmd/inj H; s/exit

View file

@ -141,4 +141,4 @@
@i2c/read[0x05]
@i2c/stop
@i2c/wait/loop[97]
@v i2c_size = i2c_size-1
echo "i2c/run[0x00,142]"

View file

@ -4,4 +4,3 @@ INIT.RC script loaded at startup
NMAHEPAM.RBF Altera FPGA bitfile, Cyclone 10CL025
CRON.RC cron script, to to HK every Minute
SN14.RC unit config
I2C.RC SETH magnetometer and accelerometer config

4
i2c.c
View file

@ -128,7 +128,7 @@ int i2c_addr(struct command *cmd, const struct command_par *par)
case 0x4001:
i2c_size += 1;
}
return altera_set_register(cmd, par, 0, how, n, n&1 ? "i2c/data" : "i2c/addr");
return altera_set_register(cmd, par, 0, how, n, "i2c");
}
static const
@ -181,7 +181,7 @@ int i2c_header(struct command *cmd, const struct command_par *par)
if (e)
return parser_error_message(cmd, e);
i2c_size ++;
return altera_set_register(cmd, par, 0, alt_cmd_inj, cc, "i2c/head");
return altera_set_register(cmd, par, 0, alt_cmd_inj, cc, "i2c");
}
static const struct keywords i2c_commands[] = {