Update CCS12 peripheral firmware and documentation
This commit is contained in:
@@ -1,3 +1,12 @@
|
||||
/**
|
||||
* @file kanal.c
|
||||
* @brief Последовательный вывод числовых данных на канальный индикатор.
|
||||
*
|
||||
* Управляет линиями DCLK/DOUT, формирует импульс сброса и передаёт разряды
|
||||
* индикатора с учётом адреса, десятичной точки и множителя тактовой частоты.
|
||||
* Задержки и таблица сегментов привязаны к внешней схеме; изменение GPIO или
|
||||
* CLKMULT требует повторной проверки временной диаграммы.
|
||||
*/
|
||||
#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
|
||||
#include "DSP2833x_SWPrioritizedIsrLevels.h"
|
||||
#include "filter_bat2.h"
|
||||
@@ -15,12 +24,14 @@
|
||||
int digits[16] = {63,6,91,79,102,109,125,7,127,111,64,0,0,0,121,0};
|
||||
int readr[5] = {0x08,0x0C,0x10,0x00,0x04};
|
||||
|
||||
/** @brief Устанавливает тактовую линию канального последовательного интерфейса. */
|
||||
void DCLK(int x)
|
||||
{
|
||||
if(x) GpioDataRegs.GPASET.bit.GPIO6=1;
|
||||
else GpioDataRegs.GPACLEAR.bit.GPIO6=1;
|
||||
}
|
||||
|
||||
/** @brief Устанавливает линию данных канального последовательного интерфейса. */
|
||||
void DOUT(int x)
|
||||
{
|
||||
if(x) GpioDataRegs.GPASET.bit.GPIO8=1;
|
||||
@@ -48,6 +59,10 @@ void DOUT(int x)
|
||||
#define POWS1 80L
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Формирует последовательность сброса внешних регистров индикатора.
|
||||
* @note Число холостых тактов является частью аппаратного протокола.
|
||||
*/
|
||||
void RESET()
|
||||
{
|
||||
DCLK(0);
|
||||
@@ -64,6 +79,7 @@ void RESET()
|
||||
#endif
|
||||
}
|
||||
|
||||
/** @brief Выдаёт один бит данных и сопровождающий его импульс DCLK. */
|
||||
void SENDBIT(int x)
|
||||
{
|
||||
DOUT(x); DCLK(1);
|
||||
@@ -78,12 +94,20 @@ void SENDBIT(int x)
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Кодирует адрес и число и передаёт их семисегментному индикатору.
|
||||
* @param adr Адрес физического канала.
|
||||
* @param dat Значение для отображения.
|
||||
* @param dot Позиция десятичной точки.
|
||||
* @details Таблица digits преобразует цифры в сегменты; знак и ведущие позиции
|
||||
* обрабатываются до побитовой отправки каждого разряда.
|
||||
*/
|
||||
void kanal_Send(int adr, long dat, int dot)
|
||||
{
|
||||
long Word,data,aliq_part,dg[4];
|
||||
int i,j,bit,byt,addr,sgn=0,punkt=0,aliq_len=0,full_len, isdot=0;
|
||||
|
||||
if(adr>1) // Лампочки
|
||||
if(adr>1) // Лампочки
|
||||
{
|
||||
Word =dat;
|
||||
}
|
||||
@@ -134,7 +158,7 @@ void kanal_Send(int adr, long dat, int dot)
|
||||
for(i=3;i>0;i--)
|
||||
{
|
||||
if((dg[i]==0)&&(i!=dot))
|
||||
dg[i]=0xF; // Это значит пусто
|
||||
dg[i]=0xF; // Это значит пусто
|
||||
else break;
|
||||
}
|
||||
|
||||
@@ -143,7 +167,7 @@ void kanal_Send(int adr, long dat, int dot)
|
||||
{
|
||||
if( (dg[i]==0xF)||(i==3))
|
||||
{
|
||||
dg[i]=0xA; // Это значит минус
|
||||
dg[i]=0xA; // Это значит минус
|
||||
break;
|
||||
} }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user