##// END OF EJS Templates
3.1.0.2...
3.1.0.2 PAS filtering updated (default parameters were used instead of TC parameters) After the reboot, LFR internal parameters are set to the default values

File last commit:

r199:6628458d4fb0 R3
r293:e6dce572ae0e R3_plus
Show More
main.c
72 lines | 1.6 KiB | text/x-c | CLexer
paul
fifo occupation reported in the HK packet
r197 #include <stdio.h>
#include "grspw.h"
#include "fsw_params.h"
#define DSU_TIME_TAG_COUNTER 0x90000008
//**********
// IRQ LINES
#define IRQ_GRSPW 11
#define IRQ_SPARC_GRSPW 0x1b // see sparcv8.pdf p.76 for interrupt levels
extern void *catch_interrupt(void func(), int irq);
int *lreg = (int *) 0x80000000;
#define ICLEAR 0x20c
#define IMASK 0x240
#define IFORCE 0x208
void enable_irq (int irq)
{
lreg[ICLEAR/4] = (1 << irq); // clear any pending irq
lreg[IMASK/4] |= (1 << irq); // unmaks irq
}
void disable_irq (int irq) { lreg[IMASK/4] &= ~(1 << irq); } // mask irq
void force_irq (int irq) { lreg[IFORCE/4] = (1 << irq); } // force irq
/* NOTE: NEVER put printf() or other stdio routines in interrupt handlers,
they are not re-entrant. This (bad) example is just a demo */
paul
rev 3.0.0.0
r198 volatile unsigned char processTimecode = 0;
unsigned int counter = 0;
paul
fifo occupation reported in the HK packet
r197
void irqhandler(int irq)
{
processTimecode = 1;
paul
rev 3.0.0.0
r198 counter ++;
paul
fifo occupation reported in the HK packet
r197 }
int main( void )
{
unsigned int *grspwCtrlReg;
unsigned int k;
volatile unsigned int *reg;
float aux;
printf("hello world!\n");
grspwCtrlReg = (unsigned int*) REGS_ADDR_GRSPW;
grspw_set_ie( 1, grspwCtrlReg );
grspw_set_tq( 1, grspwCtrlReg );
grspw_set_tr( 1, grspwCtrlReg );
catch_interrupt(irqhandler, IRQ_GRSPW);
enable_irq( IRQ_GRSPW );
force_irq( IRQ_GRSPW );
reg = (volatile unsigned int *) DSU_TIME_TAG_COUNTER;
while(1)
{
paul
Major bug corrected on the handling of TC_LFR_LOAD_COMMON_PAR
r199 if (processTimecode == 1)
{
printf("timecode counter = %d\n", counter);
processTimecode = 0;
}
paul
fifo occupation reported in the HK packet
r197 }
return 0;
}