Autor Tema: ayuda modulo spi + 25lc256 eeprom  (Leído 4126 veces)

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

25javier

  • Visitante
ayuda modulo spi + 25lc256 eeprom
« en: 27 de Octubre de 2005, 08:41:00 »
Hola,estoy tratando de usar la memoria spi 25lc256 con el modulo interno spi,lo
leo y escribo sin problemas por software(usando el driver25640.c,puesto que las dos memorias 25lc256 y 25lc64 se direccionan con 2 bytes),o sea que descarto todo problema de hardware...
Cuando intento hacerlo con el hardware SPI del pic,cosa que deberias ser muy simple, no lo puedo lograr(la ventaja de hacerlo por hard es que se la puede usar a alta velocidad ..10mhz)
aca esta el codigo..a ver quIen me puede dar una mano porque ya no se que tocar!!!loco
#include "18f452.h"
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#define EEPROM_SELECT PIN_A5
#define EEPROM_DI     PIN_C5
#define EEPROM_DO     PIN_C4
#define EEPROM_CLK    PIN_C3
void main() {
  static int value=0;
   output_high(EEPROM_SELECT);
   output_low(EEPROM_DI);
   output_low(EEPROM_CLK);

   setup_spi(SPI_MASTER | SPI_L_TO_H |SPI_CLK_DIV_64); //test a baja velocidad
 
delay_ms(200);

output_low(EEPROM_SELECT);
  spi_write(6); //activo write operaciones
output_high(EEPROM_SELECT);

  delay_ms(100);

            //ESCRITURA

output_low(EEPROM_SELECT);
   spi_write(2);//comando escribir
   spi_write(0); //direccion 2 bytes
   spi_write(1);
   spi_write(9); // dato
output_high(EEPROM_SELECT);     //

delay_ms(100);*/
//********************

     //LECTURA

output_low(EEPROM_SELECT);   //
   spi_write(3) ;//comando lectura
   spi_write(0); //direccion 2 bytes
   spi_write(1);
   value = spi_read();
output_high(EEPROM_SELECT);
 printf("valor = %u
",value);

 

Desconectado pablofer78

  • PIC10
  • *
  • Mensajes: 20
Re: ayuda modulo spi + 25lc256 eeprom
« Respuesta #1 en: 11 de Diciembre de 2007, 09:36:46 »
te podes fijar con el seteo del modo spi.
Seteos spi

//     MOTOROLA    |      MICROCHIP      |           CCS
//-----------------------------------------------------------------------
//   SPI Mode 0,0  |   CKP = 0, CKE = 1  |  SPI_L_TO_H | SPI_XMIT_L_TO_H
//   SPI Mode 0,1  |   CKP = 0, CKE = 0  |  SPI_L_TO_H
//   SPI Mode 1,0  |   CKP = 1, CKE = 1  |  SPI_H_TO_L
//   SPI Mode 1,1  |   CKP = 1, CKE = 0  |  SPI_H_TO_L | SPI_XMIT_L_TO_H

espero q te pueda ayudar
un saludo y avisame si te funciona dado q yo estoy teniendo un problema similar con un pic16f876

Desconectado carlos7890

  • PIC10
  • *
  • Mensajes: 28
Re: ayuda modulo spi + 25lc256 eeprom
« Respuesta #2 en: 17 de Diciembre de 2007, 11:34:29 »
Pablo:
Al ver tu correo, aprovecho para hacer la siguiente consulta :
Esta forma de setear el modulo SPI por Hardware, de  donde sale?. Si bien la misma se encuentra en el foro de CCS, quisiera saber si hay algún dato adicional para comprender mejor su uso, ya que desde el mismo foro encontré lo siguiente

#include <16f818.h>

#use delay(clock=8000000)

#fuses NOWDT,HS,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP

#define SPI_MODE_0_0 (SPI_L_TO_H | SPI_XMIT_L_TO_H)
#define SPI_MODE_0_1 (SPI_L_TO_H)
#define SPI_MODE_1_0 (SPI_H_TO_L)
#define SPI_MODE_1_1 (SPI_H_TO_L | SPI_XMIT_L_TO_H)

void main()
{

setup_spi(spi_master |SPI_MODE_0_0 | spi_clk_div_64 | SPI_SAMPLE_AT_END );

Lo cual aumenta mis dudas. Estoy trabajando con un acelerómetro de Analog Devices el ADIS16003, el cual se escribe con un flanco y se lee por otro.
Saludos

Desconectado pablofer78

  • PIC10
  • *
  • Mensajes: 20
Re: ayuda modulo spi + 25lc256 eeprom
« Respuesta #3 en: 17 de Diciembre de 2007, 12:24:03 »
todo eso esta en el data sheet del pic (en mi caso 16f876) en la parte de spi.....y tambien en el datasheet del disposiotivo a controlar con este tipo de comunicacion.
fijate q dice en cual de los modos se debe usar.
un saludo y espero q te ayude

p.d. si tenes el codigo q usaste ponelo asi lo vemos

Desconectado carlos7890

  • PIC10
  • *
  • Mensajes: 28
Re: ayuda modulo spi + 25lc256 eeprom
« Respuesta #4 en: 17 de Diciembre de 2007, 21:24:52 »
Estimado Pablo:
Los diferentes modos de configuración del Harware del SPI lo entiendo, misdudas se central en el uso de la siguiente instrucción
setup_spi(spi_master |SPI_MODE_0_0 | spi_clk_div_64 | SPI_SAMPLE_AT_END );
dentro del compilador CCS
Mañana voy a hacer algunas pruebas con un programa sencillo como el que nos entrega amablemente Cerebro.
Te mantengo informado, yo estoy usando un 18F2550 con la aplicación de PICUSB de J1M.
Saludos