Autor Tema: pic 16f877  (Leído 3271 veces)

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

Desconectado paco1980

  • PIC16
  • ***
  • Mensajes: 129
pic 16f877
« en: 14 de Abril de 2007, 12:48:01 »
¿que debo hacer para poner el pic 16f877 en bajo consumo?
le introduzco el SLEEP(), pero no me baja el consumo
tengo 1,5 mA y necesito menos consumo

Desconectado paco1980

  • PIC16
  • ***
  • Mensajes: 129
Re: pic 16f877
« Respuesta #1 en: 14 de Abril de 2007, 15:12:01 »
otra preguntita, puedo salir del sleep con el timer0?
si no es así, como puedo contar tiempo usando sleep?
gracias

Desconectado microman

  • PIC10
  • *
  • Mensajes: 17
Re: pic 16f877
« Respuesta #2 en: 18 de Abril de 2007, 17:37:21 »
A la primera consulta te responderia que depende del cto. que tengas alrededor de tu micro. Es lo primero que debes de mejorar para que bajes el nivel de consumo. Dependiendo de los requerimientos de tu proyecto puedes bajar el consumo bajando la freq. del sistema. si utilizas un cristal de 20 MHz y pudiendo utilizar uno de 10 MHz es lo primero que debes cambiar.

La segunda consulta lo podes ver en el datasheet del 16f877, pero siendo que en el modo sleep se deshabilita el clock del sistema es evidente que el timer0 y los otros timers se queden sin referencia. Para realizar cuentas de tiempo con el sleep y dependiendo de la precisión y periodo que requieras podrias "contar" habilitando el watch dog. O utilizar otro cto. externo para servir de referencia  tu timer0.

Espero te sirva...

Saludos

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: pic 16f877
« Respuesta #3 en: 18 de Abril de 2007, 18:13:44 »
Entonces todas las señales de reloj en el modo Sleep quedan deshabilitadas?

No me queda claro lo que dice la data sheet en cuanto a la interrupcion por el timer1 en el modo sleep, si alguien lo podria explicar se lo agradeceria
El conocimiento se consigue a base de esfuerzo...

Desconectado fartet

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 145
Re: pic 16f877
« Respuesta #4 en: 18 de Abril de 2007, 20:54:43 »
Creo entender que si el Timer1 esta configurado para trabajar con una señal de origen externo como contador asíncrono entonces no queda deshabilitado, pudiéndose usar su interrupción asociada para salir de sleep. De todas formas esperemos que alguien con más conocimientos lo confirme o lo refute.


saludos

Desconectado paco1980

  • PIC16
  • ***
  • Mensajes: 129
Re: pic 16f877
« Respuesta #5 en: 19 de Abril de 2007, 08:16:00 »
Mientras más vueltas le doy y mas información busco menos me entero.
Hay gente que dice que el WDT resetea el pic (estamos hablando en sleep), hay otra que dice que solo sale del sleep y ejecuta la instrucción siguiente.
Se llegó a aclarar este tema.
Vamos a ver. Se supone que si yo implemento un cuarzo con sus condensadores para el timer 1, me va a salir del sleep cuando se desborde?
es mi gran duda, y mira que es importante para trabajar a bajo consumo cuando tienes que controlar tiempos.
Y la refinitiva. Cuando poneis un pic en modo sleep os baja el consumo a microamperios como dice el datasheet?. Es que yo no he notado ningún cambio.
Puede ser que no baste con poner sleep()?, Que haya que hacer más pasos?.
Un saludo.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: pic 16f877
« Respuesta #6 en: 19 de Abril de 2007, 09:05:35 »
El 16F877 no es precisamente el mejor amigo del bajo consumo.

Has considerado usar otro micro? Un 16F887 por ejemplo?

o moverte a los 18F y usar un micro con el que puedas tener control total sobre su clock y llevarlo a 32KHz para rutinas de retardo largas?

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 microman

  • PIC10
  • *
  • Mensajes: 17
Re: pic 16f877
« Respuesta #7 en: 19 de Abril de 2007, 12:59:14 »
El modo sleep deshabilita el clock del sistema....esto quiere decir que cualquier cto. que tome como referencia al clock central queda inhibido, y esto incluye a todos los timers.
Efectivamente si utilizas un clock externo independiente a tu clock del sistema podras realizar cuentas aun estando en modo sleep solo que ahora tu timer estara config como contador no como timer en si.  Y  tb. se realizará la interrupción ya que el modo sleep no deshabilita ningun flag de interrupcion por si misma.
Yo he realizado proyectos en donde colocaba mi micro en modo sleep y podia levantarlo mediante interrupcion en el pin RBO de la misma forma tb con el wacht dog. Si bien la fuente de interrupcion es distinta el sistema de generación de la interrupcion es la misma. En tu caso una vez desbordado el contador (timers) se pondrá en alto la bandera corresp. al timer y si tenes habilitado el GIE se dará la interrupción.

En cuanto al consumo debes de mejorar tu cto. es lo principal. Prueba bajar en lo mas que puedas la freq. de operación. Ahora bien si utilizas un clock externo para tu timer tendras un consumo extra...deberas tomar una decision en base a costo vs beneficio.
Espero haber sido mas claro.

Saludos

Desconectado paco1980

  • PIC16
  • ***
  • Mensajes: 129
Re: pic 16f877
« Respuesta #8 en: 26 de Abril de 2007, 13:57:44 »
gracias por vuestra explicación. Voy a probar con el oscilador interno, ya que nunca lo he programado así.
Una pregunta, en el datasheet, cuando miro la tabla de consumos, me aparece rc_run mode y rc_idle mode. me podeis decir que diferencia de funcionamiento hay entre estos dos y como se programan uno y otro?
Nota: Si vuestra explicación se basa en C, mejor.
Muchas gracias.

Desconectado felipito

  • PIC10
  • *
  • Mensajes: 19
Re: pic 16f877
« Respuesta #9 en: 26 de Abril de 2007, 23:39:37 »
Otra opciòn es utilizar un pin del uC como entrada de una señal que hace que el microcontrolador entre en una subrutina, esta subrutina coloca en cero todos los puertos de salida y se encierra en un loop del cual sale cuando cambie la señal mencionada inicialmente, los timers siguen funcionando y el consumo es bajo.
                           Saludos


 

anything