Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: Chromatograph_Mobile
Revision 1:54015254fc18, committed 2020-08-11
- Comitter:
- nikmaos
- Date:
- Tue Aug 11 19:13:08 2020 +0000
- Parent:
- 0:1b92bdad27f6
- Child:
- 2:ccfbc827eb2c
- Commit message:
- 1108
Changed in this revision
| ads1248.cpp | Show annotated file Show diff for this revision Revisions of this file |
| ads1248.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/ads1248.cpp Sat Aug 08 18:29:32 2020 +0000
+++ b/ads1248.cpp Tue Aug 11 19:13:08 2020 +0000
@@ -58,10 +58,10 @@
union{
struct{
- uint8_t
- b1,b2,b3;
- };
- uint32_t all;
+ uint8_t
+ b1,b2,b3;
+ };
+ uint32_t all;
}data;
data.all=0;
@@ -102,3 +102,35 @@
return 0;
}
+
+//вызывать вместо простого чтения АЦП
+unsigned long ADS1248ReadCalibratedData(ADS1248_t * ads)
+{
+ unsigned long result=0;
+ //проверка адекватности коэффициентов (не доделана)
+ if ((ads->Calibr.k>0)&&(ads->Calibr.b<0x8000000))
+ result = ads->Calibr.k*ADS1248ReadData(ads)+ads->Calibr.b;
+ else return (0);
+ if (result & 0xFF000000)
+ /*Если результат переполнен из-за коэффициентов то данные испорчены.
+ Наверное можно просто отбросить старший байт или лучше приравнять максимальному 0x00FFFFFF*/
+ return 0;
+}
+
+//программная калибровка через терминал, без использования регистров микросхемы
+void ADS1248CalibrateSoft(ADS1248_t * ads, /*костыль костылей*/float (*btf)(unsigned char*))
+{
+ //тут остановить все управляющие воздействия и считывание. Или перед использованием функции.
+ /*
+
+ */
+ UART.printf("ADS CALIBRATE:\r\n");
+ __disable_irq ();
+ UART_gets(16);
+ UART.printf("%s\r\n",str);
+ if(str[0]=='k'){
+ float result = btf(str);
+ UART.printf("%f\r\n",result);
+ }
+ __enable_irq ();
+}
--- a/ads1248.h Sat Aug 08 18:29:32 2020 +0000
+++ b/ads1248.h Tue Aug 11 19:13:08 2020 +0000
@@ -230,8 +230,13 @@
GPIOCFG_t GPIOCFG;
GPIODIR_t GPIODIR;
GPIODAT_t GPIODAT;
+ struct {//хранение настроек калибровки
+ float k,b;
+ }Calibr;
}ADS1248_t;
-
+
+
+
unsigned char ADS1248SleepCommand( void );
unsigned char ADS1248WakeupCommand( void );
@@ -245,6 +250,9 @@
unsigned long ADS1248ReadData( ADS1248_t * ads );
unsigned char ADS1248SettingReg ( ADS1248_t * ads );
+
+ unsigned long ADS1248ReadCalibratedData(ADS1248_t * ads);
+ void ADS1248CalibrateSoft(ADS1248_t * ads, float (*btf)(unsigned char *));
#endif /*ADS1248_H*/