Autor Tema: Matrix de 8x8 LEDs y 24C256 en CCS por software  (Leído 21913 veces)

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

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Matrix de 8x8 LEDs y 24C256 en CCS por software
« en: 12 de Septiembre de 2007, 10:14:36 »
Hola amigos!

¿Alguien puede decirme si el "driver" incluido en CCS (24256.C) cuyo codigo incluyo mas abajo funciona en PICs que no tienen i2c implementado por hardware?

Gracias!  :)

Código: [Seleccionar]
///////////////////////////////////////////////////////////////////////////
////        (C) Copyright 1996,2003 Custom Computer Services           ////
//// This source code may only be used by licensed users of the CCS C  ////
//// compiler.  This source code may only be distributed to other      ////
//// licensed users of the CCS C compiler.  No other use, reproduction ////
//// or distribution is permitted without written permission.          ////
//// Derivative programs created using this software in object code    ////
//// form are not restricted in any way.                               ////
///////////////////////////////////////////////////////////////////////////


#ifndef EEPROM_SDA

#define EEPROM_SDA  PIN_B1
#define EEPROM_SCL  PIN_B0

#endif

#use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL)

#define EEPROM_ADDRESS long int
#define EEPROM_SIZE   32768

void init_ext_eeprom()
{
   output_float(EEPROM_SCL);
   output_float(EEPROM_SDA);

}


void write_ext_eeprom(long int address, BYTE data)
{
   short int status;
   i2c_start();
   i2c_write(0xa0);
   i2c_write(address>>8);
   i2c_write(address);
   i2c_write(data);
   i2c_stop();
   i2c_start();
   status=i2c_write(0xa0);
   while(status==1)
   {
   i2c_start();
   status=i2c_write(0xa0);
   }
}


BYTE read_ext_eeprom(long int address) {
   BYTE data;
   i2c_start();
   i2c_write(0xa0);
   i2c_write(address>>8);
   i2c_write(address);
   i2c_start();
   i2c_write(0xa1);
   data=i2c_read(0);
   i2c_stop();
   return(data);
}
« Última modificación: 12 de Diciembre de 2007, 12:43:15 por aitopes »
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: 24C256 en CCS por software
« Respuesta #1 en: 12 de Septiembre de 2007, 11:27:02 »
Lo mejor será que lo pruebes, pero en teoría debería funcionar tanto si se dispone del periférico como si no, porque el compilador se encarga de meter el código cuando el PIC no tenga hardware específico.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: 24C256 en CCS por software
« Respuesta #2 en: 12 de Septiembre de 2007, 11:33:08 »
Perfecto!! Gracias Manolo.
Es que estoy dibujando una plaquita para "jugar" con unos LEDs y una eeprom con un 16F628A....que no tiene I2C en hard, y no queria trabajar de gusto, aunque apostaba doble contra sencillo que funcionaria igual.

Gracias otra vez.  :mrgreen:
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: 24C256 en CCS por software
« Respuesta #3 en: 12 de Septiembre de 2007, 18:52:40 »
Yo trabaje con un 16F628 en comunicacion I2C manejando un MCP23016 y funciona correctamente !!
No te olvides de los pullups de las lineas I2C...
 :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: 24C256 en CCS por software
« Respuesta #4 en: 12 de Septiembre de 2007, 19:03:05 »
Je................
Acabo de perforar el impreso...y veo que me las olvide! Y eso que sabia que iban, y que las dibuje en el esquemita que hice en el cuaderno. Pues bien, iran soldadas del lado de las pistas en el prototipo. :)
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: 24C256 en CCS por software
« Respuesta #5 en: 13 de Septiembre de 2007, 00:53:02 »
Por eso te lo dije, creias ser el unico que no las tuvo en cuenta ?? :D :D
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: 24C256 en CCS por software
« Respuesta #6 en: 13 de Septiembre de 2007, 01:45:09 »
Hola amigos!

¿Alguien puede decirme si el "driver" incluido en CCS (24256.C) cuyo codigo incluyo mas abajo funciona en PICs que no tienen i2c implementado por hardware?

Gracias!  :)

Ariel, toda la diferencia entre hacerlo por hardware o por software está en esta línea:

Código: Text
  1. #use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL)

Para que funcione correctamente por Hardware tienes que asegurarte de una cosa y añadir un parámetro más a la declaración:

1º.- Asegurarte de que EEPROM_SDA y EEPROM_SCL corresponden efectivamente a los pines del PIC que tienen la función I2C implementada.

2º.- Añadir el FORCE_HW a la declaración del i2C. CCS por defecto nunca fuerza la realización por Hardware, hay que declararlo explícitamente.

Código: CSS
  1. #use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL, FORCE_HW)

Nota: a diferencia del #use i2c que en CCS siempre es por software salvo que se declare FORCE_HW el #use rs232 es por software sólo si xmit y rcv no coinciden con los pines asociados a la USART, es decir que detecta y utiliza el hardware automáticamente.


Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: 24C256 en CCS por software
« Respuesta #7 en: 13 de Septiembre de 2007, 07:19:55 »
Hola Diego!

Como siempre, impecable! Muchas gracias.

Marcos, el temas de las resistencias pullup estan bajo la órbita de las leyes de murphy: "Si puedes olvidar de poner las resistencias pullup, seguramente no las pondras", o algo asi. :)

Gracias!
En un rato (5 o 6 horas) voy a soldar todo, y posteo una foto del juguetito que estoy armando para aprender un poco mas de CCS.

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: 24C256 en CCS por software
« Respuesta #8 en: 13 de Septiembre de 2007, 07:40:39 »
Realmente es absurdo que los PIC no tengan integradas esas resistencias pull-up en su propio core. De hecho las tienen en el PORTB...

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: 24C256 en CCS por software
« Respuesta #9 en: 13 de Septiembre de 2007, 07:49:15 »
Hola Manolo!

Citar
Realmente es absurdo que los PIC no tengan integradas esas resistencias pull-up en su propio core.

Lo hacen a proposito, para obligarnos a mantener la mente alerta. :)

De hecho....podrian estar en la misma EEPROM!

Saludos.
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: 24C256 en CCS por software
« Respuesta #10 en: 13 de Septiembre de 2007, 07:56:14 »
Creo que es porque el pull-up deberia estar en el ultimo dispositivo del bus, al menos eso entiendo, aunque no se cual es la diferencia ?? :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: 24C256 en CCS por software
« Respuesta #11 en: 13 de Septiembre de 2007, 08:07:20 »
Hola Marcos!
Esa no la sabia.
Es probable que altas velocidades los componentes inductivos de las resistencias o de las pistas del impreso tengan algo que ver en su posicion.....no?
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: 24C256 en CCS por software
« Respuesta #12 en: 13 de Septiembre de 2007, 08:24:34 »
Pues no sé cuál será la explicación. Yo a veces las pongo en un extremo y otras en el otro sin miramiento alguno. Al fin y al cabo ambos dispositivos tienen la posibilidad de bajar la señal Data cuando les toque, así que no tendría que haber diferencias entre ambos.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: 24C256 en CCS por software
« Respuesta #13 en: 13 de Septiembre de 2007, 09:00:12 »

Marcos, el temas de las resistencias pullup estan bajo la órbita de las leyes de murphy: "Si puedes olvidar de poner las resistencias pullup, seguramente no las pondras", o algo asi. :)


¡¡¡Exacto!!

Este pasado sábado tuve que llamar al Servicio Nocturno de Rediseños de PCB's de Urgencia para añadir un par de Pull-Up's que DHEYSENE (Debieran Haber Estado Y Sin Embargo No Estaban). ja ja ja  :D :D :D

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: 24C256 en CCS por software
« Respuesta #14 en: 13 de Septiembre de 2007, 09:08:36 »
Citar
Servicio Nocturno de Rediseños de PCB's de Urgencia
:D :D :D :D :D

¿Hasta que hora de la madrugada funciona el sistema?

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert


 

anything