UKSS_23550_2/Source/Internal oldCAN/peripher.c
2025-06-11 16:37:14 +03:00

161 lines
3.9 KiB
C

#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
#include "filter_bat2.h"
#include "measure.h"
#include "RS485.h"
#include "message.h"
#include "package.h"
#include "peripher.h"
#include "GPIO_table.h"
int Mode,Desk,Addrr,TermoAD=0,TermoRS=0,TermoSW=0;
int ExtraCanal[24];
void setup_leds_line()
{
EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0;
GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1;
GpioCtrlRegs.GPBDIR.bit.GPIO48 = 1;
EDIS;
}
void get_Mode()
{
EALLOW;
GpioCtrlRegs.GPAMUX1.all &= 0xFF000000; // 00—11
GpioCtrlRegs.GPAMUX2.all &= 0xFF00003F; // 19—27
GpioCtrlRegs.GPBMUX1.all &= 0xFFFFFCC0; // 32—34
GpioCtrlRegs.GPBMUX2.all &= 0x000FF000; // 48—53, 58—63
GpioCtrlRegs.GPADIR.bit.GPIO20 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO21 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO22 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO51 = 0;
EDIS;
Addrr = 1 * !GpioDataRegs.GPBDAT.bit.GPIO51;
Addrr += 2 * !GpioDataRegs.GPADAT.bit.GPIO22;
Addrr += 4 * !GpioDataRegs.GPADAT.bit.GPIO20;
Addrr += 8 * !GpioDataRegs.GPADAT.bit.GPIO21;
Mode = Addrr + 1;
if( (Mode==adr_INV1)||(Mode==adr_INV2)||
(Mode==adr_FLT1)||(Mode==adr_FLT2)) Desk = dsk_COMM;
if( (Mode==adr_PLT1)||(Mode==adr_PLT2)) Desk = dsk_PULT;
if (Mode==adr_ENG1) Desk = dsk_BKSD;
if (Desk==dsk_COMM) { TermoSW = 2; TermoAD = 1;}
if (Desk==dsk_BKSD) { TermoSW = 1; TermoRS = 1;}
EALLOW;
switch(Desk)
{
case dsk_COMM: GpioCtrlRegs.GPADIR.all = COMM_GPADIR;
GpioCtrlRegs.GPBDIR.all = COMM_GPBDIR; break;
case dsk_PULT: GpioCtrlRegs.GPADIR.all = PULT_GPADIR;
GpioCtrlRegs.GPBDIR.all = PULT_GPBDIR; break;
case dsk_BKSD: GpioCtrlRegs.GPADIR.all = BKSD_GPADIR;
GpioCtrlRegs.GPBDIR.all = BKSD_GPBDIR; break;
}
EDIS;
buttons = inputs = 0;
}
void select_tpl_255(void)
{
if(Desk==dsk_BKSD)
{
#define BKSD_A_tpl_255 ((1L<<11) + (1L<<9) + (1L<<7) + (1L<<3))
GpioDataRegs.GPACLEAR.all = BKSD_A_tpl_255;
}
if(Desk==dsk_COMM)
{
#define COMM_A_tpl_255 ((1L<<27) + (1L<<24) + (1L<<25))
#define COMM_B_tpl_255 ((1L<<(49-32)) + (1L<<(52-32)))
GpioDataRegs.GPASET.all = COMM_A_tpl_255;
GpioDataRegs.GPBSET.all = COMM_B_tpl_255;
} }
void select_tpl_canal(int n_tpl)
{
unsigned long GPIO_A_tpl_set = 0;
unsigned long GPIO_B_tpl_set = 0;
if(Desk==dsk_BKSD)
{
if(!(n_tpl&0x01)) GPIO_A_tpl_set|=(1L<<11);
if(!(n_tpl&0x02)) GPIO_A_tpl_set|=(1L<<9);
if(!(n_tpl&0x04)) GPIO_A_tpl_set|=(1L<<7);
if(!(n_tpl&0x08)) GPIO_A_tpl_set|=(1L<<3);
GpioDataRegs.GPASET.all = GPIO_A_tpl_set;
}
if(Desk==dsk_COMM)
{
if(!(n_tpl&0x01)) GPIO_A_tpl_set|=(1L<<27);
if(!(n_tpl&0x02)) GPIO_A_tpl_set|=(1L<<24);
if(!(n_tpl&0x04)) GPIO_A_tpl_set|=(1L<<25);
if(!(n_tpl&0x08)) GPIO_B_tpl_set|=(1L<<(49-32));
if(!(n_tpl&0x10)) GPIO_B_tpl_set|=(1L<<(52-32));
GpioDataRegs.GPACLEAR.all = GPIO_A_tpl_set;
GpioDataRegs.GPBCLEAR.all = GPIO_B_tpl_set;
} }
void get_Buttons()
{
unsigned int butt = 0;
if(Desk==dsk_BKSD)
{
if(!GpioDataRegs.GPBDAT.bit.GPIO50) butt +=0x01;
if(!GpioDataRegs.GPBDAT.bit.GPIO49) butt +=0x02;
buttons = butt; // òåñò è ñåêðåò
}
if(Desk==dsk_COMM)
{
if(!GpioDataRegs.GPBDAT.bit.GPIO53) butt +=0x01;
if(!GpioDataRegs.GPBDAT.bit.GPIO50) butt +=0x02;
buttons = butt << 1; // ñåêðåò è êàëèáð
}
if(Desk==dsk_PULT)
{
if(!GpioDataRegs.GPADAT.bit.GPIO27) butt +=0x01;
if(!GpioDataRegs.GPADAT.bit.GPIO24) butt +=0x02;
if(!GpioDataRegs.GPBDAT.bit.GPIO53) butt +=0x04;
if(!GpioDataRegs.GPBDAT.bit.GPIO50) butt +=0x08;
if(!GpioDataRegs.GPADAT.bit.GPIO26) butt +=0x10;
if(!GpioDataRegs.GPADAT.bit.GPIO23) butt +=0x20;
if(!GpioDataRegs.GPBDAT.bit.GPIO52) butt +=0x40;
if(!GpioDataRegs.GPBDAT.bit.GPIO49) butt +=0x80;
buttons = butt & 1; // òîëüêî òåñò ëàìï
}
butt += 0x0100 * !GpioDataRegs.GPBDAT.bit.GPIO51;
butt += 0x0200 * !GpioDataRegs.GPADAT.bit.GPIO22;
butt += 0x0400 * !GpioDataRegs.GPADAT.bit.GPIO20;
butt += 0x0800 * !GpioDataRegs.GPADAT.bit.GPIO21;
inputs = butt;
}