Autor Tema: solucionado Stack overflow,...pero nuevo problema ayuda por favor.  (Leído 3635 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado diegostreetbob

  • PIC12
  • **
  • Mensajes: 51
Hola,
ya he solucionado el problema de stack overflow usando goto en lugar de gosub, pero no se porque este programita tan sencillo no funciona en un 16f628 y si funciona en un 16f84.

trisa=255
trisb=0
leer var porta.1
npulsos var word
portb=0
lee:
if leer=1 then
npulsos=255
else
npulsos=16
endif
portb=npulsos
goto lee
end

Gracias

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: solucionado Stack overflow,...pero nuevo problema ayuda por favor.
« Respuesta #1 en: 24 de Junio de 2009, 04:44:17 »
No te funciona porque tenés que leer los datasheet.

El 16F628A, a diferencia del 16F84, tiene entradas analógicas, y PORTA.1 es una de ellas. Por defecto se activan y tenés que cambiarlas a digitales en el software.
"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.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: solucionado Stack overflow,...pero nuevo problema ayuda por favor.
« Respuesta #2 en: 24 de Junio de 2009, 08:54:24 »
Añadir "ALLDIGITAL" al programa
Recuerda que la mayoría de los Pic actuales sus pin tienen varias funciones distintas y hay que indicarle al micro como van a trabajar. Y como te dice Bruno, por defecto si no se indica lo contrario se configuran como entradas analógicas, en este caso en particular son asignadas mediante los conmutadores internos al modulo “comparador analógico”, ya que este micro no tiene conversor analógico digital. Por eso es fundamental antes de ponerse a trabajar ojear el datasheet del microcontrolador.

Alldigital 'Los pin I/O digitales
trisa=255
trisb=0
leer var porta.1
npulsos var word
portb=0
lee:
  if leer=1 then
    npulsos=255
  else
    npulsos=16
  endif
  portb=npulsos
goto lee
end
« Última modificación: 24 de Junio de 2009, 08:59:20 por dogflu66 »
Saludos desde Granada, España.

Desconectado diegostreetbob

  • PIC12
  • **
  • Mensajes: 51
Re: solucionado Stack overflow,...pero nuevo problema ayuda por favor.
« Respuesta #3 en: 24 de Junio de 2009, 16:25:25 »
Gracias por tu ayuda, pero he probado con alldigital y sigue sin funcionar en el 16f628, simulando con proteus.