Skip to content

Commit

Permalink
Мигающая индекация более не принадлежит только ZPZ
Browse files Browse the repository at this point in the history
Запускать мигающую индикация теперь можно не только в ZPZ;
Таймер 2 теперь отдан модулю discrete_io, через который запускать мигающую индикацию может любой модуль,
более того пин теперь можно выбирать, а не только "зеленый готов";

Благодаря этому теперь сделана мигающая индикация при инициализации, тестировании и ожидании запуска СНС (ему теперь даётся на 5 секунд на включение, как в документации)

1) discrete_io
* управление миганием теперь отдано этому модулю;
* добавлена реализация функций запуска, остановки мигающей индикации;
* имеется возможность гибко настраивать пин, которым решено "моргать";

2) irq
* функцию обработки прерывания теперь занимает discrete_io;
* исправлено описание в связи с изменениями;

3) bupboard
* TIMER 2 теперь отдан discrete_io под мигающую индикацию;

4) ZPZ
* форматирование коментариев;
* идентификаторы режима работы вынесены в отдельный тип, глобальная переменная хранящаая состояние режима теперь данного типа;
* функции под режим ВПЗ изменены под новый принцип управления индикацией (по сути теперь это обёртки функций из discrete_io, а так же убраны ненужные теперь переменные;
* так как мигающая индикация теперь не может сама себя отключить (ранее был принцип WDT), необходимо это контролировать самостоятельно.
для этого был отдельный таймаут под удержание режима ВПЗ. так где раньше счетчик сбрасывался, теперь обновляется таймаут; на входе в функцию обслуживания запросов
проверяется его статус, если  таймаут давно не обновлялся - происходит переключение режима;
* команда PIN_STATE и все с ней связанное убрано, так как больше не используется;

5) main
* реализована инидикация на время инициализации, тестирования и ожидания включения СНС;
* форматирован код;
  • Loading branch information
iamsaywhat committed Jan 20, 2020
1 parent f1362cc commit af445a2
Show file tree
Hide file tree
Showing 9 changed files with 227 additions and 334 deletions.
16 changes: 8 additions & 8 deletions BUP.uvoptx
Original file line number Diff line number Diff line change
Expand Up @@ -144,32 +144,32 @@
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>440</LineNumber>
<LineNumber>121</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134252008</Address>
<Address>134225882</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>.\SelfTesting.c</Filename>
<Filename>.\bup_data_store.c</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>1</Number>
<Type>0</Type>
<LineNumber>121</LineNumber>
<LineNumber>440</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134225882</Address>
<Address>134252008</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>.\bup_data_store.c</Filename>
<Filename>.\SelfTesting.c</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
Expand Down Expand Up @@ -703,7 +703,7 @@
<GroupNumber>6</GroupNumber>
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExp>0</tvExp>
<Focus>0</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
Expand Down Expand Up @@ -755,7 +755,7 @@
<GroupNumber>6</GroupNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<Focus>0</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
Expand Down
37 changes: 37 additions & 0 deletions CustomDrivers/discrete_io.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#include "discrete_io.h"

PinConfigType blinkPin;

/**************************************************************************************************************
Discrete_RetargetPins - Конфигурирование дискретных пинов
**************************************************************************************************************/
Expand All @@ -22,3 +24,38 @@ void Discrete_RetargetPins (void)
Pin_reset (PYRO);
Pin_reset (BLIND_CTRL);
}

/**************************************************************************************************************
runIndication - Запуск мигающей индикации
Параметры:
pin - пин с конфигурацией;
period - период следования импульсов
**************************************************************************************************************/
void runIndication(PinConfigType* pin, unsigned long period)
{
blinkPin = *pin; /* Копируем настройки индикации */
Pin_reset(blinkPin); /* Выключаем индикатор */
Timer_init(BLINK_TIMER, period); /* Запускаем таймер */
}

/**************************************************************************************************************
stopIndication - Остановка мигающей индикации
**************************************************************************************************************/
void stopIndication(void)
{
TIMER_Cmd(BLINK_TIMER, DISABLE); /* Отключаем таймер */
}

/**************************************************************************************************************
interruptIndication - Функция обслуживания прерываний от используемого таймера.
Примечание:
Необходимо разместить в базовом обработчике прерывания
**************************************************************************************************************/
void interruptIndication(void)
{
TIMER_ClearFlag(BLINK_TIMER, TIMER_STATUS_CNT_ARR); /* Сбрасываем флаг прерываний таймера */
if (Pin_read(blinkPin)) /* Сменяем состояние индикатора на противоположное */
Pin_reset(blinkPin);
else
Pin_set(blinkPin);
}
2 changes: 1 addition & 1 deletion CustomDrivers/include/bupboard.h
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ typedef enum {
#define ZPZ_UART MDR_UART2 /* UART используемый загрузчиком */
#define ZPZ_IRQn UART2_IRQn /* Используемое загрузчиком прерывание от UART */
#define ZPZ_CAN MDR_CAN1 /* CAN используемый загрузчиком */
#define ZPZ_TIMER MDR_TIMER2 /* Таймер используемый загрузчиком */
#define BLINK_TIMER MDR_TIMER2 /* Таймер используемый под индикацию */
#define MMODEL_TIMER MDR_TIMER1 /* Таймер используемый под обслуживания мат. модели регулятора */
#define USED_ADC ADC1 /* Используемый АЦП под аналоговые сигналы */
#define BATTERY_50V_CH ADC_CH_ADC10 /* Используемый канал АЦП */
Expand Down
22 changes: 22 additions & 0 deletions CustomDrivers/include/discrete_io.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "bupboard.h"
#include "otherlib.h"


// Макросы для именованного контроля состояний
#define PIN1_CHECK Pin_read (PIN1) /* Воткнута ли шпилька 1 (Воткнута = 1) */
#define BLIND_CHECK Pin_read (BLIND) /* Открыт ли замок створки ли шпилька 1 (Закрыт = 0) */
Expand Down Expand Up @@ -37,5 +38,26 @@
**************************************************************************************************************/
void Discrete_RetargetPins (void);

/**************************************************************************************************************
runIndication - Запуск мигающей индикации
Параметры:
pin - пин с конфигурацией;
period - период следования импульсов
**************************************************************************************************************/
void runIndication(PinConfigType* pin, unsigned long period);

/**************************************************************************************************************
stopIndication - Остановка мигающей индикации
**************************************************************************************************************/
void stopIndication(void);

/**************************************************************************************************************
interruptIndication - Функция обслуживания прерываний от используемого таймера.
Примечание:
Необходимо разместить в базовом обработчике прерывания
**************************************************************************************************************/
void interruptIndication(void);



#endif
Loading

0 comments on commit af445a2

Please sign in to comment.