Hola chicos,
tengo una duda que puede ser muy tonta pero no consigo resolver. He programado un código simple para manejar un motor paso a paso bipolar. El caso es que cuando he intentado empezar a jugar con el número de pasos me ha surgido un imprevisto. Adjunto código:
como veis he creado una función que contiene la secuencia de pasos del motor paso a paso (prueba()). Mi idea era controlar el número de pasos que va dar el motor mediante el bucle for. De esta manera, el bucle for llamaría a la función prueba() 10 veces (hasta que la variable i fuera 10), por tanto, daría 40 pasos.
Pues bien, resulta que una vez programo el código en el microcontrolador, el código se ejecuta infinitamente. Es decir, el motor paso a paso va dando pasos de manera ininterrumpida.
¿Alguien tiene idea de por qué sucede esto? He probado con un return 0 al final del main pero tampoco funciona. Seguramente será una tontería.
Gracias a todos de antemano. Un saludo!
tengo una duda que puede ser muy tonta pero no consigo resolver. He programado un código simple para manejar un motor paso a paso bipolar. El caso es que cuando he intentado empezar a jugar con el número de pasos me ha surgido un imprevisto. Adjunto código:
PHP:
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include "FUSES.h"
#define _XTAL_FREQ 4000000
void prueba()
{
// Primer paso
PORTBbits.RB0 = 1;
PORTBbits.RB1 = 1;
PORTBbits.RB2 = 0;
PORTBbits.RB3 = 0;
__delay_ms(50);
// Segundo paso
PORTBbits.RB0 = 0;
PORTBbits.RB1 = 1;
PORTBbits.RB2 = 1;
PORTBbits.RB3 = 0;
__delay_ms(50);
// Tercer paso
PORTBbits.RB0 = 0;
PORTBbits.RB1 = 0;
PORTBbits.RB2 = 1;
PORTBbits.RB3 = 1;
__delay_ms(50);
// Cuarto paso
PORTBbits.RB0 = 1;
PORTBbits.RB1 = 0;
PORTBbits.RB2 = 0;
PORTBbits.RB3 = 1;
__delay_ms(50);
}
int main(void) {
TRISBbits.TRISB0 = 0;
TRISBbits.TRISB1 = 0;
TRISBbits.TRISB2 = 0;
TRISBbits.TRISB3 = 0;
//int n = 1;
for(int i = 1 ; i<10 ; i++)
{
prueba();
}
}
como veis he creado una función que contiene la secuencia de pasos del motor paso a paso (prueba()). Mi idea era controlar el número de pasos que va dar el motor mediante el bucle for. De esta manera, el bucle for llamaría a la función prueba() 10 veces (hasta que la variable i fuera 10), por tanto, daría 40 pasos.
Pues bien, resulta que una vez programo el código en el microcontrolador, el código se ejecuta infinitamente. Es decir, el motor paso a paso va dando pasos de manera ininterrumpida.
¿Alguien tiene idea de por qué sucede esto? He probado con un return 0 al final del main pero tampoco funciona. Seguramente será una tontería.
Gracias a todos de antemano. Un saludo!