Entrar
¿Nuevo usuario? Inscribirme
electronica_desaplicada · Electrónica Desaplicada
? ¿Ya estás suscrito? Entra a Yahoo!

Consejos

¿Sabías que...?
Podés cambiar el orden de los mensajes. Simplemente hacé clic en el enlace de columna fecha. Tus preferencias se guardarán, por lo tanto no necesitarás hacerlo otra vez cuando vuelvas a entrar.

Mensajes

  Mensajes Ayuda
Avanzado
[E_Desaplicada] OTRa mas   Lista de mensajes  
Responder | Reenviar Mensaje #5491 de 6443 |
Muchas gracias Mauricio..
No habia tenido en cuenta esa información respecto que el oscilador se podia deshabilitar ,
obviamente hice lo que me dijiste y todo marcha a la perfección.
 
 
Pero por aqui me surgió otro problema..
Quiero guardar unos datos en la memoria de datos EEPROM del PIC16F877A, seugn entiendo va desde la dirección 00 hasta la 255.
 
Puedo guardar cosas en la posicion 0, 30 , pero cuando quiero grabar datos en serie desde la 16, solo me graba el primer daato......
los demas no los guarda.....estaré haciendo algo mal?¿
o es que entre grabada y grabada tenbgo que dejarle alguna espera?¿
 
estas son las rutinas que uso para grabar, las mismas del PDF..
 
 
 
 
 
void Escribir_EEPROM(char add, char dato)
{
 
 
    char temp_INTCON;
    temp_INTCON=INTCON;
    INTCON=0;          
          
              set_bit( STATUS, RP0 );
              set_bit(STATUS,RP1);
              while(EECON1 & b1==1){} //Espera a que una escritura sea finalizada
              clear_bit( STATUS, RP0 );
              EEADR=add;
              EEDATA=dato;
              set_bit( STATUS, RP0 );            
              clear_bit(EECON1,7);       //EEPGD
              set_bit(EECON1,2);       //WREN
              EECON2=85;
              EECON2=170;
              set_bit(EECON1,1);   //WR
              clear_bit(EECON1,2);  //WREN
             
              INTCON=temp_INTCON;
 
}
void Leer_EEPROM(char add)
{
 
         set_bit(STATUS,RP1);
         clear_bit(STATUS,RP0);
        
         EEADR  = add;      
         set_bit(STATUS,RP0);     
         clear_bit(EECON1,7);
         set_bit(EECON1,0);   //RD
         clear_bit(STATUS,RP0);
         dato_EEPROM=EEDATA;
}  
 
 
 
Intenté con esta otra para ver si funcionaba pero tampoco..
 
 
 
 
 
void Escribir_EEPROM(char add, char dato)
 
{
              while (EECON1 & b1==1){}  //Esperar a que se complete un cillo de escritura
              EEADR=add;
              EEDATA=dato;
              clear_bit(EECON1,7);
              set_bit(EECON1,2);
              clear_bit(INTCON,7);
              EECON2=85;
              EECON2=170;
              set_bit(EECON1,1);
              set_bit(INTCON,7);
              clear_bit(EECON1,2);
}
 
 
Muchas gracias de nuevo por la atención y la ayuda prestada.
Adios


Lun, 8 de Ago, 2005 11:52 pm

cmlopez48
Sin conexión Sin conexión
Enviar correo Enviar correo

Reenviar Mensaje #5491 de 6443 |
Desplegar mensajes Autor Ordenar por fecha

Muchas gracias Mauricio.. No habia tenido en cuenta esa información respecto que el oscilador se podia deshabilitar , obviamente hice lo que me dijiste y todo...
César Muñoz
cmlopez48
Sin conexión Enviar correo
8 de Ago, 2005
11:54 pm

César, la primera es gratis, la segunda la tienes que trabajar. Ambas respuestas a tus preguntas estan en los respectivos manuales. Te recomiendo que ademas...
Mauricio Jancic
Jancic
Sin conexión Enviar correo
9 de Ago, 2005
12:24 pm

Gracias Mauricio de nuevo por tu ayuda.. nunca pensé que el retardo para esribir varias veces de seguido en la EEPROM de datos fuera tan alto.. Estaba...
César Muñoz
cmlopez48
Sin conexión Enviar correo
12 de Ago, 2005
4:19 am
Avanzado

Copyright © 2009 Yahoo! de Argentina S.R.L. Todos los derechos reservados.
Política de privacidad - Condiciones del Servicio - Reglas de la comunidad de Yahoo! - Ayuda