Код
CFGCONbits.JTAGEN=0;//1 = JTAG is enabled //0 = JTAG is disabled
PRECONbits.PREFEN=3;
//11 = Enable predictive prefetch for any address
//10 = Enable predictive prefetch for CPU instructions and CPU data
//01 = Enable predictive prefetch for CPU instructions only
//00 = Disable predictive prefetch
//---------------- НАСТРОЙКА ЛИНИЙ ПОРТОВ --------------------------------------
ANSELBCLR = 0b1111111111111111;// НЕ УДАЛЯТЬ !!! цифровой ПОРТ B(MZ)
TRISB = 0b1111111111111111;// читаем данные с SPARTAN6 A,B на PORTB
LATB = 0b1111111111111111;// защёлка чтоб не прощёлкать
ANSELCCLR = 0b1111111111111111;//
TRISC = 0b1111111111111101;// RC14-частотомер вход , доп. RC1 выход
PORTC = 0b1111111111111101;//
LATC = 0b1111111111111101;// защёлка чтоб не прощёлкать
ANSELDCLR = 0b1111111111111111;//
TRISD = 0b0110011111011011;// RD9-частотомер вход, RD14 CMDASK вход, выходы 2 , 5, 11, 12, доп.15вых.
PORTD = 0b0110011111011011;//
LATD = 0b0110011111011011;// защёлка чтоб не прощёлкать
ANSELECLR = 0b1111111111;
TRISE = 0b0000000000; // порт RE на выход, данные на ТФТ-ПРОВОДНИК 8 bit. RE8,9доп вых.
PORTE = 0b0000000000; //
LATE = 0b0000000000; // защёлка чтоб не прощёлкать
ANSELFCLR = 0b1111111111111111;//
TRISF = 0b1111111111001111;// вход автосинхронизации RF0 A и RF2 B, выходы RF4 и RF5 read FIFO
PORTF = 0b1111111111001111;//
LATF = 0b1111111111001111;// защёлка чтоб не прощёлкать
ANSELGCLR = 0b1111111111111111;//
TRISG = 0b1010111001111111;// порт RG 7,8 на вых. RG 12,14 LEDs
PORTG = 0b1010111001111111;//
LATG = 0b1010111001111111;// защёлка чтоб не прощёлкать
//--------------- ПЕРЕНАПРАВЛЕНИЕ ЛИНИЙ ПОРТОВ ---------------------------------
CFGCONbits.IOLOCK = 0;//Unlock Sequence
CFGCONbits.PMDLOCK = 0;
INT2R = 0; //to RPD9
U1RXR = 3; //to RPD10
CFGCONbits.IOLOCK = 1;//Lock Sequence
CFGCONbits.PMDLOCK = 1;
//CFGCON = 0b0010000000000000;//Lock Sequence
//OSCCON = 0b0010000000000000;
//------------------ НАСТРОЙКА ЧАСТОТЫ ПЕРИФЕРИИ -----------------------------
PB5DIVbits.ON = 1;//FLASH
PB5DIVbits.PBDIV = 4;//40 MHz
PB4DIVbits.ON = 1;//порты
PB4DIVbits.PBDIV = 2;//50 MHz
PB3DIVbits.ON = 1;//таймеры
PB3DIVbits.PBDIV = 2;//50 MHz
PB2DIVbits.ON = 1;//UART1
PB2DIVbits.PBDIV = 11;//Peripheral Bus Clock: 18.432 MHz
//---------------------- НАСТРОЙКА UART1 ---------------------------------------
uchar BaudRate = ((FPB/115200)/16) - 1;//=9
U1BRG = BaudRate; //Set Baud rate
U1STA = 0;
U1MODE = 0b1000000000000110;// 0x8006; //Enable UART for 9-bit data
U1MODEbits.ON = 1; //UARTx is enabled
U1MODEbits.PDSEL = 3; //9-bit data, no parity
U1MODEbits.BRGH = 0; //BRGH: High Baud Rate Enable bit
//1 = High-Speed mode – 4x baud clock enabled
//0 = Standard Speed mode – 16x baud clock enabled
U1STASET = 0b1010000000000;//0x1400; //Enable Transmit and Receive
//настройка модуля UART и его прерываний
//вкл. прерывание по приему, приоритет 1, подприоритет 3
U1MODE = 0b0001000000000110;
IPC28bits.U1RXIS = 3;//подприоритет 3
IPC28bits.U1RXIP = 1;//приоритет 1,
//================================================================================
==========================
//--------------------------- НАСТРОЙКА ТАЙМЕРОВ -------------------------------
//таймер считает кол-во пришедших на измерительный вход импульсов. T1CK pin74
T1CON = 0b1000000000000010;//T1_ON | T1_SOURCE_EXT | T1_PS_1_1
PR1 = 0xFFFF;//0xFFFF
IPC1bits.T1IS = 0;//T1_INT_SUB_PRIOR_0
IPC1bits.T1IP = 1;//T1_INT_PRIOR_1
IEC0bits.T1IE = 1;//T1_INT_ON
//время 100 мсек будет отсчитываться отдельным 32-х битным таймером
T2CON = 0b1000000000001000; //T23_ON | T23_SOURCE_INT | T23_PS_1_1 | T23_32BIT_MODE_ON,
PR3 = 0x007A; PR2 = 0x1200;//0x7A1200
IPC2bits.T2IS = 1;//T23_INT_SUB_PRIOR_1
IPC2bits.T2IP = 1;//T23_INT_PRIOR_1
IEC0bits.T2IE = 1;//T23_INT_ON
//------------------ ИНИЦИАЛИЗАЦИЯ INPUT CAPTURE ------------------------------
//Enable the IC2 module in 32-bit mode, capturing every rise edge. //EnableIntIC2;
IC2CON = 0b0000001110000000;//IC_OFF | IC_CAP_32BIT | IC_TIMER2_SRC | IC_INT_1CAPTURE | IC_EVERY_RISE_EDGE
IPC2bits.IC2IS = 2;//IC_INT_SUB_PRIOR_2
IPC2bits.IC2IP = 1;//IC_INT_PRIOR_1
IEC0bits.IC2IE = 1;//IC_INT_ON
//----------------------------------------------------------------------------OK
INTCONbits.MVEC = 1; // включить мультивекторный режим
PRECONbits.PREFEN=3;
//11 = Enable predictive prefetch for any address
//10 = Enable predictive prefetch for CPU instructions and CPU data
//01 = Enable predictive prefetch for CPU instructions only
//00 = Disable predictive prefetch
//---------------- НАСТРОЙКА ЛИНИЙ ПОРТОВ --------------------------------------
ANSELBCLR = 0b1111111111111111;// НЕ УДАЛЯТЬ !!! цифровой ПОРТ B(MZ)
TRISB = 0b1111111111111111;// читаем данные с SPARTAN6 A,B на PORTB
LATB = 0b1111111111111111;// защёлка чтоб не прощёлкать
ANSELCCLR = 0b1111111111111111;//
TRISC = 0b1111111111111101;// RC14-частотомер вход , доп. RC1 выход
PORTC = 0b1111111111111101;//
LATC = 0b1111111111111101;// защёлка чтоб не прощёлкать
ANSELDCLR = 0b1111111111111111;//
TRISD = 0b0110011111011011;// RD9-частотомер вход, RD14 CMDASK вход, выходы 2 , 5, 11, 12, доп.15вых.
PORTD = 0b0110011111011011;//
LATD = 0b0110011111011011;// защёлка чтоб не прощёлкать
ANSELECLR = 0b1111111111;
TRISE = 0b0000000000; // порт RE на выход, данные на ТФТ-ПРОВОДНИК 8 bit. RE8,9доп вых.
PORTE = 0b0000000000; //
LATE = 0b0000000000; // защёлка чтоб не прощёлкать
ANSELFCLR = 0b1111111111111111;//
TRISF = 0b1111111111001111;// вход автосинхронизации RF0 A и RF2 B, выходы RF4 и RF5 read FIFO
PORTF = 0b1111111111001111;//
LATF = 0b1111111111001111;// защёлка чтоб не прощёлкать
ANSELGCLR = 0b1111111111111111;//
TRISG = 0b1010111001111111;// порт RG 7,8 на вых. RG 12,14 LEDs
PORTG = 0b1010111001111111;//
LATG = 0b1010111001111111;// защёлка чтоб не прощёлкать
//--------------- ПЕРЕНАПРАВЛЕНИЕ ЛИНИЙ ПОРТОВ ---------------------------------
CFGCONbits.IOLOCK = 0;//Unlock Sequence
CFGCONbits.PMDLOCK = 0;
INT2R = 0; //to RPD9
U1RXR = 3; //to RPD10
CFGCONbits.IOLOCK = 1;//Lock Sequence
CFGCONbits.PMDLOCK = 1;
//CFGCON = 0b0010000000000000;//Lock Sequence
//OSCCON = 0b0010000000000000;
//------------------ НАСТРОЙКА ЧАСТОТЫ ПЕРИФЕРИИ -----------------------------
PB5DIVbits.ON = 1;//FLASH
PB5DIVbits.PBDIV = 4;//40 MHz
PB4DIVbits.ON = 1;//порты
PB4DIVbits.PBDIV = 2;//50 MHz
PB3DIVbits.ON = 1;//таймеры
PB3DIVbits.PBDIV = 2;//50 MHz
PB2DIVbits.ON = 1;//UART1
PB2DIVbits.PBDIV = 11;//Peripheral Bus Clock: 18.432 MHz
//---------------------- НАСТРОЙКА UART1 ---------------------------------------
uchar BaudRate = ((FPB/115200)/16) - 1;//=9
U1BRG = BaudRate; //Set Baud rate
U1STA = 0;
U1MODE = 0b1000000000000110;// 0x8006; //Enable UART for 9-bit data
U1MODEbits.ON = 1; //UARTx is enabled
U1MODEbits.PDSEL = 3; //9-bit data, no parity
U1MODEbits.BRGH = 0; //BRGH: High Baud Rate Enable bit
//1 = High-Speed mode – 4x baud clock enabled
//0 = Standard Speed mode – 16x baud clock enabled
U1STASET = 0b1010000000000;//0x1400; //Enable Transmit and Receive
//настройка модуля UART и его прерываний
//вкл. прерывание по приему, приоритет 1, подприоритет 3
U1MODE = 0b0001000000000110;
IPC28bits.U1RXIS = 3;//подприоритет 3
IPC28bits.U1RXIP = 1;//приоритет 1,
//================================================================================
==========================
//--------------------------- НАСТРОЙКА ТАЙМЕРОВ -------------------------------
//таймер считает кол-во пришедших на измерительный вход импульсов. T1CK pin74
T1CON = 0b1000000000000010;//T1_ON | T1_SOURCE_EXT | T1_PS_1_1
PR1 = 0xFFFF;//0xFFFF
IPC1bits.T1IS = 0;//T1_INT_SUB_PRIOR_0
IPC1bits.T1IP = 1;//T1_INT_PRIOR_1
IEC0bits.T1IE = 1;//T1_INT_ON
//время 100 мсек будет отсчитываться отдельным 32-х битным таймером
T2CON = 0b1000000000001000; //T23_ON | T23_SOURCE_INT | T23_PS_1_1 | T23_32BIT_MODE_ON,
PR3 = 0x007A; PR2 = 0x1200;//0x7A1200
IPC2bits.T2IS = 1;//T23_INT_SUB_PRIOR_1
IPC2bits.T2IP = 1;//T23_INT_PRIOR_1
IEC0bits.T2IE = 1;//T23_INT_ON
//------------------ ИНИЦИАЛИЗАЦИЯ INPUT CAPTURE ------------------------------
//Enable the IC2 module in 32-bit mode, capturing every rise edge. //EnableIntIC2;
IC2CON = 0b0000001110000000;//IC_OFF | IC_CAP_32BIT | IC_TIMER2_SRC | IC_INT_1CAPTURE | IC_EVERY_RISE_EDGE
IPC2bits.IC2IS = 2;//IC_INT_SUB_PRIOR_2
IPC2bits.IC2IP = 1;//IC_INT_PRIOR_1
IEC0bits.IC2IE = 1;//IC_INT_ON
//----------------------------------------------------------------------------OK
INTCONbits.MVEC = 1; // включить мультивекторный режим