TODOPIC
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
. ¿Perdiste tu
email de activación
?
1 Hora
1 Día
1 Semana
1 Mes
Siempre
Ingresar con nombre de usuario, contraseña y duración de la sesión
Este tema
Este sub-foro
Todo el foro
Google
Inicio
Ayuda
Buscar
Ingresar
Registrarse
TODOPIC
»
Microcontroladores PIC
»
Lenguaje C para microcontroladores PIC
(Moderadores:
pikman
,
pocher
,
vszener
,
Suky
) »
Simulacion funciona OK, vida real NO!
« anterior
próximo »
Imprimir
Páginas: [
1
]
Ir Abajo
Autor
Tema: Simulacion funciona OK, vida real NO! (Leído 1741 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Francirius
PIC10
Mensajes: 32
Simulacion funciona OK, vida real NO!
«
en:
14 de Septiembre de 2012, 20:30:57 »
hola amigos, necesito su guia...tengo un programilla para leer un encoder, el programa está hecho 100% por mi, quizas medio largo, pero es de la forma que lo entendi...la cosa es que funciono, lo simule en proteus, y ningun problema...pero en la vida real se queda pegado!...a alguien le ha pasado?
Código: C++
#include <16F877A.h>
#fuses XT,NOWDT,NOPUT,NOPROTECT
#use delay(clock=4000000)
#include <lcd_portc.c>
/******************************************************************************/
//Definicion de variables.
int
cuenta,cambio
;
/*****************************************************************************/
// Vector interrupcion.
#INT_RB
void
ext_isr
(
)
{
switch
(
cambio
)
{
case
0
:
if
(
(
input
(
PIN_B4
)
)
&&
(
!
input
(
PIN_B5
)
)
)
{
cuenta
++
;
lcd_gotoxy
(
1
,
2
)
;
printf
(
lcd_putc,
"%U"
,cuenta
)
;
cambio
=
0x01
;
}
else
{
if
(
(
!
input
(
PIN_B4
)
)
&&
(
input
(
PIN_B5
)
)
)
{
cuenta
--
;
lcd_gotoxy
(
1
,
2
)
;
printf
(
lcd_putc,
"%U"
,cuenta
)
;
cambio
=
0x02
;
}
}
break
;
case
1
:
if
(
(
input
(
PIN_B4
)
)
&&
(
input
(
PIN_B5
)
)
)
{
cuenta
++
;
lcd_gotoxy
(
1
,
2
)
;
printf
(
lcd_putc,
"%U"
,cuenta
)
;
cambio
=
0x03
;
}
break
;
case
2
:
if
(
(
input
(
PIN_B4
)
)
&&
(
input
(
PIN_B5
)
)
)
{
cuenta
--
;
lcd_gotoxy
(
1
,
2
)
;
printf
(
lcd_putc,
"%U"
,cuenta
)
;
cambio
=
0x03
;
}
break
;
case
3
:
if
(
(
!
input
(
PIN_B4
)
)
&&
(
input
(
PIN_B5
)
)
)
{
cuenta
++
;
lcd_gotoxy
(
1
,
2
)
;
printf
(
lcd_putc,
"%U"
,cuenta
)
;
cambio
=
0x04
;
}
else
{
if
(
(
input
(
PIN_B4
)
)
&&
(
!
input
(
PIN_B5
)
)
)
{
cuenta
--
;
lcd_gotoxy
(
1
,
2
)
;
printf
(
lcd_putc,
"%U"
,cuenta
)
;
cambio
=
0x05
;
}
}
break
;
case
4
:
if
(
(
!
input
(
PIN_B4
)
)
&&
(
!
input
(
PIN_B5
)
)
)
{
cuenta
++
;
lcd_gotoxy
(
1
,
2
)
;
printf
(
lcd_putc,
"%U"
,cuenta
)
;
cambio
=
0
;
}
break
;
case
5
:
if
(
(
!
input
(
PIN_B4
)
)
&&
(
!
input
(
PIN_B5
)
)
)
{
cuenta
--
;
lcd_gotoxy
(
1
,
2
)
;
printf
(
lcd_putc,
"%U"
,cuenta
)
;
cambio
=
0
;
}
break
;
default
:
break
;
}
}
/******************************************************************************/
void
main
(
)
{
cuenta
=
0
;
cambio
=
0
;
enable_interrupts
(
int_rb
)
;
//habilita la interrupcion externa (Rb0).
lcd_init
(
)
;
lcd_gotoxy
(
1
,
1
)
;
printf
(
lcd_putc,
"Prueba"
)
;
enable_interrupts
(
GLOBAL
)
;
do
{
}
while
(
TRUE
)
;
}
A todo esto, el codigo lo hice por las mias, por que nunca pude entender algunos de los que ponian aca...
Saludos y gracias!!
En línea
Nocturno
Administrador
DsPIC33
Mensajes: 18286
Re: Simulacion funciona OK, vida real NO!
«
Respuesta #1 en:
15 de Septiembre de 2012, 02:25:39 »
Esas funciones lcd_gotoxy y printf dentro de la interrupción te van a dar tormento. Cuando el encoder se mueva rápido, los cambios en las señales B4 y B5 se producirán cuando todavía se esté ejecutando el anterior.
En la interrupción deberías limitarte a actualizar los contadores (cuenta, cambio...) que puedes imprimir desde el main.
En línea
Visita
MicroPIC
Canal Youtube MicroPIC Proyectos
Twitter @PrMicroPIC
Instagram @proyectosmicropic
Facebook @ProyectosMicroPIC
Telegram @MicroPIC
Francirius
PIC10
Mensajes: 32
Re: Simulacion funciona OK, vida real NO!
«
Respuesta #2 en:
16 de Septiembre de 2012, 01:57:24 »
Gracias por la respuesta. Inicialmente mi programa era asi, en la subrutina de la interrupcion solamente incrementaba registros, y en el main desplegaba, pero pasaba lo mismo, cuando lo progrmaba en la vida real, se colgaba...
En línea
BrunoF
Administrador
DsPIC30
Mensajes: 3865
Re: Simulacion funciona OK, vida real NO!
«
Respuesta #3 en:
16 de Septiembre de 2012, 04:31:59 »
No veo que modifiques el cambio de flanco de la interr de RB0. No creo que logres hacerlo funcionar bien si no vas alternando el cambio de flanco de la interr.
En línea
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year.
Not all bits have equal value." -- Carl Sagan
Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.
Nocturno
Administrador
DsPIC33
Mensajes: 18286
Re: Simulacion funciona OK, vida real NO!
«
Respuesta #4 en:
16 de Septiembre de 2012, 04:49:13 »
Creo que con las interrupciones pin-on-change no hace falta cambiar el flanco, Don Bruno, saltan siempre que hay un cambio hacia arriba o hacia abajo.
En línea
Visita
MicroPIC
Canal Youtube MicroPIC Proyectos
Twitter @PrMicroPIC
Instagram @proyectosmicropic
Facebook @ProyectosMicroPIC
Telegram @MicroPIC
BrunoF
Administrador
DsPIC30
Mensajes: 3865
Re: Simulacion funciona OK, vida real NO!
«
Respuesta #5 en:
17 de Septiembre de 2012, 09:56:17 »
Ah si, perdón. Pensé que estaba usando RB0...
En línea
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year.
Not all bits have equal value." -- Carl Sagan
Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.
MGLSOFT
Moderadores
DsPIC33
Mensajes: 7912
Re: Simulacion funciona OK, vida real NO!
«
Respuesta #6 en:
17 de Septiembre de 2012, 11:19:44 »
Cuando se trata de un encoder de dos hilos, es necesario leer ambos flancos de cada linea para saber la direccion de giro del encoder.
Puede ser por eso que lo necesita, pero repito, es para dos hilos de un encoder incremental.
En línea
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.
jukinch
Colaborador
PIC24F
Mensajes: 608
Re: Simulacion funciona OK, vida real NO!
«
Respuesta #7 en:
17 de Septiembre de 2012, 11:39:36 »
post Editado. No creo que contribuya dar el pescado. Será mejor enseñar a pescar.
Saludos a todos nuevamente
Jukinch
«
Última modificación: 17 de Septiembre de 2012, 11:59:25 por jukinch
»
En línea
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes
Imprimir
Páginas: [
1
]
Ir Arriba
« anterior
próximo »
TODOPIC
»
Microcontroladores PIC
»
Lenguaje C para microcontroladores PIC
(Moderadores:
pikman
,
pocher
,
vszener
,
Suky
) »
Simulacion funciona OK, vida real NO!