Vitaliy Loginov / LT1446

Files at this revision

API Documentation at this revision

Comitter:
vitlog
Date:
Mon Jun 22 09:52:25 2020 +0000
Commit message:
DAC

Changed in this revision

LT1446.cpp Show annotated file Show diff for this revision Revisions of this file
LT1446.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LT1446.cpp	Mon Jun 22 09:52:25 2020 +0000
@@ -0,0 +1,33 @@
+#include "LT1446.h"
+//повторное объявление из-за использования внешней переменной и ошибки множественного объявления
+LT1446_MEM_t LT1446_MEM;
+//экземпляр по умолчанию
+LT1446_t LT1446_0;
+
+ void LT1446_CalibrateCh(LT1446_Calibr_t *dac,float k, float b)
+{
+     dac->k=k;
+     dac->b=b;
+}
+//Вычислить значение для передачи в ЦАП
+void LT1446_CalculateCh(LT1446_Calibr_t *dac)
+{
+    dac->Code=(uint16_t)(dac->k*dac->Volts+dac->b);
+    if (dac->Code>4095) dac->Code=4095;
+}
+
+void LT1446_Write(LT1446_t *chip)
+{
+    
+    
+    LT1446_MEM.DACA=chip->dacA.Code;
+    LT1446_MEM.DACB=chip->dacB.Code;
+    Cs=0;
+    TED2.write(LT1446_MEM.b3);    
+    TED2.write(LT1446_MEM.b2);
+    TED2.write(LT1446_MEM.b1);    
+    Cs=1;
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LT1446.h	Mon Jun 22 09:52:25 2020 +0000
@@ -0,0 +1,51 @@
+#ifndef LT1446_H
+#define LT1446_H
+/*Начало файла*/
+#include "PerifConfig.h"
+
+/*записывам в DACA и DACB а отправляем байты. Байт 2 содержит часть от обоих каналов*/
+typedef union{
+    struct{
+        uint32_t
+         DACB:12,
+         DACA:12;
+        };
+        struct{
+            uint8_t
+        b3,
+        b2,
+        b1;
+        };
+    } LT1446_MEM_t;    //объявление типа
+    //объявление внешней переменной (продолжение в cpp файле)
+    extern LT1446_MEM_t LT1446_MEM;
+ 
+ /*Оперативное значение калибровки*/
+ typedef struct {
+     float k,Volts,b;    
+     struct{
+     uint16_t Code:12; //вывод в ЦАП
+     uint16_t       //резерв под флаги 
+      f0:1,   
+      f1:1,
+      f2:1,
+      f3:1;
+     };
+     }LT1446_Calibr_t;     
+
+/*типа для создания экземпляра ЦАПа если их несколько*/
+typedef struct {
+    LT1446_Calibr_t dacA;
+    LT1446_Calibr_t dacB;
+    } LT1446_t;
+    
+    //объект по умолчанию
+    extern LT1446_t LT1446_0;
+
+     /*Функция калибровки (присвоение коэффициентов)*/
+     void LT1446_CalibrateCh(LT1446_Calibr_t *dac,float k, float b);
+     void LT1446_CalculateCh(LT1446_Calibr_t *dac);
+     /*записать данные в память микросхемы*/
+     void LT1446_Write(LT1446_t *chip);
+/*Конец файла*/
+#endif