Autor Tema: como preguntar por el estado de una salida?  (Leído 508 veces)

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

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3392
    • PICKEY ELECTRÓNICA
Re:como preguntar por el estado de una salida?
« Respuesta #15 en: 27 de Julio de 2020, 03:31:18 »
La función millis es muy fácil de implementar en CCS, de todas formas no es necesario crear la función para verificar el tiempo, tan solo activas un timer antes de la operación y lo vuelves a leer después, es muy fácil y te dará un mayor precisión que millis.
Saludos desde Granada, España.

Desconectado johenrod

  • PIC12
  • **
  • Mensajes: 72
Re:como preguntar por el estado de una salida?
« Respuesta #16 en: 29 de Julio de 2020, 09:37:05 »
dogflu66, gracias por tu respuesta.
cuando dices que la función millis es muy fácil de implementar en CCS, te refieres a hacerlo con los timer? o hay una forma similar en CCS de hacerlo como en arduino porque antes la he buscado y no pude encontrarla.
saludos

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3392
    • PICKEY ELECTRÓNICA
Re:como preguntar por el estado de una salida?
« Respuesta #17 en: 10 de Agosto de 2020, 19:57:30 »
Lo siento pero no he estado por aquí.
Para determinar el tiempo que tarda en ejecutarse una porción de código se puede utilizar un timer.
Primero configuras el timer en este caso el Timer1 en su forma más rápida.
   setup_timer_1(T1_INTERNAL | T1_DIV_BY_1); //Tienes que especificar que reloj estas usando.


Void Main(){

   set_timer1(0x0000); //Se pone a cero
   Se ejecuta el código a medir.
   Se leen los dos registros del timer1 y se asignan a una variable de 16bit

}

En la variable elegida tendremos el tiempo de reloj/4, porque el timer se incrementa cada 4ciclos de reloj en los pic.
Como sabemos que cada instrucción maquina tarda 4 ciclos de reloj se puede afinar más la lectura.

« Última modificación: 10 de Agosto de 2020, 20:03:40 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3392
    • PICKEY ELECTRÓNICA
Re:como preguntar por el estado de una salida?
« Respuesta #18 en: 10 de Agosto de 2020, 20:22:31 »
Y para millis:

#include <18F46K22.h>
#FUSES INTRC_IO               //Oscilador interno, no CLKOUT
#FUSES PLLEN                  //PLL a on, reloj x 4
#use delay(clock=64000000, int=64000000)

int32 millis = 0; //Debe ser global
Void Main(){
   //Configura el Timer1 para interrupción cada 1mSeg.
   setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
   set_timer1(0xC17C); //Carga timer1 para que desborde pasado 1mSeg.
   enable_interrupts(INT_TIMER1);

   While(1){
   int32 inicio_millis;
   int32 final_millis;
   millis = 0;
   inicio_millis = millis;
      //Nuestro código.
   final_millis = millis - inicio_millis;
    }   
 }
//*****************************************************************************
#INT_TIMER1 //Interrupción Timer1
void  TIMER1_isr(void) {
   set_timer1(0xC17F); //Recarga timer1
   millis++; //Incrementa millis cada 1mSeg.
}
Saludos desde Granada, España.


 

anything