Hola chicos, aquí presento avances:
Bueno con el aporte del señor Suky, pues he logrado que el SPI se me encienda como se ve en la figura!!!
Pero aún sigue sin dar voltaje de salida... que raro no? (Tono Ironico)
Ahora, yo asumi que la dirección que mandabas en tu programa Suky es una dirección para decirle al DAC que va a recibir un dato!! o me equivoco?
En la figura anexada en .rar pueden apreciar lo que ha sucedido...
Que código use??, pues hice unos cuantos cambios y con todos probe y lo único que pude lograr fue que el SPI encendiera:
Cabecera:
#use spi(MASTER,CLK=PIN_B4, DO=PIN_B2, DI=PIN_B1, BITS=16, MODE=3, MSB_FIRST, FORCE_SW, stream= BUSSPI)
int16 ADC;
float dato;
Con está instrucción me prendio en SPI sin mostrar datos a la salida:
set_adc_channel(0); // Lee el canal AN0 (Señal de la RTD)
delay_us(10); // Demora para capturar bien el dato
ADC=read_adc(); // ADC=dato digital del ADC
dato=((float)ADC*5)/255; // Convierto a analógico
spi_write(0x0554);
while (! BF ); // Espera a que se transmita
spi_write(ADC);
while (! BF ); // Espera a que se transmita
delay_us(200);
Con está hacía lo mismo, pero en proteus se me venian todos estos mensajes... (Los que se observan en dibujo1)... Me ignoraba la data enviada...
set_adc_channel(0); // Lee el canal AN0 (Señal de la RTD)
delay_us(10); // Demora para capturar bien el dato
ADC=read_adc(); // ADC=dato digital del ADC
dato=((float)ADC*5)/255; // Convierto a analógico
c=ADC;
SPI_Envia (c,0x0554 ); // Envía dato
delay_us(200);
Donde:
unsigned char SPI_Envia ( unsigned char c,unsigned int dir);
unsigned char SPI_Envia ( unsigned char c,unsigned int dir)
{
SSPBUF = 0x0554; // Envia dato
while (! BF ); // Espera a que se transmita
SSPBUF =c;
while (! BF ); // Espera a que se transmita
return SSPBUF ;
}
Con está me dió un error de compilación...
set_adc_channel(0); // Lee el canal AN0 (Señal de la RTD)
delay_us(10); // Demora para capturar bien el dato
ADC=read_adc(); // ADC=dato digital del ADC
dato=((float)ADC*5)/255; // Convierto a analógico
SPI_XFER(c,0X0554);
delay_us(200);
ERROR: STREAM MUST BE A CONSTANT IN THE VALID RANGE...
Por cierto una pregunta, es necesario activar y desactivar el DAC, no se puede dejar activado todo el tiempo, así como lo tengo en mi diagrama, es decir, con el CS puesto a tierra?
Por cierto el voltaje de referncia es de 2V...
Y bueno disculpen tanta molestia e insistencia con este tema, pero es que no me quiero quedar tranquila hasta saber que está transmisión haya funcionado... Ya se me convirtio en una meta jejeje
Atte: Enigma... La llenrita de Guayana