Autor Tema: el bsf es permanente?  (Leído 5119 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado bones18

  • PIC12
  • **
  • Mensajes: 54
Re: el bsf es permanente?
« Respuesta #15 en: 27 de Septiembre de 2006, 11:14:17 »
gracias por todas vuestras respuestas

si, cada led acompaña una resistencia de 100 ohms

adios

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: el bsf es permanente?
« Respuesta #16 en: 27 de Septiembre de 2006, 11:58:28 »
gracias por todas vuestras respuestas

si, cada led acompaña una resistencia de 100 ohms

adios

Ponle una resistencia de 470 ohms.

La razón es la siguiente: 

Maximum output current sourced by any I/O pin  : 25 mA
Maximum current sunk by PORTA, PORTB, and PORTE (combined) (Note 3) : 200 mA

Le estas poniendo 5V / 100ohms = 50mA

Con suerte no quemaste el pin.


Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: el bsf es permanente?
« Respuesta #17 en: 27 de Septiembre de 2006, 21:37:09 »
holas saludos, yo he usado siempre 150 Ohm (33.3mA de corriente de salida) con los led como salidas de cualquier pic que he usado y siempre ha ido de maravilla y no se ha quemado nada, no veo porqeu se quemara algo en el pic, el que deberia quemarse deberia ser el led, bueno corrijanme si me equivoco, es lo que pienso con la experiencia que he tenido con las resistencias en los leds

y bueno creo que el bsf es permanente, no hay motivo por el cual cambie de valor asi por asi (si no, no sabriamos con seguridad en que banco estamos por ejemplo), algo incorrecto en el codigo hay, talvez alguna configuración, o me temo que podria ser falla del pic.

conclusión el bsf es permanente, cierto?? a menos qeu se le de un bcf, bueno eso ya es otra historia, mientras no se toque el puerto con instrucciones de borrado, el bsf, para mi es permanente.
.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: el bsf es permanente?
« Respuesta #18 en: 27 de Septiembre de 2006, 22:09:05 »
Crn.
El registro PORTA es un registro que, al igual que la mayoria de los registros del PIC, es escribible y leible.
El valor del bit0 del registro PORTA, configurado como salida, sólo podrá cambiar de valor cuando una instrucción afectete al bit o aal registro PORTA entero.
Por lo tanto, muchas instrucciones pueden afectar al bit 0 del PORTA.

Instrucciones que afectan escritura al registro PORTA entero:

addwf PORTA,F
andwf PORTA,F
clrf   PORTA
comf  PORTA,F
decf PORTA,F
decfsz PORTA,F
incf PORTA,F
incfsz  PORTA,F
iorwf PORTA,F
movwf PORTA
rlf PORTA,F
rrf PORTA,F
subwf PORTA,F
swapf PORTA,F
xorwf PORTA,F



Instrucciones que afectan escritura solo al bit0 del registro PORTA:

bsf      PORTA,0
bcf     PORTA,0

Por lo tanto:
Hasta que no ocurra instruccion alguna o reset que afecte al bit0 del registro PORTA, el bit0 del registro PORTA permanecera con el ultimo valor que le asignaste.

Ejemplo:
bsf   PORTA,0
nop ;aqui PORTA,0 = 1
nop ;aqui PORTA,0 = 1
nop ;aqui PORTA,0 = 1
clrf PORTB ;aqui PORTA,0 = 1
bsf PORTA,1 ;aqui PORTA,0 = 1
movlw 0x01 ;aqui PORTA,0 = 1
movwf PORTA ;aqui PORTA,0 = 1
nop ;aqui PORTA,0 = 1
nop ;aqui PORTA,0 = 1
clrf PORTA ;aqui PORTA,0 = 0

P.D.:
En resumen, obviamente que todas las instrucciones que afectan a registros GPRs(General Purpose Registers) seran permanentes, hasta que una nueva instruccion o un reset cambien su estado.
¿Imaginas el infierno que seria si luego de determinado tiempo, los registros volvieran automaticamente a su valor inicial?
Seria casi improgramable!

Saludos.



« Última modificación: 27 de Septiembre de 2006, 22:11:11 por BrunoF »
"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 maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: el bsf es permanente?
« Respuesta #19 en: 27 de Septiembre de 2006, 22:13:44 »
holas saludos, yo he usado siempre 150 Ohm (33.3mA de corriente de salida) con los led como salidas de cualquier pic que he usado y siempre ha ido de maravilla y no se ha quemado nada, no veo porqeu se quemara algo en el pic, el que deberia quemarse deberia ser el led, bueno corrijanme si me equivoco, es lo que pienso con la experiencia que he tenido con las resistencias en los leds

Mi cálculo no está completo fue solo una aproximación.  El cálculo completo sería

5V - 1V (caída led, pudiera ser mayor o menor) = 4 V

4V / 150 = 26 mA


Si la caída de tu led es menor a la mencionada o si le quieres sacar mas que 25 mA, tal vez lo puedas hacer pero no es recomendable ni mucho menos.

Puede que se te queme el pic o el led, pero en general si lo usas para manejar cualquier tipo de salida te aseguro que terminarás quemando el pic.

Usar un pic más allá de sus posibilidades, y sobre todo en el consumo de corriente, de ninguna manera me parece la forma de "hacer uso de" , podríamos estar horas pero si quieres hacer un diseño que te permita repetibilidad no me pondría a diseñar algo superando los límites que me dice el fabricante.

El día de mañana respetan a rajatabla esos límites y tu aplicación podría dejar de funcionar o bien dañarías el pic.


y bueno creo que el bsf es permanente, no hay motivo por el cual cambie de valor asi por asi (si no, no sabriamos con seguridad en que banco estamos por ejemplo), algo incorrecto en el codigo hay, talvez alguna configuración, o me temo que podria ser falla del pic.

Es lo que tratamos de develar.

conclusión el bsf es permanente, cierto?? a menos qeu se le de un bcf, bueno eso ya es otra historia, mientras no se toque el puerto con instrucciones de borrado, el bsf, para mi es permanente.

El bsf en realidad hace una lectura/modificación/escritura del registro con el que estás trabajando.

En el caso de un puerto, puede ser que hayas hecho un bsf de otro pin del mismo puerto, y que en el paso siguiente hagas un bsf de otro pin del mismo puerto.

Si el primer pin tiene una carga importante, que le demore más microsegundos que lo que tarda una instrucción en ejecutarse, al querer hacer el segundo bsf el estado del pin no será 1, sino 0 y entonces el bsf no produjo el resultado esperado.

Si quieres mayor información del tema, te sugiero que busques en el mismo foro , algunos posts sobre los registros LATx .

Saludos

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)