hola, estoy haciendo una cajita asi:
un pic16f628a controla un uln2803 (x porta.0 1 y 2 )q controla a su vez 3 reles para 3 motores
ademas el pic tiene dos les (portb.0 y portb.3)
en la eprom del pic guardo la programacion de las salidas, el pic va leyendo y asi para adelante, bien basiquito.
el asunto es q para modificar la memoria interna y controlar algunas cosas uso la puerta serial con una interrupcion, teoricamente la parte de picbasic esta correcta, todavia no llegue a conectarle nada a la puerta serial, aunque todo esto ya esta montado en su plaquita y su cajita.
dependiendo de mi suerte y no entiendo porque el programa salta solo a la parte de la interrupcion serial, sin tener nada conectado al serial, y mismo teniendo una proteccion en esta parte del codigo para que no se quede ahi, ahi se queda.
la pregunta es, cuales son los recaudos que se deben tomar para evitar ruidos de cualquier tipo en el pic, el pic tiene un capacitor 0.1uF otro de 100uF 25V las patas que no uso estan como salida, ya probe usar el resistor en el mclr, todo todo todo, y sigue haciendo lo mismo, lo que me falta hacer y no tengo muy claro es el brown out reset, tengo q leer un poco mas en microchip sobre esto.
Otra cosa, si a alguien le interesa este proyectito puedo postearlo, cuando pueda solucionar estas interferencias tengo q hacer la otra cajita para ver en tiempo real lo q esta pasando en esta plaquita y modificar su programacion.
muchas gracias gente! espero q el foro siga funcionando y no siga cayendo
@ device mclr_off,wdt_off,intrc_osc
intcon=%11000000
define hser_rcsta 90h
define hser_txsta 20h
define hser_baud 2400
define hser_clroerr 1
cmcon=7
trisa=%00000000
trisb=%00000010
ledf var portb.0
ledp var portb.3
index var byte
char1 Var byte
char2 var byte
char3 var byte
salida var byte
tiempo var byte
temp1 var byte
temp2 var byte
temp3 var byte
temp4 var byte
temp5 var byte
temp6 var byte
sale var bit
altera var bit
informa var bit
data 1,2,4,0,1,3,7,0,255
data @64,5,5,5,5,5,5,5,5,255
on interrupt goto serial
pie1.5 = 1
informa=0
DISABLE
"****************************************************************
inicio:
porta=0
index=0
altera=0
high ledp
high ledf
pause 2500
low ledp
high ledf
ENABLE
"****************************************************************
loop:
read index,salida
read (index+64),tiempo
if salida < 241 then
porta = salida
for temp1 = 1 to tiempo
if informa= 1 then hserout[251,index,salida,tiempo,temp1]
for temp2 = 1 to 10
for temp3 = 1 to 10
pause 10
next temp3
next temp2
next temp1
index=index+1
if index = 64 then index=0
else
index=0
endif
goto loop
end
DISABLE
"****************************************************************
serial:
high ledp
low ledf
sale=0
REPEAT
while pir1.5=1
hserin [char1]
select case char1
CASE 255
sale = 1
case 254
if pir1.5=1 then
hserin [char2]
if char2 <8 then
altera=1
porta=char2
endif
endif
case 253
temp4=0
repeat
read temp4, char2
read (temp4+64), char3
hserout [249,temp4,char2,char3]
temp4 = temp4+1
until char2 = 255 or temp4 = 64
if altera = 0 then sale = 1
case 252
hserout[254,salida]
if altera = 0 then sale = 1
case 251
hserout[251,251,251,251,251]
if altera = 0 then sale = 1
informa=1
case 250
hserout[251,250,250,250,250]
if altera = 0 then sale = 1
informa=0
case 249
if pir1.5=1 then
hserin[char2]
if pir1.5=1 then
hserin[char3]
if pir1.5=1 then
hserin [temp4]
write char2,char3
write (char2+64),temp4
porta=0
altera=1
endif
endif
endif
end select
wend
UNTIL SALE = 1
if altera = 1 then inicio
low ledp
HIGH ledf
resume