ho quasi finito di sviluppare un driver per LCD HY28A-LCDB che utilizza ILI9320 per l'LCD e l'ADS7843 per il Touch Panel;
eseguendo la routine di seguito durante il runtime l'ultima istruzione che esegue è la prima printf...
compilo con:
gcc -o spi -l rt main.c -l bcm2835 -l m -mfloat-abi=hard -Wall
Code: Select all
FunctionalState getDisplayPoint(Coordinate * displayPtr, Coordinate * screenPtr, Matrix * matrixPtr )
{
FunctionalState retTHRESHOLD = ENABLE ;
long double an, bn, cn, dn, en, fn, sx, sy, md;
printf("before the printf...\n");
-----------> fino a qui! anche se commento la printf
printf("a %Lf - b %Lf - c %Lf - d %Lf - e %Lf - f %Lf --- x %d - y %d - m %Lf",matrixPtr->An,matrixPtr->Bn,matrixPtr->Cn,matrixPtr->Dn,mat$
an = (long double)matrixPtr->An;
bn = (long double)matrixPtr->Bn;
cn = (long double)matrixPtr->Cn;
dn = (long double)matrixPtr->Dn;
en = (long double)matrixPtr->En;
fn = (long double)matrixPtr->Fn;
sx = (long double)screenPtr->x;
sy = (long double)screenPtr->y;
md = (long double)matrixPtr->Divider;
// printf("a %f - b %f - c %f - d %f - e %f - f %f --- x %f - y %f - m %f",an,bn,cn,dn,en,fn,sx,sy,md);
if( matrixPtr->Divider != 0 )
{
/* XD = AX+BY+C */
displayPtr->x = (unsigned short)( (an * sx) + (bn * sy) + cn) / md;
/* YD = DX+EY+F */
displayPtr->y = (unsigned short)( (dn * sx) + (en * sy) + fn) / md;
}
else
{
retTHRESHOLD = DISABLE;
}
return(retTHRESHOLD);
}
Aiutoooooo...