Qué tal gente, me encuentro en un dilema. Mi programa no me bota el resultado que quiero si es que en una función de comparación del valor de un adc, no coloco un carry:
int main(void) {
... configuración de pines y etc...
Configuracion_40MIPS();
configuracion_UART();
initAdc1(); // Initialize ADC
initTmr3(); // Initialise TIMER 3
while(1) {
if (a1 == 1 && a2 == 0)// Pista 1 PISTOLA
{
if (canal1 >= 1.0 && canal1 <= 1.2) { //1.132
Disparo_tiroxtiro(); // llama a la función
}
}
void Disparo_tiroxtiro(void) { // entra a la función pero necesita el carry
if (a1 == 1 && a2 == 0 && canal1 >= 1.0 && canal1 <= 1.2)// Pista 1 PISTOLA
{
while (U1STAbits.UTXBF);
U1TXREG = '\r';
while (!U1STAbits.TRMT); if (canal1 >= 1.42 && canal1 <= 1.5) { //rastrilleo1 == 1
// printf("llego disparo2");
while (canal1 >= 1.42 && canal1 <= 1.5); //rastrilleo1 == 1
__delay32(800000); // delay 20mseg
est_rastrillo = 1;
est_gatillo = 1;
}
if (canal1 >= 1.3 && canal1 <= 1.40 && est_rastrillo == 1 && est_gatillo == 1) { //gatillo1 == 1
while (canal1 >= 1.3 && canal1 <= 1.4); //gatillo1 == 1
MotorControl(); //llama a otra función para enviar respuesta
.....
.....
Sin ese carry no puedo realizar ni la comparación ni mucho menos el llamado al otro programa. Lo coloqué porque al depurar corría con printf así que probé mandarle el carry para que se visualice el resultado.
No tengo idea de por qué.
Les agradecería me den una mano