Autor Tema: ayuda 1307  (Leído 17246 veces)

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

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: ayuda 1307
« Respuesta #60 en: 22 de Enero de 2009, 21:54:50 »
Cryn muchas gracias por tus aportes y sobre todo por tu predisposiciòn. Entiendo lo que es una libreria solo que estoy confundido porque en el ultimo programita que postee no se invoca al ds1307.c y sin embargo el mismo funciona de maravillas. ahora existe otro  que presenta el ds1307.c  en la cabecera del programa y en el mismo se llama a las funciones definidas en la libreria y no pasa nada, es decir no anda el programa (el cableado esta corecto). Bien a pesar de todo seguire investigando el tema , considerare, tus aportes y como tu dices seguirè preguntando.
hasta otro post.
saludos 

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: ayuda 1307
« Respuesta #61 en: 24 de Enero de 2009, 17:57:01 »
ahora ya hasta me confundiste a mi :D :D

que lío se ha hecho esto, pues decirte que el último código que pegaste por acá no está modificando con los pulsadores porque no existen rutinas para que se haga ello, como te mencione podemos dividirlo en 2 partes:

1. manejo del reloj (librería)
2. manejo de los pulsadores

en este ultimo código no esta el punto 2, por eso no funciona, te falta incluirle las rutinas para modificar los datos

tremendo lío al que nos metiste :D

ojala que podamos salir de este sin problemas

suerte, un saludo
.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: ayuda 1307
« Respuesta #62 en: 30 de Enero de 2009, 19:08:37 »
Ok, Cryn solucione my problema, ahora tengo dos programitas que leen el rtc. estan posteados en estas consultas, la diferencia es en la configuraciones de los pines para la comunicacion I2C., uno es más sencillo de interpretatr que el otro ( por lo menos para mí), ahora trabajaré en la modificacion de la hora y fecha.
Muchas gracias por tus aportes.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: ayuda 1307
« Respuesta #63 en: 30 de Enero de 2009, 19:11:44 »
bien, que bueno que hayas encontrado las fallas, ahora a seguir programando para con las modificaciones

 :-/
.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: ayuda 1307
« Respuesta #64 en: 01 de Febrero de 2009, 13:05:05 »
Hola Cryn estoy en la tarea de fusionar las dos partes del programa.
Para provocar el incremento de las h, min, dias, mes, etc, tengo que interrupir la visualización en el LCD de estas variables.

para esto utilizo " enable_interrupts(global)" ¿Como funciona esta interrupcion?, ¿ con algun puerto en especial? Utilizo los pines  B3 y B5 para incrementar y configurar respectivamente.¿La tengo que definir en la cabecera?
 
gracias   

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: ayuda 1307
« Respuesta #65 en: 01 de Febrero de 2009, 14:32:37 »
mmm cuantos botones vas a tener? y que funciones tendrá cada uno?

porque puedes, por ejemplo capturar los datos (de fecha y hora) en variables temporales, hasta que termines la configuración, y modificas solo estas temporales con los pulsadores, para después que se termine la configuración, enviar estos nuevos datos la RTC para que se configure la nueva hora y/o fecha

y pues en el LCD visualizarías estos datos temporales, y no directamente lo que tiene el RTC.

enable_interrupts(global) sirve para habilitar todas las interrupciones, para validar todas las interrupciones, si por ej activaste la interrupción por desborde del TIMER0, pero no activaste las interrupciones globales el timer no provocará interrupción.

Talvez puedas definir B3 y B5 con mejores nombres, o más entendibles, por ejemplo:

#define pin_b3 inc
#define pin_b5 dec

solo para cuestiones de entendimiento, porque puedes de lo contrario manejarlo con los nombres pin_b3 o _b5 sin problemas, ya que su sabrás que hace cada uno

un saludo
.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: ayuda 1307
« Respuesta #66 en: 02 de Febrero de 2009, 16:54:55 »
Hola Cryn, para definir a los pines B3 y B5 como entradas utilizo  "set_ tris_b ( 0x24) (los otros pines seran salidas), con B3 incrementare y B5 entraré a configurar y pasare por cada variable.
Una duda: Los set_tris_ sirven para configurar cada pin del puerto? y los use_fast_io () para que sirven   
gracias.
 A tu pregunta tendré dos botones como lo habias supuesto. saludos

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: ayuda 1307
« Respuesta #67 en: 02 de Febrero de 2009, 19:17:54 »
sería set_tris_b(0x28); para que b3 y b5 sean entradas y el resto salidas

Si lo tris sirven para configurar si un pin es Entrada o Salida (entrada con 1, salida con 0)
EL fast_io sirve para optimizar el código, porque cuando no está presente no es necesario que hagamos definición de TRIS, ya que el compilador lo hará automáticamente cada vez que maneje los puerto, esto qeuire decir que habrá código redundante muchas veces. En cambio si colocamos fast_io le estamos diciendo al compilador que colocaremos los tris para ese puerto, y el compilador no colocará por ningún lado tris cuando se maneje el puerto
.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: ayuda 1307
« Respuesta #68 en: 02 de Febrero de 2009, 22:19:18 »
ok, Cryn gracias. .....otras consultas :
utilizaré el pin B4 para llegar a la funcion configurar , el programa empieza

void main(void)
{
 lcd_init(); //Inicializa lcd   
if(input(PIN_B4)==0){ //Si se pulsa Configurar 
while(!input(PIN_B4)){} //elimina rebotes 
configurar(); //ve a menu configurar

while(1)
{
////////en esta parte esta la actualizacion y lectura del rtc esta funcionando OK //////////
}
}

La funcion configurar empieza de la siguiente forma:

///////////////////FUNCION CONFIGURAR ////////////////////////
void configurar(void)
{
do{
switch(menu)
{
case 0: lcd_putc("\fConfigurar\nhoras?" ); //horas
if(!input(PIN_B5)){
while(!input(PIN_B5)){}
horas();
menu=1;
//apunta siguiente opcion
}
break;
case 1: lcd_putc("\fConfigurar\nminutos?" ); //minutos
if(!input(PIN_B5)){
while(!input(PIN_B5)){}
minutos();
menu=2;
//apunta siguiente opcion
///////////////////////y asi continua esta funcion /////////////
Los pines del puerto B que utilizo para esto, están en pullups en modo normal con una r330 a 5V al inicio la b4 esta a masa por lo que deberia ir a configurar y mostrarme las opciones pero no pasa nada ¿ QUE ERROR ESTARÉ COMETIENDO?

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: ayuda 1307
« Respuesta #69 en: 02 de Febrero de 2009, 22:55:07 »
antes del while(1) que es tu ciclo de trabajo, solo van configuraciones del micro, esto es los TRIS, A/D si hay, timers, etc.

dentro el while(1) se encuentra el programa que se va ejecutar todo el tiempo en el micro, si colocas un if fuera del while(1) ese solo se ejecutará una vez y nunca más a menos que resetees

entonces te voy corrigiendo algunas cosas:

void main(void){
   lcd_init(); //Inicializa lcd   
   while(1){
   if(input(PIN_B4)==0){ //Si se pulsa Configurar
      while(!input(PIN_B4)){} //elimina rebotes
      configurar(); //ve a menu configurar
   } //se te olvidó la llave al final del if
  //todo dentro del while(1)
////////en esta parte esta la actualizacion y lectura del rtc esta funcionando OK //////////
   //como funciona bien esta la dejas
   }
}

La funcion configurar empieza de la siguiente forma:

///////////////////FUNCION CONFIGURAR ////////////////////////
void configurar(void){
   do{
      switch(menu){
         case 0: lcd_putc("\fConfigurar\nhoras?" ); //horas
            if(!input(PIN_B5)){
               while(!input(PIN_B5)){}
               horas();
               menu=1;
               //apunta siguiente opcion
            }
            break;
         case 1: lcd_putc("\fConfigurar\nminutos?" ); //minutos
            if(!input(PIN_B5)){
               while(!input(PIN_B5)){}
               minutos();
               menu=2;
               //apunta siguiente opcion
            } otra llave que talvez si esta, pero para que no se olviden
               ///////////////////////y asi continua esta funcion /////////////

y hasta ahora me parece que va muy bien

El error creo que esta porque el if está fuera del while(1)

Un saludo, ya va tomando buena forma tu proyecto, sigue así
.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: ayuda 1307
« Respuesta #70 en: 02 de Febrero de 2009, 23:43:04 »
Ok, Cryn, en la funcion configurar utilizo la sentencia swich y en esta la variable entera "menu" otro error que estoy cometiendo es que en ningun lugar inicializo "menu", este esta definido como "int menu"
 la pregunta es como la inicializo y en donde.
Gracias

#include <16F877A.h>                ///   libreria para el manejo del pic16f877a
#use delay(clock=4000000)          ///   declara  la frecuencia del cristal
#fuses XT,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOPROTECT
#include <ds1307.c>
#include <lcd.c>


#use fast_io(A)
#use fast_io(B)
#use fast_io(C)                     ///   con esta instruccion evitamos que
#use fast_io(D)                     ///   se este configurando cada vez que usamos
#use fast_io(E)                     ///   alguna instruccion de entrada o salida


#byte portc = 7                     /// se definen direcciones de memoria
#byte portd = 8

int sec;
int min;
int hr;
int  day;
int  mth;
int  year;
int  dow;
int  menu;
   
///DEFINICION DE FUNCIONES
void configurar(void);
void horas(void);
void minutos(void);
void dia(void);
void mes(void);
void anio(void);

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: ayuda 1307
« Respuesta #71 en: 02 de Febrero de 2009, 23:55:57 »
puedes hacerlo despues del lcd_init

quedaría así:

void main(){
   lcd_init();
   menu=0;
   while(1){
      ...
   }
}

o cuando lo defines:
int menu=0;
.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: ayuda 1307
« Respuesta #72 en: 03 de Febrero de 2009, 00:16:37 »
Bien, la segunda opcion es la que había utilizado. Gracias Cryn

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: ayuda 1307
« Respuesta #73 en: 03 de Febrero de 2009, 01:45:04 »
Hola Cryn, esta caminando el programita, :-/
solo que ahora no actualiza el rtc, cambiaré algunas posiciones de actualizacion

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: ayuda 1307
« Respuesta #74 en: 03 de Febrero de 2009, 02:00:29 »
bien que ya vaya caminando, me alegra mucho, ya quiero ver unas cuantas fotos y/o videos dando al 100% :mrgreen:

posiciones? que posiciones??
.


 

anything