Autor Tema: ayuda con instruccion sleep()  (Leído 5739 veces)

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

Desconectado quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
ayuda con instruccion sleep()
« en: 02 de Agosto de 2006, 09:18:34 »
hola :

1)Tengo un inconveniente, ypo he implementa un oft para un aparato de medion de campo.
Pero necesito que despues de cierto iempo que se yo unos 2 minutos entre en bajo consumo, para lo cual probe implementando un contador de cierto valo (no es necesario que sea preciso en este caso)
y logro que el aparato deje de medir , pero mi idea esque el usuario al presionar cualquier tecla resetee el sleep() y siga funcionando normalmente.
ya estoy usando el puerto b para el display . 

¿como podria implementarlo?

2) el proteus 6.9 no me simula paso a paso a pesar de que lo he configurado para ello y tambien de que cargue el archivo coff en el pic ,  no consigo que simule de esa manera para ver como se desarrolla la actividad en el soft.

¿Alguien tendria alguna sugerencia?
Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ayuda con instruccion sleep()
« Respuesta #1 en: 02 de Agosto de 2006, 12:12:02 »
hola :

1)Tengo un inconveniente, ypo he implementa un oft para un aparato de medion de campo.
Pero necesito que despues de cierto iempo que se yo unos 2 minutos entre en bajo consumo, para lo cual probe implementando un contador de cierto valo (no es necesario que sea preciso en este caso)
y logro que el aparato deje de medir , pero mi idea esque el usuario al presionar cualquier tecla resetee el sleep() y siga funcionando normalmente.
ya estoy usando el puerto b para el display . 

¿como podria implementarlo?

2) el proteus 6.9 no me simula paso a paso a pesar de que lo he configurado para ello y tambien de que cargue el archivo coff en el pic ,  no consigo que simule de esa manera para ver como se desarrolla la actividad en el soft.

¿Alguien tendria alguna sugerencia?


quirogaareal que pic usas?  Cada pic tiene diversos "eventos" que lo despiertan del modo sleep.  Hay algunos casos en que incluso se suele hacer un timer que encienda al micro cada X tiempo y si no hay nada que atender (esto lo decide tu software) vuelve a sleep.  No es lo óptimo pero si no quieres usar el Puerto B para el wake-up entonces habría que hacer algo por el estilo.  De todas formas esta técnica si te reducirá el consumo respecto a tenerlo siempre andando.

Si quiere reducir el consumo al máximo y es una prioridad en tu diseño, te sugiero también analices la posibilidad de usar micros con nanoWatt technollogy.  Estos si, consumen bastante menos que los tradicionales yendose a sleep.

- 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 quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: ayuda con instruccion sleep()
« Respuesta #2 en: 02 de Agosto de 2006, 18:45:39 »
Perdon mauricio tenes razon uso el 16f876
Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ayuda con instruccion sleep()
« Respuesta #3 en: 02 de Agosto de 2006, 23:59:01 »
Perdon mauricio tenes razon uso el 16f876

Ok, ahora que sabemos de qué pic hablamos, te paso a comentar mis sugerencias al respecto.

Primero que todo, es una lástima que no quieras usar el puerto B, yo que tu sí lo usaria.  En estos pics, el puerto B está especialmente diseñado para ser interfaz de un teclado, de ahí el que tengan tantas opciones como las interrupción por detección de cambio en el puerto o bien los weak pull-ups.

Un simple evento en este puerto puede despertar a tu pic del sleep.  Es la forma más simple de resolver el problema.


Ahora bien, si quieres hacer 'otra' cosa, no hay tantas opciones.  Casi todos los módulos se apagan durante el modo sleep, excepto la usart slave en modo síncrono (que no creo que la uses).

1) El AD
2) El watchdog
3) El timer 1, en modo asíncrono con oscilador externo

1) El uso del A/D es algo obvio y no se si lo deba explicar.  Tampoco lo veo práctico andarlo apagando constantemente.

2) Este es algo complicado.  Puedes programar el watchdog para un tiempo que tu desees (en saltos de 18 mseg hasta el máximo valor de prescaler) , entonces mandas al pic a dormir y lo haces despertar cuando se produce el watchdog.  Esto hace resetear a tu pic, pero hay un par de registros que te indican la causa del 'start' del pic (STATUS y PCON).  Entonces tu rutina debería verificar eso y si es por un watchdog entonces deberás ir directo a fijarte si está la tecla presionada y si no lo está, volverlo al sleep.   
Esto además te puede dar problemas con otras rutinas ya que deberás tener en cuenta que el timer del watchdog corre todo el tiempo y no es posible detenerlo.


3) Para usar el timer 1, deberías generar pulsos con el teclado que deberían hacer desbordar al timer.  Esto no lo veo muy práctico, ya que o bien haces al usuario pulsar algunas veces (dependiendo de donde hayas dejado al timer antes de apagarlo) o bien necesitaras algún circuito que te genere pulsos a partir de la pulsación de la tecla.


Expuestas las alternativas.... tu decides si sigues firme en no usar el puerto B y decidirte por algunas de las opciones.


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 quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: ayuda con instruccion sleep()
« Respuesta #4 en: 03 de Agosto de 2006, 07:55:53 »
Si realmente tenes razon con lo del puerto B es la mejor alternativa tal cual tu dices, y de todos modos tengo el puerto C completamente libre par pasar el display ahi . Dado que el prototipo ahora debe ser cambiado y debemos montar el hardware  de nuevo. Entonces opto por el puerto B.
De todos modos si te interesa fijate unos post mas abajop de este que dicen medidor de presion  ahi esta el programa y el circuito.

Una opcion no se si considerarla tonta pero si con parte de las entradas que me sobran activar i desactivar 2 reles de alimentacion + y -  esoi que te pareceria segun tu experiencia?

 
Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: ayuda con instruccion sleep()
« Respuesta #5 en: 03 de Agosto de 2006, 07:59:28 »
Ahh me olvidaba el circuito de ahi elimine elpcf 8591,  ya que me pase de un pic mas chico al 16f876 asi que ya no uso interrupcion de timer 0  solo uso 2 pines del conversor del pic sin ningun tipo de interrupcion.......hasta ahora. :mrgreen:



Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ayuda con instruccion sleep()
« Respuesta #6 en: 03 de Agosto de 2006, 09:45:12 »
Ahh me olvidaba el circuito de ahi elimine elpcf 8591,  ya que me pase de un pic mas chico al 16f876 asi que ya no uso interrupcion de timer 0  solo uso 2 pines del conversor del pic sin ningun tipo de interrupcion.......hasta ahora. :mrgreen:

Me alegro que hayas optado por la opción del puerto B, realmente te la estabas complicando si querías descartarlo a toda costa  :mrgreen:   .  Tu planteo iba rumbeado para el lado más complicado... algo así como querer hacer una conversión A/D pero que tengas los pines de A/D usados para otra cosa, jeje  :)

Para hacer referencia más facilmente a tu post anterior, es mejor hacer un link como este: Medidor de Presión así no tienes que fijarte si está mas abajo de esta página o en 3 páginas después.

No tengo el proteus aquí como para poder ver eso que me comentas, puedes subir un jpg de tu nuevo esquemático? No he entendido bien que dices respecto a los relés.

« Última modificación: 03 de Agosto de 2006, 09:46:48 por maunix »
- 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 quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: ayuda con instruccion sleep()
« Respuesta #7 en: 03 de Agosto de 2006, 11:50:14 »
Perfecto entendido lo del link.
Con respecto a lo de los reles , como te comente antes estamos en pleno cambio de hardware, eso lo voy a discutir con un ingeniero amigo de la utn con el cual estamos haciendo esto, el viene los sabados, entonces apenas tenga el circuito te lo paso a ver que sugerencia me podrias hacer.
Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ayuda con instruccion sleep()
« Respuesta #8 en: 03 de Agosto de 2006, 15:00:47 »
Perfecto entendido lo del link.
Con respecto a lo de los reles , como te comente antes estamos en pleno cambio de hardware, eso lo voy a discutir con un ingeniero amigo de la utn con el cual estamos haciendo esto, el viene los sabados, entonces apenas tenga el circuito te lo paso a ver que sugerencia me podrias hacer.


Me mareé, ¿qué es entonces lo que tengo que ver en esta imagen?  :shock: :shock:
- 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 pelusac

  • PIC16
  • ***
  • Mensajes: 118
Re: ayuda con instruccion sleep()
« Respuesta #9 en: 03 de Agosto de 2006, 15:29:21 »
Podrias colgar el código por favor, creo que sería de mucha utilidad para los integrantes del foro.
Gracias y saludos.

Desconectado quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: ayuda con instruccion sleep()
« Respuesta #10 en: 03 de Agosto de 2006, 18:38:42 »
Maunix :

Ahi te puse la foto que me habias pedido del circuito que estoy usando para simular ...hasta ahora.
Cambie la libreria del lcd para poder usa el lcd en el puerto c  ya que sino me daba error.
1)En realidad todo se reduce a como podria colocarle el codigo sleep() par aque entre en bajop consumo despues de cierto tiempo.
2) lo del rele era otra opcion que habia pensado , pero esa tengo aun ...que verla.
3) el circuito que te coloque ahi es el que hice hoy pasando el lcd al puerto c para poder implementar el bajo consumo y cuando este en ese estado despertarlo con la instruccion sleep desde el puerto B tal y como vos me lo habias sugerido.

Pelusac :

Aqui te pongo el codigo. Pero en realidad lo he estado publicando durante varias semanasa a medida que iba avanzando.
de todos modos aunque resulte redundante aqui esta.

este es el link que he estado publicando hasta unos dias atras.

http://www.todopic.com.ar/foros/index.php?topic=12416.0




////////////////////////////////////////////////////////////////////////////////////
//
// 8/07/06 - Medidor de presion!!! - p+ y p- y ademas posee tabla de conversion.
//
// Programa: Manejo del dispositivo PCF8591 en modo A/D
// Version: 0.0
//
// Dispositivo: PIC 16F628 Compilador: CCS vs3.245
// Entorno IDE: MPLAB IDE v7.31 Simulador: Proteus 6.7sp3
//
// Software con Modificaciones
// METER OTRO SENSOR PARA HACER PRESION DIFERENCIAL O CONSEGUIR UN SENSOR QUE HAGA AMBAS
//////////////////////////////////////////////////////////////////////////////////

/******************************************************/
/********** Programa Medidor de Presion  con 16f628 ***/
/******************************************************/




#include <16f876.h> //pic a utilizar
#device *=16
#device adc=8
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT,NOCPD, NOWRT,NODEBUG                  //No Debug mode for ICD
#use delay (clock=4000000) //Fosc=4Mhz
#define use_portc_lcd TRUE
#include <flex_lcd1.c> //libreria para lcd


//////////////////////////////////////////////////
//Posiciones de memorias en eeprom del pic usadas
//0x00 Lectura A0 del adc negativo
//0x01 Lectura A1 del adc positivo
//0x02 Kp
//0x03 Kn
//0x04 Pob
//0x05 copia dir 0x01
//0x06 PobN
//0x07 copiaN dir 0x00
//0x08 unidad de presion
//0x09 formato
////////////////////////////////////////

/********DECLARACION DE FUNCIONES************/

void calibracionP(void);
void calibracionN(void);
void cartel(int Pob);
void cartelN(int PobN);
void presiones(void);
void CartelU (int unidad);


/********************************************/

long int sleepp=254;
/********************************************/
//Pob: presion observada positiva
//PobN: presion observada negativa
//copia: copia un valor parano modificar el original positivo
//copia: copia un valor parano modificar el original negativo
//unidad:????
//valor:usado para almacenar valores de una operacion positiva
//valorN:usado para almacenar valores de una operacion negativa
//Kp:constante de multiplicacion para visualizacion de la presion positiva
//Kn:constante de multiplicacion para visualizacion de la presion negativa
//Ku:constante de multiplicacion para visualizacion
//de conversion de la presion (PSI , mmHg, Bar)
/********************************************/
///////////PROGRAMA/////////////////////

void main(void)
{int dato,Pob,copia,PobN,copiaN,unidad,formato;//po
float valor,valorN,kp=1,kn=1,Ku=1;



lcd_init( ); //inicializamos lcd
lcd_putc("  Medidor de \n  Presion...");
delay_ms(1000);
lcd_putc("\f");
setup_adc_ports(AN0_AN1_VSS_VREF);
setup_adc(ADC_CLOCK_INTERNAL);



while(TRUE)
{

set_adc_channel(0);
dato=read_adc();
delay_ms(50);
write_eeprom(0x00,dato);//0x00 Lectura A0 del adc presion negativa

set_adc_channel(1);
dato=read_adc();
delay_ms(50);
write_eeprom(0x01,dato);//0x01 Lectura A1 del adc presion positivo


if (!input(PIN_A2))
{

calibracionP();//llama a la funcion calibracion positiva
}
if (!input(PIN_A4))
{
calibracionN();//llama a la funcion calibracion negativa
}
if (!input(PIN_A5))
{
presiones(); //funcion que selecciona unidad de Presion (PSI , mmHg, Bar)
}


unidad=read_eeprom(0x08);//inicializo posicion de eeprom dir0x08 => 0x08=1=bar por defecto
formato=read_eeprom(0x09);

/****** Tabla de Comversion **************/
/****** Valores Comversion para otras unidades de presion **************/
/****** por defecto Ku es 1 estaria en Bares **************/

         switch (unidad){
               case 1: Ku=1;        //Presion en Bar
                       break;
               case 2: Ku=750.2467; //Presion en mmHg
                       break;
               case 3: ku=14.5;     //Presion en Psi
                       break;
               default:break;
                        }

/****** Fin de tabla **************/


PobN=read_eeprom(0x06);//calibracion negativa
copiaN=read_eeprom(0x07);//calibracion negativa//copiaN son los escalones del ADC

kn=(float)PobN/copiaN;

dato=read_eeprom(0x00);

valorN=dato*kn*ku*0.01; //Calculo el valor de Presion -




Pob=read_eeprom(0x04);
copia=read_eeprom(0x05);

kp=(float)Pob/copia;

dato=read_eeprom(0x01);

valor=dato*kp*ku*0.01; //Calculo el valor de Presion +

if (formato==2){
/*******************************************/
lcd_gotoxy(1,1);
printf(lcd_putc,"P-:-%1.2f ",valorN); //muestra por lcd
cartelU(unidad);
delay_ms(50);

lcd_gotoxy(1,2);
printf(lcd_putc,"P+: %1.2f ",valor); //muestra por lcd
cartelU(unidad);
delay_ms(50);
/*******************************************/
}else
{
lcd_gotoxy(1,1);
printf(lcd_putc,"MANOVACUOMETRO!",valorN); //muestra por lcd
delay_ms(50);

lcd_gotoxy(1,2);
printf(lcd_putc,"P: %1.2f ",(valor-valorN)); //muestra por lcd
cartelU(unidad);
delay_ms(50);
}


/******************REVISAR  SI SOLO USAMOS EL RESET PARA VOLVER A ENCENDER EL APARATO************/

--sleepp;
lcd_gotoxy(14,2);
printf(lcd_putc,"%03x",sleepp);
if(sleepp==0)
         {
         sleep();
         }



}//bucle infinito








}





/****** Funcion  calibracion positiva**************/


void calibracionP(void)
{
int Pob=0,copia=0,Pobinicial=0;

if(!input(PIN_A2)) //pin A2=0 --> calibracion si lo tenes apretado al pin A2
   {

      lcd_putc("\f");//borra pantalla
      lcd_putc("Cal+ A5=up A4=Down");
      Pob=read_eeprom(0x04); //almaceno en memoria el numerador del calculo de Kp
      Pobinicial=Pob;
      cartel(Pob);// llama a la funcion de impresion en lcd realizando una
      //division por 100 ya que POb es un valor entero
      delay_ms(1000);

      while(!input(PIN_A2))
      {
      if(!input(PIN_A5)) //para ello leemos el estado del pin A3 del porta para conteo ascendente
         {
         do
         {
         Pob++; //decremento contador para visualizar siguiente digito
         delay_ms(100);
         cartel(Pob);//imprime para ver que avanza la calibracion
         delay_ms(100);
         }while(!input(PIN_A5));//antirrebote
         }

      if(!input(PIN_A4)) //para ello leemos el estado del pin A3 del porta para conteo descendente
         {
         do
         {
         Pob--; //decremento contador para visualizar siguiente digito
         delay_ms(100);
         cartel(Pob);
         delay_ms(100);
         }while(!input(PIN_A4));
  }
}
}
/***********esto sirve para que efectivamenete se cargue*************/
/**********el valor calibrado y no el valor original***************/
if (Pobinicial!=Pob)
{//condicion para que cuando salga de calibracion no
//modifique el valor de presion calibrada , si no se varia el valor Pob inicial
write_eeprom(0x04,Pob);
copia=read_eeprom(0x01);//0x01 Lectura A1 del adc presion positivo valor de 0 a 255 del ADC
//copia son los escalones del ADC
write_eeprom(0x05,copia);//0x05copia para no modificar el valor original de lectura del ADC
}
lcd_putc("\f");
}




/****** Funcion  calibracion negativa**************/
void calibracionN(void)
{
int PobN=0,copiaN=0,Pobinicial=0;

if(!input(PIN_A4)) //pin A2=0 --> calibracion
   {
      lcd_putc("\f");
      lcd_putc("Cal- A5=up A2=Down");
      PobN=read_eeprom(0x06);//almaceno en memoria el numerador del calculo de Kn
      Pobinicial=PobN;
      cartelN(PobN);
      delay_ms(1000);

      while(!input(PIN_A4))
      {
      if(!input(PIN_A5)) //para ello leemos el estado del pin A3 del porta para conteo ascendente
         {
         do
         {
         PobN++;
         delay_ms(100);
         cartelN(PobN);
         delay_ms(100);
         }while(!input(PIN_A5));
         }

      if(!input(PIN_A2))
         {
         do
         {
         PobN--; //decremento contador para visualizar siguiente digito
         delay_ms(100);
         cartelN(PobN);
         delay_ms(100);
         }while(!input(PIN_A2));
  }
}
}

/***********esto sirve para que efectivamenete se cargue*************/
/**********el valor calibrado y no el valor original***************/

if (Pobinicial!=PobN){//condicion para que cuando salga de calibracion no
//modifique el valor de presion calibrada , si no se varia el valor PobN inicial
write_eeprom(0x06,PobN);//0x06 Lectura A1 del adc presion negativo valor de 0 a 255 del ADC
copiaN=read_eeprom(0x00);
write_eeprom(0x07,copiaN);//0x07copia para no modificar el valor original de lectura del ADC
}
lcd_putc("\f");
}



/****** Funcion  carteles de impresion LCD**************/

void cartel(int Pob)
{
lcd_gotoxy(2,2);
printf(lcd_putc,"P+=%1.2f bar",((float)Pob/100)); //La div por 100 es para que muestre en Bar
}

void cartelN(int PobN)
{
lcd_gotoxy(2,2);
printf(lcd_putc,"P-=%1.2f bar",((float)PobN/100)); //La div por 100 es para que muestre en Bar

}




/**************** Funcion  presion (PSI mmHg o Bar) + presentacion  INDIVIDUAL*******************/

void presiones(void)
{
int unidad=1,formato=1;
if(!input(PIN_A5))
   {
      lcd_putc("\f");
      lcd_putc("Unidad de P:");
      unidad=read_eeprom(0x08);
      lcd_gotoxy(2,2);
      cartelU(unidad);

      while(!input(PIN_A5))
      {
      if(!input(PIN_A2))//pin A3 apretado + pin A2 como pulsdor cambio a Bar a mmHg o PSI
         {
         do
         {
          unidad++;
          if (unidad>3) unidad=1;//reset para no exeder la condicion
          lcd_gotoxy(2,2);
          cartelU(unidad);
          delay_ms(1000);
         }while(!input(PIN_A2));
        }

       if(!input(PIN_A4))//pin A3 apretado + pin A4 como pulsdor cambio a formatos de presentacion presion +,- o diferencial

         {
         do
         {
          lcd_gotoxy(2,2);
          if (formato==1)
          {
          lcd_putc("Formato P+ P-");
          formato=2;
          }else
          {
          lcd_putc("Formato PSUMA");
          formato=1;
          }
          delay_ms(1000);
         }while(!input(PIN_A4));
        }
}
write_eeprom(0x08,unidad);
write_eeprom(0x09,formato);
lcd_putc("\f");
}
}


/****** Funcion  carteles de impresion LCD**************/

void CartelU (int unidad)

{
         switch (unidad){
         case 1:
         lcd_putc("Bar     ");// aca se imprimen espacios vacion por una cuetion de refresco del diplay para que no
         //queden impresas letras de mas cuando se corra una presentacion en el display.
         break;
         case 2:
         lcd_putc("mmHg    ");
         break;
         case 3:
         lcd_putc("psi     ");
         break;
         default:
         break;
         }
}



Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ayuda con instruccion sleep()
« Respuesta #11 en: 04 de Agosto de 2006, 00:08:38 »
quirogaareal me alegro que vayas solucionando cosas.

Respecto a esto:
3) el circuito que te coloque ahi es el que hice hoy pasando el lcd al puerto c para poder implementar el bajo consumo y cuando este en ese estado despertarlo con la instruccion sleep desde el puerto B tal y como vos me lo habias sugerido.

Solo quisiera advertirte que del bajo conumo no se lo 'despierta con un sleep'.  Con el sleep lo pones en bajo consumo, lo que lo despierta al pic es el evento en el puerto B o los que antes te he mencionado.


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 quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: ayuda con instruccion sleep()
« Respuesta #12 en: 04 de Agosto de 2006, 12:26:01 »
Hola maunix,

No eso si lo tengo bien entendendi sleep entra en bjo consumo y por interrupcion externa lo despierto.

Ahro he cambia de lugar los pines con los cuales calibraba ahora los puse en el puerto b para agregarle un medidor de bateria a otra de las entradas del conversor, pero el problema que tengo ahora que antes no lo hacia es que el display me parpadea con la lectura y solo los cambie de lugar nada mas, ¿tendrias alguna sugerencia del porque?


Un saludo desde Alberdi  Cordoba
Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ayuda con instruccion sleep()
« Respuesta #13 en: 04 de Agosto de 2006, 14:57:32 »
Hola maunix,

No eso si lo tengo bien entendendi sleep entra en bjo consumo y por interrupcion externa lo despierto.

Si te fijas en mi post anterior, yo hacía referencia a tu frase donde dijiste: "que lo ibas a poner en bajo consumo y en ese estado despertarlo con la instrucción sleep"

Yo te corregí advirtiendote que la instrucción SLEEP es la que lo pone en bajo consumo y es el evento (un cambio en el puerto B por ejemplo) el que te produce el wake-up o despertar del micro

Ahro he cambia de lugar los pines con los cuales calibraba ahora los puse en el puerto b para agregarle un medidor de bateria a otra de las entradas del conversor, pero el problema que tengo ahora que antes no lo hacia es que el display me parpadea con la lectura y solo los cambie de lugar nada mas, ¿tendrias alguna sugerencia del porque?

Es raro que te pase eso con el display, puede ser una mala conexión (floja por ejemplo), no le veo otra explicación.


Un saludo desde Alberdi  Cordoba

Un saludo desde Nva Cba  :)
- 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 pelusac

  • PIC16
  • ***
  • Mensajes: 118
Re: ayuda con instruccion sleep()
« Respuesta #14 en: 04 de Agosto de 2006, 15:11:34 »
Ups  :shock: es cierto que había otro post que trataba el tema, no relacioné este con el del medidor de presión.
Muchas gracias por poner el código. :lol:

Un saludo.


 

anything