Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

01/06/2011 #1


Una ayudita con 18f2550 y PBP
Hace bastante tiempo que no programo, pero me he metido muchisimas horas de ensamblador para el 16f84, resulta que he decidido volver, y empezar por este lenguaje, he hecho un programa muy facilito, led al portb.5 y led al portb.2:

define osc 20
TRISA = %01101

inicio:
HIGH PORTA.2
PAUSE 5000
HIGH PORTA.5
pause 5000
LOW PORTA.2
PAUSE 5000
LOW PORTA.5
PAUSE 10000
GOTO INICIO
end

Bien lo primero es que los tiempos no los calcula bien, imagino que sera por el reloj de 20 Mghz, y despues primero enciende el led 2 despues apaga el 2 y enciende el 5 ????? que raro yo no le he dicho que apague el 2, despues apaga el 5 y se quedan los dos apagados.

Nose que esta pasando???
13/02/2013 #2


AYUDITA
bueno lo que sucede en tu forma de realizar tu programa es que enciendes el puertoA.2 a solo 5 segundos pasando los 5 segundos por logica se va apagar y luego enciendes el puertoA.5. para que te permanesca encendido el puertoA.2 aunmenta el tiempo del pause a 10000 para que sean 10 segundos y posteriormente se apagarn juntos, otra forma de realizar esto puedes usar un gosub para ahorrarte esos pause's ya que durante ese tiempo el pic se muere y revive, saludos
17/02/2013 #3


Es un ejemplo de programa,ya se que hay maneras de hacerlo multitarea. No entiendo muy bien eso de que apago el les tras 5 segundos en teoría debería quedarse el le encendido hasta que forzara con el los cosa que no hace, apaga directamente el les cuando cambio el otro.
He probado con diferentes pics y lo hace con todos
18/04/2013 #4


Bueno pues despues de mucho trastear ya encontre mi problema, lo dejo reflejado por si a alguien mas le pasa.

El problema viene de usar para direccionar el puerto, el registro porta (portb, etc...) este registro hace una escritura directa en el puerto, el proceso que tiene esta escritura, es leer el estado actual de todo el puerto, modificar el valor y volver a escribir, por lo que puede darse el caso de que si tenemos dos escrituras seguidas, pues algun bit del registro coja un valor 0 por no haber terminado de escribir los valores anteriores.

La solución, en vez de usar el registro PORTA, usar el LATA, de esa manera no falla pues el micro hace lo que tiene que hacer aunque tenga que esperar algun microsegundo porque no este terminado de escribir la instrucción anterior.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.