TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: joebar en 30 de Octubre de 2006, 20:39:11

Título: ¿Que falla?... 12F675.... Ya no falla, jejejeje.
Publicado por: joebar en 30 de Octubre de 2006, 20:39:11
Hola a todos. Echadme una mano por favor, la aplicación es super sencilla, se trata de encender un led durante 0,7sg si tenemos una entrada y otro led igual si tenemos otra entrada diferente, na más, pero al simular en el Proteus no hace absolutamente nada, no da error pero no enciende las salidas...

Os espero, muchas gracias y saludos. ;)


(http://i26.photobucket.com/albums/c134/JoeBar35/intermitentescodigo.jpg)


(http://i26.photobucket.com/albums/c134/JoeBar35/intermitentes.jpg)
Título: Re: ¿Que falla?... 12F675
Publicado por: Veguepic en 30 de Octubre de 2006, 21:45:01
No se porque has puesto trisio=%000011 con comilla, de esta manera no lo ejecuta.

Tambien te faltan definir varias cosas:

GPIO = 0            ' inicializa el registro gpio
TRISIO = 0         ' configura los pines gpio como salida
CMCON1 = 7       ' desactiva los comparadores
ANSEL = 0          ' desactiva AD
VRCON = 0         ' voltaje de referencia

Es mas facil que te podamos ayudar si pegas el codigo y no una imagen de el, mejor aun con el archivo de proteus para probarlo directo.

Suerte
Título: Re: ¿Que falla?... 12F675
Publicado por: Chaly29 en 31 de Octubre de 2006, 00:17:03
Hola joebar, más halla de lo comentado por veguepic, fijate que en las sentencias "IF" estas usando el registro TRISIO en ves del correcto que sería GPIO, por lo tanto debería quedar algo así:

if gpio.0=1 then goto derecha
end if
if gpio.1=1 then goto izquierda
end if

Espero te sea de ayuda.

Un saludo.

Atte. CARLOS.
Título: Re: ¿Que falla?... 12F675
Publicado por: LordLafebre en 31 de Octubre de 2006, 00:24:07
Hola:

Como dice Carlos, estas utilizando el registro equivocado para los condicionales, Veguepic, creo que no lo tiene definido en el codigo porque MKB permite hacerlo cuando se esta creando el nuevo proyecto, sale una ventana en la cual se debe hacer las configuraciones necesarias de algunos registros y fusibles.
Título: Re: ¿Que falla?... 12F675
Publicado por: Veguepic en 31 de Octubre de 2006, 01:23:29
Hola Gio:

A mi al principio solo me aparecen los Fuses (MCLR, CP, etc) pero nada sobre los comparadores, el AD o el voltaje de referencia. Sera que me falta activar algo?

No estoy seguro pero creo recordar haber leido que si no desactivas los comparadores o el AD estos por defecto estan activos, de repente estoy en un error y se me han cruzado los cables.  :(

Saludos
Título: Re: ¿Que falla?... 12F675
Publicado por: LordLafebre en 31 de Octubre de 2006, 02:10:36
No estoy seguro pero creo recordar haber leido que si no desactivas los comparadores o el AD estos por defecto estan activos, de repente estoy en un error y se me han cruzado los cables.  :(

Hola:

Asi es, hay que desactivarlos, y parece ser que me apresure en decir lo otro, ya que solo veo los fusibles que tu dices, no he utilizado mucho MKB, entonces se debera hacer como lo mencionas en tu post anterior.

Título: Re: ¿Que falla?... 12F675
Publicado por: joebar en 31 de Octubre de 2006, 05:13:57
No se porque has puesto trisio=%000011 con comilla, de esta manera no lo ejecuta.

Lo puse entre comillas para asignar las entradas y salidas directamente como puedes ver unas líneas más abajo, lo probé así ya que tampoco me funcionó el trisio=%000011.

Gracias por tu ayuda y comentario. Saludos. ;)
Título: Re: ¿Que falla?... 12F675
Publicado por: BrunoF en 31 de Octubre de 2006, 05:24:18
¿Son necesarios esos end if? ¿Si pones la condicion verdadera (then) en la misma linea del IF, deben ir los end if?

Lo digo desde la lejana llanura, alla por el VB, ya que casi nunca he programado en PBP, menos en MKB.

Saludos.
Título: Re: ¿Que falla?... 12F675
Publicado por: joebar en 31 de Octubre de 2006, 05:26:20
¿Son necesarios esos end if? ¿Si pones la condicion verdadera (then) en la misma linea del IF, deben ir los end if?

Lo digo desde la lejana llanura, alla por el VB, ya que casi nunca he programado en PBP, menos en MKB.

Saludos.

Sí que son necesarios, ya que si no los pone te da un error al compilar...

Saludos. ;)
Título: Re: ¿Que falla?... 12F675
Publicado por: joebar en 31 de Octubre de 2006, 05:32:44
Hola joebar, más halla de lo comentado por veguepic, fijate que en las sentencias "IF" estas usando el registro TRISIO en ves del correcto que sería GPIO, por lo tanto debería quedar algo así:

if gpio.0=1 then goto derecha
end if
if gpio.1=1 then goto izquierda
end if

OK, modificado pero nada de nada...

program Intermitentes
trisio=%000011

main:
gpio.4=0
gpio.5=0
if gpio.0=1 then goto derecha
end if
if gpio.1=1 then goto izquierda
end if
goto main

derecha:
gpio.4=1
delay_ms(700)
gpio.4=0
goto main

izquierda:
gpio.5=1
delay_ms(700)
gpio.5=0
goto main

end.

x Veguepic: No se como pegar el código desde Proyeus, si me ilustras te lo agradecería. :)

Os pongo también la configuración a ver si ahí veis algo que esté mal, esta misma aplicación la he realizado en 16F84 y funciona bien, ya veis que no tiene absolutamente nada de complicado pero algo me está fallando con el 12F675, no se, a ver que me podéis decir...

(http://i26.photobucket.com/albums/c134/JoeBar35/intermitentesconfig.jpg)
Título: Re: ¿Que falla?... 12F675
Publicado por: navaismo en 31 de Octubre de 2006, 13:00:14
Hola en el TRISIO nadamas por si las dudas pon TRISIO=%001011, ya que GPIO.3 es entrada unicamente y prueba haber con el INTRC_OSC_NOCLKOUT para ver si es el crystal, ya van 2 que a mi no me funcionan.

Y por cierto alguna vez en MKB intente sacar las rutinas del main y me botaba un error o un warning y nunca jalaban los programas trata hacer esto

Código: [Seleccionar]

program Intermitentes

subprocedure derecha()
  gpio.4=1
  delay_ms(700)
  gpio.4=0
end sub

subprocedure izquierda()
  gpio.5=1
 delay_ms(700)
 gpio.5=0
end sub


main:
trisio=%001011
cmcon1 = 7
ansel    = 0
vrcon   = 0
gpio.4   = 0
gpio.5   = 0

x:
   if gpio.0=1 then
    derecha()
    end if

  if gpio.1=1 then
    izquierda()
  end if
goto x
end.


se me olvidaba en los registros pon mclr en off o en on si lo pones en on ponle una resistencia de 10k a vdd
Título: Re: ¿Que falla?... 12F675
Publicado por: joebar en 31 de Octubre de 2006, 13:26:33
Hola Navaismo, gracias por tu ayuda, ese código no funciona en MKB, me da errores por todos lados, voy corrigiendo los bucles procedures con gosub/return y me da errores en CMCON1, ANSEL y VRCON, no los reconoce, dice que no se han declarado... :x, joer, mira que es sencillo el programita ¿eh?... pues no hay de echarlo andar...

Saludos. ;)
Título: Re: ¿Que falla?... 12F675
Publicado por: navaismo en 31 de Octubre de 2006, 13:42:10
Copiste y pegaste el codigo????? porque si lo hiciste mkb no reconoce nada pegando tendrias que teclearlo uno a uno y en los procedimientos debe llevar un espacio entre sub procedure.

Lo acabo de compilar y el unico error que encontro es que no tengo una dichosa libreria lo cual hace que no genere nada. jijijiji, deja veo si puedo ver si se compila bien
Título: Re: ¿Que falla?... 12F675
Publicado por: navaismo en 31 de Octubre de 2006, 13:49:26
Ya esta joebar ya funciona solo quita el uno de cmcon, osea reemplaza cmcon1 por cmcon y listo si te sale un error de una libreria no encontrada, porque a mi me salio solo comenta la linea del include de la libreria que afecta si no pues te lo compilara bien.

aqui te dejo el codigo que me funciono:

Código: [Seleccionar]
program interm

sub procedure DERECHA()
 GPIO.4 = 1
 DELAY_MS(700)
 GPIO.4 = 0
 DELAY_MS(700)
END SUB

SUB PROCEDURE IZQUIERDA()
 GPIO.5 = 1
 DELAY_MS(700)
 GPIO.5 = 0
 DELAY_MS(700)
END SUB

MAIN:
TRISIO=%001011
CMCON = 7
ANSEL  = 0
VRCON  = 0
GPIO.4 = 0
GPIO.5 = 0
 X:
   IF GPIO.0 =1 THEN
    DERECHA()
   END IF
   
   IF GPIO.1 =1 THEN
    IZQUIERDA()
   END IF
 GOTO X
END.

recuerda tendras que teclearlo porque a varios nos salen errores acerca del copy&paste

saludos
Título: Re: ¿Que falla?... 12F675
Publicado por: joebar en 31 de Octubre de 2006, 14:35:48
Pues después de escribir de nuevo el programa, renombrado y configurado en el Proteus para que funcione con el hex correspondiente, na de na compañero, he estado tocando los fusibles (creo que se llaman así) en el MKB incluso desactivandolo todos y en el Proteus no se enciende ni una salida  :?, me está ganando este programa, el caso es que en el 16F84A corre perfectamente...

Te pongo aquí el código (que es el mismo que el tuyo) es un copy/paste de lo escrito en el MKB, muchas gracias por tu ayuda y si se te ocurre algo más por favor... por aquí andaré.  :P


program Intermitente3

sub procedure derecha()
gpio.4=1
delay_ms(700)
gpio.4=0
delay_ms(700)
end sub

sub procedure izquierda()
gpio.5=1
delay_ms(700)
gpio.5=0
delay_ms(700)
end sub

main:
trisio=%001011
cmcon=7
ansel=0
vrcon=0
gpio.4=0
gpio.5=0

x:
  if gpio.0=1 then
   derecha()
  end if

  if gpio.1=1 then
   izquierda()
  end if
goto x

end.

Saludos. ;)
Título: Re: ¿Que falla?... 12F675
Publicado por: navaismo en 31 de Octubre de 2006, 14:56:03
Pues el que te pase me funcino perfectamente..... ya se configura los fuses asi:

_CPD_OFF        activado
_CP_OFF          activado
_MCLRE_OFF    activado
_WDT_OFF       activado
_INTRC_OSC_NOCLKOUT activado

solo activa esas 5 casillas y para que veas que no te miento checa esto:

 el video de que si funciona  (http://rapidshare.com/files/1449334/checa.rar.html) :mrgreen:

por cierto al activar el intosc no necesitas un cristal externo
Título: Re: ¿Que falla?... 12F675
Publicado por: joebar en 31 de Octubre de 2006, 15:31:36
Navaismo te has pasado tres pueblo.... un video y todo para demostrar que funciona, no hombre no hace falta, con tu palabra sobra... y con tu ayuda MÁS AÚN......... YA SI FUNCIONA!!!!  :-/ :-/

El problema estaba en que activaba el _XT_OSC, al poner los fuses que me dices a funcionado a la primera.

MUCHISIMAS GRACIAS COMPAÑERO

¿Donde puedo encontrar información de la función de estos fuses?

Saludos. ;)
Título: Re: ¿Que falla?... 12F675
Publicado por: navaismo en 31 de Octubre de 2006, 15:37:46
En el datasheet del Pic que uses, ahi viene todo de todo sobre el pic y sus registros

Y que bueno que ya te funcione bien; lo del video fue solamente para que no te desanimaras  y quizas con el vieras un error que podrias haber tenido, no era con otra intencion.

Saludos y aqui seguimos para ayudarnos entre todos
Título: Re: ¿Que falla?... 12F675
Publicado por: joebar en 31 de Octubre de 2006, 16:09:01
Bueno pues gracias de nuevo y voy a explicar para que quiero esta aplicación tan tonta, pero que es una aplicación que voy a montar en mi coche, resulta que me dejaron un coche que con solo dar un toque al mando del intermitente se mantiene el intermitente encendido (bueno encendiendo y apagando, jejejeje) durante 4 intermitencias (cuestión de ajustar el tiempo en el programa), suficientes para indicar un adelantamiento o cambio de carril sin la necesidad de mantener bloqueado el mando del intermitente para la dirección deseada y desbloquear después.

Se que es una chorrada, pero yo que me llevo casi todo el día en carretera adelantando camiones cualquier día me quedo con el mando en la mano, así de esta forma solo doy un toque para la dirección que quiero y los intermitentes lucen lo necesario para indicar la maniobra.

 :D :D , mucho diréis que vaya la paliza que he dado con el dichoso programita para esta bobada, pero es que me hace ilusión, la verdad es que si no lo hubiera conseguido con el 12F675 lo hubiese hecho con el 16F84A, que tengo uno y ya lo probé, funcionando claro.  :P

Saludos. ;)
Título: Re: ¿Que falla?... 12F675
Publicado por: navaismo en 31 de Octubre de 2006, 16:19:51
Pues no creo que sea una aplicacion tan x como dices, ademas cualquier programa por pequeño que sea a uno le da un tremenda satisfaccion.

Esperamos ver los resultados de tu trabajo
saludos