Autor Tema: sleep en una interrupcion  (Leído 140 veces)

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

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 265
sleep en una interrupcion
« en: 04 de Diciembre de 2018, 17:28:51 »
saludos , una consulta , se puede mandar a modo sleep cuando se produce la interrupcion en MODO CAPTURA?

#INT_CCP1
void handle_ccp1_int(){
   sleep();  //mando a modo sleep
}

La idea es que con el flanco de subida se vaya a modo sleep
gracias

Desconectado elreypic2

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 920
Re:sleep en una interrupcion
« Respuesta #1 en: 04 de Diciembre de 2018, 17:50:53 »
Que tal micronet3,

Regularmente o lo común es usar las interrupciones para "despertar" al microocntrolador del sleep. No sé exactamente qué es lo que intentas hacer. De hecho no tiene sentido, ya que puedes llegar a perder el stack si hace esto una vez que lo despiertes mediante otra interrupción, a menos que una vez en "sleep" hagas un RESET.

elreypic.

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 265
Re:sleep en una interrupcion
« Respuesta #2 en: 04 de Diciembre de 2018, 18:05:05 »
bien buena idea , claro esa es la idea que con un flanco se vaya a modo sleep y con el otro flanco se haga un reset para que reinicie todo, pero no se si el cpu despertara con el modo CCP EN CAPTURA

saludos

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 265
Re:sleep en una interrupcion
« Respuesta #3 en: 04 de Diciembre de 2018, 18:09:58 »
#INT CCP1
void handle_ccp1_int(){
    if(flag_flanco==false){
        flag_flanco=true;
        setup_ccp1(CCP_CAPTURE_FE);
        sleep();
   }
   else{
       flag_flanco=false;
       setup_ccp1(CCP_CAPTURE_RE);
       reset_cpu();
   }
}
que les parece asi?

Desconectado elreypic2

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 920
Re:sleep en una interrupcion
« Respuesta #4 en: 04 de Diciembre de 2018, 18:24:26 »
¿Cuál microcontrolador estás usando?
De esta manera puedo echarle un vistazo al datasheet. Pero hasta donde recuerdo el módulo CCP no puede despertar al microcontrolador, pero no estoy seguro. Por eso necesito saber qué microcontroladro estás usando.

elreypic.

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 265
Re:sleep en una interrupcion
« Respuesta #5 en: 04 de Diciembre de 2018, 18:35:12 »
el pic es el 18f452 , estoy probando el codigo a ver que pasa!


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6994
Re:sleep en una interrupcion
« Respuesta #6 en: 04 de Diciembre de 2018, 18:36:12 »
Es una mala idea que se haga el sleep en la interrupcion como ya te lo dijeron..
Tambien porque usualmente en tu main vas a hacer cosas, y esas cosas van a quedar a la mitad.

Para lo que queres podes usar la interrupcion externa y listo.

Mientras esta activo el PIC, al enrtar en la interrupcion activa un flag y que luego en el main lo envie a dormir.
Mientras esta dormido tenes activo tu interrupcion externa, y al detectarse de nuevo podes iniciar un reset, o de ultima retomar la actividad.

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 265
Re:sleep en una interrupcion
« Respuesta #7 en: 04 de Diciembre de 2018, 19:08:20 »
si  tienes razon killerjc, el problema es que tengo hecha la placa, e intento usar el modo ccp, pero tal vez puedo configurarlo como un pin de entrada y de esa manera mandarlo a sleep y despertarlo tambien, voy a probarlo

saludos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6994
Re:sleep en una interrupcion
« Respuesta #8 en: 04 de Diciembre de 2018, 19:58:00 »
Citar
19.3.1 WAKE-UP FROM SLEEP
The device can wake-up from SLEEP through one of
the following events:

1. External RESET input on MCLR pin.
2. Watchdog Timer Wake-up (if WDT was enabled).
3. Interrupt from INT pin, RB port change or a Peripheral Interrupt.

The following peripheral interrupts can wake the device from SLEEP:

1. PSP read or write.
2. TMR1 interrupt. Timer1 must be operating as an asynchronous counter.
3. TMR3 interrupt. Timer3 must be operating as an asynchronous counter.
4. CCP Capture mode interrupt.
5. Special event trigger (Timer1 in Asynchronous mode using an external clock).
6. MSSP (START/STOP) bit detect interrupt.
7. MSSP transmit or receive in Slave mode (SPI/I2C).
8. USART RX or TX (Synchronous Slave mode).
9. A/D conversion (when A/D clock source is RC).
10. EEPROM write operation complete.
11. LVD interrupt.

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 265
Re:sleep en una interrupcion
« Respuesta #9 en: 05 de Diciembre de 2018, 00:25:53 »
aja exacto , lo pruebo y les aviso! ((:-)) ((:-))

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 265
Re:sleep en una interrupcion
« Respuesta #10 en: 05 de Diciembre de 2018, 11:32:58 »
ya esta compañeros, el  programa se pone en modo sleep  y sale de el correctamente haciendo uso del modulo ccp en modo comparacion

un saludos