Buenas gente del foro
tengo un PIC16F84A conectado a 4 pulsadores de selección de acción , dependiendo de la acción a realizar envía un 1 por el puerto A(0 1 2 3 ) y el porta.4 recibe de el pic 16f877a envía un 1 para control de un servo , el puerto A (0 1 2 3) tienen una resistencia de 57ohm conectadas a el 16f877a puerto A (0 1 2 3) y el porta.4 envía señal al 16f84a
Tengo el siguiente problema
al accionar un botón y enviar un 1 por el pin 0 del puerto A el 16f877a no reacciona no realiza ninguna acción
Aquí el programa del 16F84A
Ahora en el 16f877a
Probando esa pequeña acción de solo accionar m1 no hace nada!
supongo que va a suceder lo mismo cuando envié el 1 a la acción del servo desde el 16f877a al 16f84a el esquema esta bien y todo bien por que funcionan los dos pics individualmente pero no colectivamente debería agregar algo ? entre la conexión de los pics? alguna compuerta? un maxx?
Que debo hacer ?
PD: Las pcb están separadas por un bus de datos de una placa a otra (gnd comun 5V común)
Gracias de antemano
tengo un PIC16F84A conectado a 4 pulsadores de selección de acción , dependiendo de la acción a realizar envía un 1 por el puerto A(0 1 2 3 ) y el porta.4 recibe de el pic 16f877a envía un 1 para control de un servo , el puerto A (0 1 2 3) tienen una resistencia de 57ohm conectadas a el 16f877a puerto A (0 1 2 3) y el porta.4 envía señal al 16f84a
Tengo el siguiente problema
al accionar un botón y enviar un 1 por el pin 0 del puerto A el 16f877a no reacciona no realiza ninguna acción
Aquí el programa del 16F84A
Código:
@ DEVICE PIC16F84A
@ DEVICE PROTECT_OFF,WDT_OFF,PWRT_On,xt_osc
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz
i var byte
c1 var portb.0;control de ubicacion
c2 var portb.1;control de seguidor de luz
c3 var portb.2;control de seguidor de linea negra
c4 var portb.3;control por radiofrecuencia
servo var portb.4;control de servo
p1 var porta.0;seleccion ubicacion
p2 var porta.1;seleccion seguidor de luz
p3 var porta.2;seleccion seguidor de linea negra
p4 var porta.3;seleccion radiofrecuencia
cservo var porta.4;pin control de servo
PORTB.4=0
Inicio;control
if p1=0 then ubi;ubicacion
if p2=0 then luz;seguidor de luz
if p3=0 then cny;seguidor de linea negra
if p4=0 then rad;control por radiofrecuencia
if (p1=0) and (p3=0) then mov
low c1
low c2
low c3
low c4
pause 10
goto inicio
ubi; ubicacion
high c1
goto Control
control
if p1=0 then inicio
if cservo=1 then movimiento
pulsout servo,150
pause 10
goto control
movimiento
for i=150 to 250 step 1
pulsout servo,i
pause 10
next i
pause 700
for i=250 to 150 step -1
pulsout servo,i
pause 10
next i
pause 700
for i=150 to 70 step -1
pulsout servo,i
pause 10
next i
pause 700
goto control
luz
high c2
pause 10
goto luz
cny
high c3
pause 10
goto cny
rad
high c4
pause 10
goto rad
mov
high c3
high c1
if p3=0 then inicio
if cservo=1 then movimiento2
pulsout servo,150
pause 10
goto mov
movimiento2
for i=150 to 250 step 1
pulsout servo,i
pause 10
next i
pause 700
for i=250 to 150 step -1
pulsout servo,i
pause 10
next i
pause 700
for i=150 to 70 step -1
pulsout servo,i
pause 10
next i
pause 700
goto mov
END
Código:
@ DEVICE PIC16F877A ;Seleccion del Microcontrolador PIC16F877A
@ DEVICE xt_OSC ;Seleccion del Tipo de oscilador XT de Cristal
@ DEVICE WDT_Off ;Seleccion del Watchdog Timer Apagado
@ DEVICE PWRT_On ;Seleccion del Power-on Reset Apagado
@ DEVICE BOD_Off ;Seleccion del Brown-out Reset Apagado
@ DEVICE LVP_OFF ;Seleccion del Low-Voltage Programming Apagado
@ DEVICE WRT_OFF ;Seleccion del Flash Program Memory Write Apagado
@ DEVICE DEBUG_OFF ;Seleccion del In-Circuit Debugger Apagado
@ DEVICE CPD_OFF ;Seleccion del Data EEPROM Memory Code Protection Apagado
@ DEVICE PROTECT_Off ;Seleccion del Flash Program Memory Code Protection Apagado
Define OSC 4 'Definicion de oscilador a 4MHZ
c1 var porta.0;control de ubicacion
c2 var porta.1;control de seguidor de luz
c3 var porta.2;control de seguidor de linea negra
c4 var porta.3;control por radiofrecuencia
cservo var porta.4;control de servo
cl1 var portc.0;luz1
cl2 var portc.1;luz2
cl3 var portc.2;luz3
ci1 var portc.3;infrarojo 1
ci2 var portc.4;infrarojo 2
ci3 var portc.5;infrarojo head
ci4 var portc.6;infrarojo head
ct var portc.7;enable luz
m1 var portd.0;motor1 adelante
m2 var portd.1;motor1 atras
m3 var portd.2;motor2 adelante
m4 var portd.3;motor2 atras
m5 var portd.4;motor3 adelante
m6 var portd.5;motor3 atras
m7 var portd.6;motor4 adelante
m8 var portd.7;motor4 atras
cn1 var portb.5;motor1 atras
cn2 var portb.4;motor2 adelante
radio1 var portb.3;motor2 atras
radio2 var portb.2;motor3 adelante
radio3 var portb.1;motor3 atras
radio4 var portd.0;motor4 adelante
en var porte.0;enable head
inicio ;seleccion de accion
if c1=1 then mov
low m1
goto inicio
mov
high m1
goto inicio
end
supongo que va a suceder lo mismo cuando envié el 1 a la acción del servo desde el 16f877a al 16f84a el esquema esta bien y todo bien por que funcionan los dos pics individualmente pero no colectivamente debería agregar algo ? entre la conexión de los pics? alguna compuerta? un maxx?
Que debo hacer ?
PD: Las pcb están separadas por un bus de datos de una placa a otra (gnd comun 5V común)
Gracias de antemano
Última edición por un moderador: