Hola. Estoy usando una pantalla TFT,PIC18F2550 y CCS.
Cuando uso SPI por software el código funciona bien, pero es muy lento, así que decidí cambiarlo a SPI por hardware para hacerlo mas rápido, pero hago los ajustes de código y no funciona.
No sé qué es lo que estoy haciendo mal. Les agradecería si me pudieran ayudar.
Estos son los fuses y las funciones que uso que si funcionan:
Y éstos son los cambios que hice para tratar de usar hardware:
Y eso no funciona.
Cuando uso SPI por software el código funciona bien, pero es muy lento, así que decidí cambiarlo a SPI por hardware para hacerlo mas rápido, pero hago los ajustes de código y no funciona.
No sé qué es lo que estoy haciendo mal. Les agradecería si me pudieran ayudar.
Estos son los fuses y las funciones que uso que si funcionan:
Código:
#include <18f2550.h>
#fuses HSPLL,NOMCLR,PLL5,CPUDIV1
#use delay(clock=48000000)
#define CS pin_b4
#define RST pin_b3
#define DC pin_b2
#define SDI pin_b1
#define SCK pin_b0
#use spi(bits=8,mode=0,do=SDI,clk=SCK,enable=CS,load=DC,LOAD_ACTIVE=1,stream=ILI9341_COMMAND)
#use spi(bits=8,mode=0,do=SDI,clk=SCK,enable=CS,load=DC,LOAD_ACTIVE=0,stream=ILI9341_DATA)
//ESTAS MIS FUNCIONES IMPORTANTES QUE SI FUNCIONAN
void lcd_write_com(unsigned int8 command)
{
spi_xfer(ILI9341_COMMAND, command);
}
void lcd_write_data(unsigned int8 data)
{
spi_xfer(ILI9341_DATA, data);
}
Código:
#include <18f2550.h>
#fuses HSPLL,NOMCLR,PLL5,CPUDIV1
#use delay(clock=48000000)
#define CS pin_b4
#define RST pin_b3
#define DC pin_b2
setup_spi(SPI_MASTER|SPI_L_TO_H | SPI_XMIT_L_TO_H|SPI_CLK_DIV_16);
//Mis funciones que no funcionan:
void lcd_write_com(unsigned int8 command)
{
output_low(DC);
output_high(CS);
spi_write(command);
output_low(CS);
}
void lcd_write_data(unsigned int8 data)
{
output_high(DC);
output_high(CS);
spi_write(data);
output_low(CS);
}
Última edición por un moderador: