Autor Tema: MEMORIA EXTERNA SPI Y PIC18F4550  (Leído 3145 veces)

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

Desconectado ADY12

  • PIC10
  • *
  • Mensajes: 43
MEMORIA EXTERNA SPI Y PIC18F4550
« en: 18 de Mayo de 2015, 05:44:12 »
Tengo la intención de almacenar los datos que obtengan los 4 sensores que tengo. Mi memoria se trata de una memoria N25Q06 tipo de comunicación SPI. La idea que tengo es que al pulsar una tecla del teclado predefinida anteriormente en el programa, esta almacene los datos y posteriormente estos datos serán volcados en el LABVIEW. He estado observando varias informaciones teóricas para poder comenzar con la comunicación SPI . Me gustaría tener un pequeño ejemplo para poder comenzar a tirar y ya poderlo desenvolupar.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 805
    • https://electronicadicto.wordpress.com/
Re: MEMORIA EXTERNA SPI Y PIC18F4550
« Respuesta #1 en: 04 de Junio de 2015, 09:36:43 »
Mira a ver este proyecto que me hice para manejar una memoria 25LC1024

25LC1024_C18

El proyecto está realizado con C18 y creo recordar que hay hasta un ejemplo en proteus.

Espero que te sirva

Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado ADY12

  • PIC10
  • *
  • Mensajes: 43
Re: MEMORIA EXTERNA SPI Y PIC18F4550
« Respuesta #2 en: 18 de Junio de 2015, 17:13:12 »
He realizado un pequeño programa, para que escriba 7 datos y lea 7 datos. El problema es que lo escribe pero al leer, solamente me lee 0s, esto a que es debido?

Tengo un memoria externa N25Q064 comunicacion SPI

Aqui teneis el programa:

Código: [Seleccionar]
#include <18F4550.h>
//!#fuses XT               //Cristal de cuarzo de 8 MHz
//!#fuses NOWDT            //Perro guardian deshabilitado
//!#fuses NOPROTECT        //Inhabilitado la proteccion contra la lectura
//!#fuses NOLVP  
//!#fuses MCLR
#fuses INTHS                  //Oscilador Interno

#use delay(internal=8MHz)       //Velocidad Oscilador Interno
#use spi(master,DI=PIN_C7,DO=PIN_B0,CLK=PIN_B1,ENABLE=PIN_A5)                                 //Comunicacion PIC-MEMORIA SPI
#include "C:\Users\x\Desktop\x\PROGRAMA_DEFINITIVO\flex_lcd420.c"       //LCD
#include <math.h>                                    
#include "C:\Users\x\Desktop\x\PROGRAMA_DEFINITIVO\kbd.c"               //Teclado
#include <stdlib.h>

//Variables
int dato;
int direccion;

void main(){

//Configuracion de la memoria
setup_spi(SPI_MASTER | SPI_H_TO_L | SPI_CLK_DIV_16);
//Inicializar LCD
lcd_init();
//Habilitar Escritura
output_low(PIN_A5);            //Habilitar dispositivo
spi_write(6);                    //Habilitar la escritura de la memoria
output_high(PIN_A5);            //Deshabilitar el dispositivo
//Escribir Memoria
output_low(PIN_A5);            //Habilitar dispositivo
spi_write(2);                    //Instruccion de escritura de la memoria
spi_write(0);                    //Direccion de la memoria
lcd_putc("E");
for (dato=0;dato<7;dato++){               //Dato
spi_write(dato);                    //Valor del dato
printf(lcd_putc,"%u",dato);         //Muestra el valor del dato en LCD
delay_ms(500);                   //Tiempo de espera
}
//Leer
output_high(PIN_A5);            //Deshabilita escritura
delay_ms(1000);
lcd_putc("\nL");
output_low(PIN_A5);            //Habilitar dispositivo
spi_read(3);                     //Habilitar la lectura de la memoria
spi_read(0);
for (direccion=0;direccion<7;direccion++){
dato=(spi_read(direccion));                 //Lee el dato
printf(lcd_putc,"%u",dato);          //Muestra el valor del dato en LCD
delay_ms(500);
}
output_high(PIN_A5);            //Deshabilita escritura
}

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 805
    • https://electronicadicto.wordpress.com/
Re: MEMORIA EXTERNA SPI Y PIC18F4550
« Respuesta #3 en: 18 de Junio de 2015, 18:26:27 »
No estoy seguro pero creo que te faltan datos a la hora de decirle a la memoria que vas ha leer, ¿Has mirado el datasheet para ver cual es la secuencia de lectura?, en la página 56 dice cual es el procedimiento
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado ADY12

  • PIC10
  • *
  • Mensajes: 43
Re: MEMORIA EXTERNA SPI Y PIC18F4550
« Respuesta #4 en: 19 de Junio de 2015, 05:37:23 »
He seguido el datasheet, pero es correcto las funciones de leer. No entiendo porque me aparecen 0s al leer? También he comprobado las conexiones en la placa pero todas son correctas, nose es algo que no veo, y no se porque ocurre.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 805
    • https://electronicadicto.wordpress.com/
Re: MEMORIA EXTERNA SPI Y PIC18F4550
« Respuesta #5 en: 19 de Junio de 2015, 11:08:12 »
¿La velocidad de lectura la has comprobado?
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: MEMORIA EXTERNA SPI Y PIC18F4550
« Respuesta #6 en: 19 de Junio de 2015, 13:55:21 »
Citar
He realizado un pequeño programa, para que escriba 7 datos y lea 7 datos. El problema es que lo escribe pero al leer, solamente me lee 0s, esto a que es debido?

Como sabes que el dato fue escrito?   :?

Desconectado ADY12

  • PIC10
  • *
  • Mensajes: 43
Re: MEMORIA EXTERNA SPI Y PIC18F4550
« Respuesta #7 en: 29 de Junio de 2015, 05:45:59 »
Me di cuenta que estaba mezclando los protocolos de comunicación de hardware con los de software. He establecido que lo haré por software por lo tanto, sera usar:

#use spi(master,DI=PIN_C7,DO=PIN_B0,CLK=PIN_B1,ENABLE=PIN_A5)   para la configuración.

spi_xfer (stream Data) para el tema de comunicarlo.

Ahora al haber encontrado este error estoy un poco perdido, de como por ejemplo guardar los valores de temperatura que obtiene una NTC por ejemplo cada 5 segundos, durante una hora.

Sabemos que con #task (rate=5s,max=1ms) void NTC ();

 se lee la NTC durante los 5 segundos.