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:
#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
}