CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

Control de timer por interrupciones externas?

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
eduard001



Joined: 19 May 2014
Posts: 1

View user's profile Send private message Send e-mail

Control de timer por interrupciones externas?
PostPosted: Mon May 19, 2014 5:47 pm     Reply with quote

Hola que tal?, soy nuevo en ccs y e tratado de controlar mi timer por medio de interrupciones externas pero no lo e conseguido. Lo que quiero lograr es:
Al tener una int_ext, inicie mi timer1 desbordándose una y otra ves. Contar las veces que se a desbordado y que al existir una nueva interrupción externa se detenga el conteo de desbordamientos e imprima el total de veces que se desbordo el timer entre una interrupción y otra.
Espero que alguien pueda ayudarme, saludos y gracias. Mi código es el siguiente.

Code:

#include <16F877.h>
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B4,rcv=PIN_B5,bits=8)
#include <stdlib.h>

int16 conteo=0;
int escape=0;

#INT_EXT
IntRB0(){
escape++;  /**incrementa el valor para usarlo como condicion**/
do {
  set_timer1 (131);   //recarga del TMR1
  conteo++;  /**Se incrementa cada ves que se desborda timer1**/
  printf("El conteo es: %Lu\r",conteo);
  }while(escape==1);   

 }


void  main(){
   
enable_interrupts(INT_EXT);     
ext_int_edge(L_TO_H);  //config. de int. por flando de bajada
set_timer1 (131);
   
setup_timer_0(RTCC_INTERNAL |RTCC_DIV_4 );
enable_interrupts(GLOBAL);   //activar interrupciones globals
   
while(true);
}
asmboy



Joined: 20 Nov 2007
Posts: 2128
Location: albany ny

View user's profile Send private message AIM Address

PostPosted: Mon May 19, 2014 7:15 pm     Reply with quote

esto es una locura
Code:

escape++;  /**incrementa el valor para usarlo como condicion**/
do {
  set_timer1 (131);   //recarga del TMR1
  conteo++;  /**Se incrementa cada ves que se desborda timer1**/
  printf("El conteo es: %Lu\r",conteo);
  }while(escape==1);   

 }

DUH!! the exit condition is outside the loop !!!!
( and only exits the first time it is called )

and the ISR wont be called to change it since this is still in the handler...
not to mention without a read of the B_port - the int flag won't clear either.
ouch.....esto es realmente muy pobre programación
Humberto



Joined: 08 Sep 2003
Posts: 1215
Location: Buenos Aires, La Reina del Plata

View user's profile Send private message

PostPosted: Tue May 20, 2014 11:03 am     Reply with quote

Eduardo,

Como dijo asmboy, son muchos los errores en estas pocas líneas de código que has presentado. Para muchos de nosotros responder éste tipo de
consultas implica una respuesta larga, compleja y tediosa.
La utilización de interrupciones tiene algunas restricciones y es necesario comprender -de forma integral- el desempeño del hardware y del código.
Me permito darte algunas sugerencias. Hay otros buenos foros de PIC + lenguaje C en Español mas adecuados para principiantes. Por otro lado
te recomiendo que estudies más profundamente el funcionamiento de los módulos internos de un MCU y que refuerces tu aprendizaje de C, en
forma metódica y gradual.

Por otro lado, el idioma utilizado en éste foro es el Inglés. Permite que miembros de diferentes lenguas podamos compartir conocimientos y experiencias.

saludos cordiales,
_________________
Humber
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group