Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Pregunta sobre servos y c++

Estas en el tema de Pregunta sobre servos y c++ en el foro de C/C++ en Foros del Web. hola quiero hacer una araña con servos y programando un pic. encontre este codigo para emprezar hacerlo Código: #include<htc.h> void config(void); int x=0xA2; void main(void) ...
  #1 (permalink)  
Antiguo 29/05/2010, 22:46
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 3 meses
Puntos: 15
Pregunta sobre servos y c++

hola quiero hacer una araña con servos y programando un pic. encontre este codigo para emprezar hacerlo


Código:
 
#include<htc.h>

void config(void);
int x=0xA2;
void main(void)
{
 config();
 while(1)
 {
 
  if(RD7==1)
  {
  x=0xB2;
  }
  else
  {
  x=0x93;
  }
 }
}
 
void config(void)
{
// configurar puerto rd0 como salida de control S1, y RD7 como entrada de control
TRISD=0b11111110;
RD0=0;
// configurar timers
// T1 genera frecuencia de 50Hz - entra cada 20ms
// Configuracion del timer 1
T1CON=0x00;   //inicializar en ceros registro de control
TMR1H=0xB1;   //valor de inicializacion de timer 1 para contar 20ms
TMR1L=0xE0;
// T2 genera ancho de pulso 1ms 2ms
// Configuracion del timer 2
T2CON=0x00;   //inicializar registro de control t2
T2CKPS1=1;   //configurar prescaler 1:16
TMR2=x;   //valor de inicializacion de timer 2 para contar 1.5ms
// configurar interrupciones
INTCON=0x00;   //inicializar registro de control de interrupciones
GIE=1;    //habilitar int globales
PEIE=1;    //habilitar int perifericas
TMR1IE=1;   //habilitar int de los timers 1 y 2
TMR2IE=1;
TMR1IF=0;   //borrar banderas (deben ser borradas por software)
TMR2IF=0;

T1OSCEN=1;   //activa el oscilador
TMR1ON=1;   //activa timer 1
}

void interrupt interrupciones(void)
{
GIE=0;
 if(TMR1IF==1)
 {
 TMR1ON=0;
 RD0=1;
 TMR1H=0xB1;   //valor de inicializacion de timer 1 para contar 20ms
 TMR1L=0xE0;
 TMR1ON=1;
 TMR2ON=1;
 TMR1IF=0;
 }
 if(TMR2IF==1)
 {
 RD0=0;
 TMR2ON=0;
 TMR2=x;   // inicializacion 1.5ms
 

 TMR2IF=0;
 }

GIE=1;
}

pero entiededno moe bien que funcion hace el while() envia señales pero no para que, este code solo maneje un servo.

saludos


saludos
  #2 (permalink)  
Antiguo 03/06/2010, 11:34
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años
Puntos: 73
Respuesta: Pregunta sobre servos y c++

El programa efectúa una configuración inicial y luego entra al bucle. Este bucle es un bucle infinito (while(1), la condición es siempre verdadera) y lo único que hace es cambiar el valor de x en función del estado de RD7, que en la descripción al principio de la función config te indica que es una entrada de control. Este valor de x se aplica como valor para un temporizador, que es lo que se ve en la función de servicio de interrupción (la que aparece como void interrupt).

Por lo que puedo ver, parece que el principio de funcionamiento es aplicar una configuración inicial y luego entrar a un bucle infinito, con el fin de quedar en espera de que vayan sucediendo eventos que son tratados por la rutina de servicio de interrupciones.

Saludos,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:09.