¿Cómo escribir un programa de microcontrolador?
A lo que el software debe prestar atención es a elegir el algoritmo de filtrado adecuado según las necesidades.
El flujo del programa es el siguiente:
#include <.....
#define SAMPLE_NUMBER 1024
int sample[ SAMPLE_NUMBER];
int sampleFiltered[SAMPLE_NUMBER];
int salida[SAMPLE_NUMBER];
volatile int sampleCount;
volatile BOOL sampleOK_flag;
BOOL filterOK_flag;
BOOL AD-a-output-physical_flag;
BOOL AD-a-output-physical_flag;
anular AD_Init ()
{
.....................
}
void AD_handle() __irq
{
............
muestra[sampleCount++] = ADresultado ;
if (sampleCount == SAMPLE_NUMBER)
{
sampleCount = 0;
sampleOK_flag = TRUE
}
}
int* filter(int* pSample, int* pSampleFiltered)
{
.... ............
filterOK_flag = TRUE;
return &sampleFiltered[0];
} p>
int* AD a OutputPhysics(int* sampleFiltered,int *output)
{
............ ....... ..
AD para generar conversion_flag físico = TRUE;
return &output[0];
}
void lcd_init()
{
....................
}
void lcd_display(int* salida, int posiciónX,int posiciónY)
{
............. ......... ...............
}
int main()
{
sampleCount = 0;
sampleOK_flag = FALSE;
filterOK_flag = FALSE;
AD-to-output-physics_flag = FALSE;
System_init ();
AD_Init();
lcd_init();
mientras ( 1)
{
if (sampleOK_flag )
{
filtrar
(muestra, muestraFiltered);
sampleOK_flag = FALSE;
}
if (filterOK_flag )
{
AD para generar conversión física (sampleFiltered,output);
filterOK_flag = FALSE;
}
if (AD para generar conversion_flag física) p>
{
lcd_display(output, positionX,positionY );
AD para generar conversion_flag físico = FALSE;
}
}
}
}