Saludos pioneros de los micros.
Abri este tema para los que apenas y digo "apenas" estan empezando conocer C, pues bien yo soy uno de los que no conocen muy bien aunque trabajo en eso checando libros y en especial este foro que por cierto "esta muy bueno". y gracias a los masters de RedPic,maunix,Cryn,Palitroquez, elmasvital, bueno si le sigo no acabo, en fin, este foro enseña a lo grande.
Pues bien quiero dar conocer el poquito de experiencia que llevo pues pa empezar a abonar algo de conocimiento y quisiera que los demas hicieran lo mismo o agregar algo mas.
Mi problema era el siguiente a mi programa le queria insertarle lo que era el Watch dog timer aunque ni idea de como ingresarlo o manipularlo. Hasta que estube jugando un rato con el CCS, y llegue a una pantalla donde (hacer un proyecto) me indicaba un pequeño recuadrito que si "limpiaba el WDT en la llamada de retardo" lo cual me facilitaba al llamar a los retardos grandes y otra pantalla me decia que si queria habilitar el WDT y me mostraba unos determinados tiempos para hacerlo, la verdad yo no sabia eso y no se si se le pueden asignar otros tiempos pero, almenos con estos datos pude realizar mi programa ingresandole el WDT.
///
.....
#include <16f84a.h> //pic a utilizar
#fuses XT,WDT,NOPROTECT,PUT //ordenes para el programador, aqui lo habilito
#use delay (clock=4000000,RESTART_WDT) //Fosc=4Mhz y ademas eso indica que limpia el WDT dentro del delay
#int_ext
y el WDT lo asignan en el main() asi...
/////
.....
void main(void)
{
setup_wdt(WDT_36MS); //aqui dice en que tiempo se habilita el WDT
enable_interrupts(int_ext); //activar interrupcion externa
ext_int_edge(L_TO_H); //configuracion:int. cuando el nivel es alto
enable_interrupts(GLOBAL); //todas las interrupciones desactivadas
while(TRUE) { ......
Ahora como yo me lo imagino se debe colocar un..
restart_wdt();
en alguna parte el programa que, se lleve un tiempo antes del asignado(anteriormente) en el WDT, para poder limpiarlo y no reiniciar todo.
Ademas, como ya asignaste limpiar durante el delay no importa si el delay es muy grande....
////
.......
output_high(PIN_A0);
delay_ms(15000); //aqui adentro se limpia el WDT
output_low(PIN_A0);
......
Pues es algo de lo que ahorita conosco. Si estoy mal porfa diganmelo y estoy bien que bueno ya e aportado algo.
Ojala que esto ayude a los principiantes como yo y les agradeceria que aportaram mas de este tema para agrandar los conocimientos.
¡..y que sigan aprendiendo en el foro...!
