pretendo hacer una libreria nueva ya que usar ka que tenia por HW da problemas que nadie sabemos resolver. Bueno lo mas facil es lo tipico, spi_write, spi_read....y paro ahí porque ya con esas me da problemas.
Si miramos datasheet vemos esto :
o sea, para escribir " 3 escrituras" y para leer " escrituras"
que las hago de la siguiente forma( la funciones) :
void write_MCP2510(int direccion, int dato){
output_low(PIN_A5);
spi_write(0x02); // orden esribir
spi_write(direccion); // direccion
spi_write(dato); // dato
output_high(PIN_A5);
Para la de lectura, tengo varias opciones
1)
int read_returns_Data_MCP2510(int direccion){
int lectura;
output_low(PIN_A5);
spi_write(0x03); // orden leer
spi_write(direccion);
lectura=spi_read(direccion);
output_high(PIN_A5);
return (lectura);
2)
read_returns_Data_MCP2510(int direccion){
output_low(PIN_A5);
spi_write(0x03); // orden leer
spi_write(direccion);
output_high(PIN_A5);
3)
int read_returns_Data_MCP2510(int direccion){
int lectura;
output_low(PIN_A5);
spi_write(0x03); // orden leer
spi_write(direccion);
lectura=spi_read(); // no haria falta porque ya se ma mandado desde el spi_write
output_high(PIN_A5);
return (lectura);
}
Uso mas bien esta ultima tercera, pero el osciloscopio solo me sale una cosa que no mando en asboluto, deberia leer unicamente del pin del MCP SO el dato que escribo.
Si me remitis al datasheet... lo tengo ya mas que sobao, la cuestion es saber en que me pierdo. Quizas el problema que tenia con la modificacion de la libreria can-mcp2510 venia de este mismo problema tambien.
leiendo el help del ccs, veo que spi_write lo que hace es escribir dato, e inmediatamente saca un dato por SO ( PIC) esta parte me pierde... si yo no quiero que saque nada...Es como si spi read fuera para poder guardar la lectura en una variable. Supongo que todo el problema viene por ahi, yo quiero usar mi propia libreria de escritura, usando spi_write().
alguien ve que sucede ahi extraño ?