Depois de passar toda a manhã fazendo todos possiveis testes descobri um problemão.
Possuo um toolchain comprado pela empresa em 2014, de:
CCS PIC C 5.026
MPLAB 8.86
Ao compilar o código, ao final, aparecia uma mensagem " NOT LOADED".
Resolvi então, compilar o arquivo direto na IDE do CCS, e a quantidade de flah/ram utilizados mudou totalmente!
Porém o CCS não reconhece nem o PIC KIT3 ou sequer o ICD3 (para gravação, apenas para debug, no caso).
Eu importei o HEX no mplab e gravei, pronto, o micro startou e o led de debug começou a piscar!!
Enfim, não da samba compilar o PIC24Fj128GC010 no MPLAB com o CCS, porém esta parte para mim tudo bem, não me importo de compilar em um e gravar no outro.
O Que acontece é que tudo funcionou, menos o display.
O esquema básico seria este:
https://drive.google.com/open?id=1MhbVKDfMw3CfBmJlGuJ0_1nMf-QJFTzS
E a inicialização que estou utilizando seria esta:
- Código: Selecionar todos
#include <24FJ128GC010.H>
#device ICD=3
//frc clock interno de 8mhz
#fuses NOWINDIS, NOWDT, NODEBUG, NOWRT, NOPROTECT, NOJTAG, FRC, NOIESO
#device ADC=16
#use delay(clock=8000000)// 8mhz suficiente para aplicação que não possui necessidade de alto processamento
//associação de endereços dos SFRS
#byte BUFCON1 = getenv("SFR:BUFCON1")
//controle do display lcd
#byte LCDCON = getenv("SFR:LCDCON")
#byte LCDREG = getenv("SFR:LCDREG")
#byte LCDPS = getenv("SFR:LCDPS")
#byte LCDSE0 = getenv("SFR:LCDSE0") //segmento 0 a 15
#byte LCDSE1 = getenv("SFR:LCDSE1") //segmento 16 a 31
#byte LCDSE2 = getenv("SFR:LCDSE2") //segmento 31 a 46
#byte LCDSE3 = getenv("SFR:LCDSE3") //segmento 31 a 46
#byte LCDDATA0 = getenv("SFR:LCDDATA0")//segmento milhar e centena
#byte LCDDATA1 = getenv("SFR:LCDDATA1")//segmento dezena e unidade
#byte LCDREF = getenv("SFR:LCDREF") //controle de tensão de referencia para lcd, como contraste
//inicializa hardware de escrita no display
//poderia ter utilizado o drive do ccs porém existe muito pouca informação lógica de como utilizar
//de forma que li o datasheet e fiz a configuração dos registradores
void Start_Display(void){
LCDPS = 1<<7 |1<<5|1<<4|1<<1;
LCDREG = 1<<15|1<<5|1<<4|1<<3|1<<1;
LCDREF = 1<<15|1<<5|1<<4|1;// não usa bias
LCDSE0 = 0xFFFF;
LCDSE1 = 0x7FFF;
LCDSE2 = 0x0000;
LCDSE3 = 0x0000;
LCDDATA0 = 0xFFFF;// segmentos milhar e centena desligados
LCDDATA1 = 0xFFFF;// segmentos dezena a unidade desliagdos
LCDCON = 1<<15|1<<6;
}
Os registradores que eu inicializei na unha, tiveram os valores definidos através do estudo de um documento como segue:
https://drive.google.com/open?id=17GxMo
Eu fiz alguns testes simples, e verifiquei que o display PN - LCD-S401C52TR-49, funciona bem após 2,7V.
Peço a ajuda dos caros pois esgotaram as possibilidades de minha competencia para este core com display, é a primeira vez que faço tal projeto!!!
Obrigado antecipadamente!!
Sem mais;