a99491f9b8
- проект переведён на VectorIDE v1.3 В целях экономии памяти удалены: - модуль управления светодиодами - модуль ШИМ для двигателей SRD - модуль часов реального времени - режим привода для измерения задержки меджу сигналами ШИМ и измерениями токов Добавлены следующие модули: - проект переведён на VectorIDE v1.3 - модуль SPI для абсолютного ДПР - модуль управление реле для заряда ЗПТ - модуль дискретных вводов-выводов - модуль управления вентилятором Одноплатного Инвертора - модуль тормозного резистора Одноплатного Инвертора Прочие изменения: - оптимизирована инициализация регистров периферии - удалено множество неиспользуемых переменных - разрешение работы всех GPIO перенесено в функцию "PeripheralClockEnable" - добавлен счётчик индексной метки энкодера - исправлен сброс прерываний модуля захвата CAP - переработан режим задания постоянного тока статора - исправлены прочие мелкие ошибки в разных модулях
104 lines
3.3 KiB
C
104 lines
3.3 KiB
C
/*!
|
|
Copyright 2017 ÀÎ "ÍÈÈÝÒ" è ÎÎÎ "ÍÏÔ ÂÅÊÒÎÐ"
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
|
|
\file v_CANtoRS.h
|
|
\brief Ïðåîáðàçîâàòåëü ïîñûëîê CAN â RS/USB è îáðàòíî. Ðàáîòàåò
|
|
ñîâìåñòíî ñ äðàéâåðîì CANOpen
|
|
|
|
\author ÎÎÎ "ÍÏÔ Âåêòîð". http://motorcontrol.ru
|
|
\version v 3.0 08/08/2017
|
|
|
|
*/
|
|
|
|
#ifndef V_CAN_TO_RS_H
|
|
#define V_CAN_TO_RS_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define CANTORS_BUFSIZE 20
|
|
#define CANTORS_TRANSM_TIME_OUT 10
|
|
#define CANTORS_READ_DATA_MAX_LEN 10
|
|
#define CANTORS_HEART_COUNTER_MAX 1000
|
|
|
|
|
|
#define CANTORS_ACTIVE 0x1
|
|
#define CANTOUSB_ACTIVE 0x2
|
|
|
|
#include "DSP.h"
|
|
#include "CANOpen_drv.h"
|
|
|
|
struct SCANtoRS {
|
|
Uint16 APIpacketMode;
|
|
int16 HeartBeatGo;//ïðîïóñòèòå ñåðäöåáèåíèå!
|
|
Uint16 callback_go; //ôëàã äëÿ âûçîâà callback
|
|
Uint16 PacketInWait; //ôëàã åñëè åñòü ÷òî-òî â áóôåðå îòïðàâêè
|
|
Uint16 HeartCounter; //ñ÷åò÷èê äëÿ îòïðàâêè HeartBeat
|
|
Uint16 ReadPackDataCounter; //ñ÷åò÷èê äàííûõ â ïàêåòå
|
|
Uint16 ReadCRCCounter; //ñ÷åò÷èê äàííûõ â ïàêåòå
|
|
Uint16 all_len; //transmit buf len
|
|
Uint16 tr_counter; //transmit counter
|
|
Uint16 MessDrop1;
|
|
Uint16 MessDrop2;
|
|
Uint16 MessDrop3;
|
|
Uint16 CounterWrongCRC;
|
|
Uint16 CounterRes;
|
|
Uint16 CounterSended;
|
|
void (*init)(volatile struct SCANtoRS *); /* Pointer to the init function */
|
|
void (*calc)(volatile struct SCANtoRS *); /* Pointer to the calc function */
|
|
void (*receive)(volatile struct SCANtoRS *);
|
|
Uint16 (*write)(TZCanMsg* MSG,volatile struct SCANtoRS *);
|
|
void (*callback)(TCo_OdVars* ppc, TZCanMsg* p);
|
|
unsigned char buf_out[CANTORS_BUFSIZE];
|
|
TZCanMsg MSG;
|
|
TZCanMsg bufMSG;
|
|
Uint16 ReadPackData[CANTORS_BUFSIZE]; //áóôåð äëÿ API ïîñûëêè
|
|
Uint16 ReadCRC[2]; //áóôåð äëÿ ÑRC
|
|
Uint16 TempData[10];
|
|
Uint16* nodeID;
|
|
UART_TypeDef *UART;//!Óêàçàòåëü íà èñïîëüçóåìûé ìîäóëü UART
|
|
};
|
|
|
|
typedef volatile struct SCANtoRS TCANtoRS;
|
|
|
|
|
|
void CANtoRS_init(TCANtoRS*);
|
|
void CANtoRS_calc(TCANtoRS*);
|
|
void CANtoRS_Receive(TCANtoRS*);
|
|
Uint16 CANtoRS_SendP(Uint16* Data, int16 len,TCANtoRS *p);
|
|
Uint16 CANtoRS_Write(TZCanMsg* MSG,TCANtoRS *p);
|
|
Uint16 CANtoRS_WriteHelper(TZCanMsg* MSG,TCANtoRS *p);
|
|
void CANtoRS_HeartBeat(TCANtoRS *p);
|
|
Uint16 CANtoRS_C_CRC(TCANtoRS *p,Uint16 *Data,Uint16 len);
|
|
void CANtoRS_Analysis(TCANtoRS*);
|
|
|
|
|
|
//åñëè äîáàâëÿåì â ñòðóêóðó ïåðåìåííûå òî äîáàâëÿåì çíà÷åíèÿ ïî óìîë÷àíèþ
|
|
#define CAN_TO_RS_DEFAULTS { .init = CANtoRS_init,\
|
|
.calc = CANtoRS_calc,\
|
|
.receive = CANtoRS_Receive,\
|
|
.write = CANtoRS_WriteHelper}
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|