kopia lustrzana https://github.com/SP8EBC/ParaTNC
84 wiersze
2.2 KiB
C
84 wiersze
2.2 KiB
C
#ifndef __TX20_H
|
||
#define __TX20_H
|
||
|
||
#include "station_config.h"
|
||
#include <stdint.h>
|
||
|
||
#ifdef _ANEMOMETER_TX20
|
||
|
||
#define VNAME TX20 // nazwa tworzonej zmiennej strukturalnej
|
||
|
||
typedef struct {
|
||
float WindSpeed;
|
||
short WindDirX;
|
||
short WindDirY;
|
||
int Checksum;
|
||
int CalcChecksum;
|
||
} DecodedData;
|
||
|
||
#define TX20_BUFF_LN 20
|
||
|
||
typedef struct Anemometer {
|
||
char BitSampler;
|
||
/* Zmienna przechowuj<75>ca stan automatu sampluj<75>cego bity.
|
||
Jest konieczna poniewa<77> sa one samplowane 2x czesciej niz wynosi faktyczna
|
||
predkosc transmisji tak aby kazdy na pewno zostal poprawnie odczytany
|
||
*/
|
||
unsigned long long int BitQueue;
|
||
/* Kolejka dla samplowanych bitow */
|
||
unsigned short int QueueLenght;
|
||
/* D<>gosc kolejki rozumiana jako ilosc zapisanych bitow */
|
||
char FrameRX;
|
||
/* Sygnalizacja detekcji poczatku ramki */
|
||
unsigned short int FrameBitCounter;
|
||
/* Licznik bitow odebranych z ramki */
|
||
char ReceiveDone;
|
||
/* Zmienna sygnalizujaca zakonczenie odbierania ramki */
|
||
#define START_FRAME 0x1B
|
||
/* Definicje pinow do ktorych podlaczony jest anemomter */
|
||
#define PORT GPIOB
|
||
#define DTR 8
|
||
#define TX 9
|
||
/* Z powodu pewnych u<>omno<6E>ci preprocesora w toolchainie RealView opr<70>cz podawania
|
||
nazwy portu nale<6C>y wpisa<73> jego numer. 0 odpowiada GPIOA, 1 GPIOB itd. */
|
||
#define PORTNUM 1
|
||
#define TIMER TIM1
|
||
/* Podobnie jak w przypadku port<72>w GPIO, podobny problem dotyczy timera */
|
||
#define TIMNUMBER 1
|
||
/* Aktualne odczyty zwracane przez czujnik */
|
||
DecodedData Data;
|
||
/* Licznik do poruszania si<73> po tablicy HistoryAVG*/
|
||
unsigned char MeasCounter;
|
||
/* Indeks poprzednio zapisanych pomiarow*/
|
||
unsigned char PrevMeasCounter;
|
||
/* Historia odczytow i usredniona wartosc z ostatnich 15 pomiarow */
|
||
// DecodedData HistoryAVG[TX20_BUFF_LN];
|
||
|
||
unsigned char OddEven;
|
||
} Anemometer;
|
||
|
||
extern Anemometer VNAME;
|
||
|
||
#ifdef __cplusplus
|
||
extern "C"
|
||
{
|
||
#endif
|
||
|
||
void tx20_batch(void);
|
||
void tx20_init(void);
|
||
float tx20_data_average(void);
|
||
void tx20_data_parse(void);
|
||
uint16_t tx20_get_scaled_windspeed(void);
|
||
uint16_t tx20_get_wind_direction(void);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
|
||
extern Anemometer VNAME;
|
||
|
||
#endif // #ifdef _ANEMOMETER_TX20
|
||
|
||
#endif // #ifndef __TX20_H
|