EINT1 P2.11 & LCD TFT

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

EINT1 P2.11 & LCD TFT

Mensagempor die6o » 22 Dez 2010 15:34

Pessoal.
Estou com um problema meio que, "chato", contra a linha LPC24XX da NXP.
Estou com o projeto em andamento, e utilizando a interface dedicada de LCD do LPC2478, acontece que nesta configuração, eu não utilizo o sinal LCDCLKIN, que é multiplexado com o PINO da EINT1.
Com eu configurando este pino como GPIO, eu consigo ler o estado, e até mesmo escrever normalmente. Acontece que configurando como EINT1, não funciona, simplesmente não funciona.....
Se eu deixo o codigo exatamente como está, e comento as partes de LCD, funciona perfeitamente. "Detalhe, estou confirmando todos os flags e registradores pelo DEBUG via hW"...

Existe algum macete, ou realmente, EINT1 não funciona com LCD ATIVO ?


Detalhe, o 2478 possui 4 EINTS... EINT0 a EINT3.

Quando abilitado o display, EINT1,2,3, caem fora, e fica só uma EINT ? PQP!!!! Nem me fala uma coisa dissas....
die6o
Nibble
 
Mensagens: 71
Registrado em: 07 Mar 2007 13:26

Mensagempor tcpipchip » 22 Dez 2010 18:54

tentou os exemplos SWING ?
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor die6o » 23 Dez 2010 08:36

tcpipchip escreveu:tentou os exemplos SWING ?


tcpipchip, acho que você não entendeu a questão.

Meu problema não é com o display, que funciona lindamente bem.

Meu problema é com as EINT´S. No Caso a EINT1, que não funciona.
die6o
Nibble
 
Mensagens: 71
Registrado em: 07 Mar 2007 13:26

Mensagempor tcpipchip » 23 Dez 2010 09:12

Olhou a configuracao do PINSELx ?
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor die6o » 23 Dez 2010 09:18

.................
Editado pela última vez por die6o em 23 Dez 2010 09:24, em um total de 1 vez.
die6o
Nibble
 
Mensagens: 71
Registrado em: 07 Mar 2007 13:26

Mensagempor die6o » 23 Dez 2010 09:20

Seguinte...
A EINT1, não funciona, se o LCD estiver abilitado...

Eu entrando no Debug>hw>pins.. P2.11 = EINT1, PINDIR = input, etc etc, esta tudo ok... Sem problemas..
Este pino, mesmo com o LCD abilitado e funcionando, eu consigo utilizar ele como GPIO, tanto entrada como saida, normalmente..
O Problema esta como EINT..
die6o
Nibble
 
Mensagens: 71
Registrado em: 07 Mar 2007 13:26

Mensagempor tcpipchip » 23 Dez 2010 11:52

Código: Selecionar todos
#define LPC2138
#include "LPC210x.bas"
#define GPS_Test
#define enable_gps_debug 0
#include "GPS\GPS_ser.lib"

dim e0 as integer
dim s0 as integer
dim e2 as integer
dim s2 as integer

DIM MENSAGEM_GPS(200) AS STRING

dim rx as integer

'TIMER A CADA 1000ms

INTERRUPT SUB TIMER1IRQ
 *T1_IR = 1       ' Clear interrupt
 *VICVectAddr = 0 ' Acknowledge Interrupt
ENDSUB

SUB ON_TIMER ( msec, dothis )
  *VICVectAddr7 = dothis ' set function of VIC 7
  *VICVectCntl7 = $25    ' use it for TIMER1 Interrupt:
  *VICIntEnable = $20    ' Enable TIMER1 Interrupt
  *T1_MR0 = msec-1 ' set up match number of ms
  *T1_MCR = 3      ' Interrupt and Reset on MR0
  *T1_IR  = 1      ' clear interrupt
  *T1_TC  = 0      ' clear timer counter
  *T1_TCR = 1      ' TIMER1 Enable
  *VICVectAddr = 0 ' Acknowledge all Interrupts
ENDSUB

INTERRUPT SUB EINT2IRQ
 *SCB_EXTINT  = 4 ' Clear interrupt
 *VICVectAddr = 0 ' Acknowledge Interrupt
 e2 = e2 + 1
 print "-"
ENDSUB


SUB ON_EINT2(rise_edge, dothis)
  ' Setup MUST be done before enabling the interrupt
  '*PCB_PINSEL0  = *PCB_PINSEL0 or psfEINT2 ' select pin function
  *PCB_PINSEL0  = *PCB_PINSEL0 or &H0000C000 ' select pin function
  *SCB_EXTINT   = 4                        ' clear interrupt
  *SCB_EXTMODE  = *SCB_EXTMODE or 4        ' enable edge mode

  if rise_edge
    *SCB_EXTPOLAR = *SCB_EXTPOLAR or 4        ' trigger on rise edge
  else
    *SCB_EXTPOLAR = *SCB_EXTPOLAR & &HFFFFFFFB ' trigger on fall edge (default)
  endif

  *VICVectAddr6 = dothis  ' set function of VIC 6
  *VICVectCntl6 = &H30    ' use it for EINT2 Interrupt:
  *VICIntEnable = &H10000 ' enable EINT2 Interrupt:

  *VICVectAddr = 0 ' Acknowledge all Interrupts
ENDSUB

INTERRUPT SUB EINT0IRQ
 *SCB_EXTINT  = 1 ' Clear interrupt
 *VICVectAddr = 0 ' Acknowledge Interrupt
 e0 = e0 + 1
 print "-"
ENDSUB

SUB ON_EINT0(rise_edge, dothis)
  ' Setup MUST be done before enabling the interrupt
  *PCB_PINSEL1  = *PCB_PINSEL1 or psfEINT0 ' select pin function
  *SCB_EXTINT   = 1                        ' clear interrupt
  *SCB_EXTMODE  = *SCB_EXTMODE or 1        ' enable edge mode

  if rise_edge
    *SCB_EXTPOLAR = *SCB_EXTPOLAR or 1         ' trigger on rise edge
  else
    *SCB_EXTPOLAR = *SCB_EXTPOLAR & &HFFFFFFFE ' trigger on fall edge (default)
  endif

  *VICVectAddr4 = dothis  ' set function of VIC 4
  *VICVectCntl4 = &H2e    ' use it for EINT0 Interrupt:
  *VICIntEnable = &H4000  ' enable EINT0 Interrupt:

  *VICVectAddr = 0 ' Acknowledge all Interrupts
ENDSUB

'*********************************
SUB PEGA_DADOS_GPS
        'PEDE PARA GPS ENVIAR DADOS
        OUT(12)= 1
        WAIT 500
        OUT(12)= 0     
               'AGUARDA TIMEOUT (SERIN RETORNA -1 SE TIMEOUT...ACIMA DO TEMPO DE DADOS ENVIADOS PELO GPS)                           
       
        WHILE SERIN(GPS_SER_RX_PT_NO,GPS_SER_RX_PT_BAUD,1,1,MENSAGEM_GPS)<>-1
        LOOP

        IF GPS_QUERY_RCVR THEN
            IF GPS_PARSE_MESSAGES THEN
                     GPS_PRODUCTION(CLS)
                 PRINT_GPS_DATA             
                 PRINT "OK"
            ENDIF       

               IF s0 <> e0 then
                  s0 = e0
               ENDIF

               IF s2 <> e2 then
                  s2 = e2
               ENDIF
        ENDIF
        'PEDE PARA ENCERRAR ENVIO DE DADOS
        OUT(12)= 1
        WAIT 500
        OUT(12)= 0     

ENDSUB


' -----------------------------------------------------------------------------------------------------------------------------
MAIN:   
    '**********HABILITA INTERRUPÇÃO SENSOR 1 (INT0)
         ON_EINT0(0, ADDRESSOF EINT0IRQ) 'SUBIDA DE BORDA
     ON_EINT2(0, ADDRESSOF EINT2IRQ) 'SUBIDA DE BORDA
    'HABILITA TIMER PARA GERAR INT A CADA 50ms
     ON_TIMER(50, ADDRESSOF TIMER1IRQ)

    '**********ACERTA A HORA APENAS UMA VEZ...(BATERIA, RTC INTERNO)   
    'HOUR(11)
    'MINUTE(11)
    'SECOND(11)
    'DAY(3)
    'MONTH(8)
    'YEAR(2010)
    'WEEKDAY(6)

    'SETA PINO 12 COMO SAIDA (REQUISICAO AO GPS PARA LEITURA DE DADOS), ESTADO INICIAL 0
    DIR(12) = 1


    'VERIFICA SE GPS ESTÁ LIGADO, DESLIGUE

    IF SERIN(GPS_SER_RX_PT_NO,GPS_SER_RX_PT_BAUD,1,1,MENSAGEM_GPS)<>-1 THEN
        OUT(12) = 0
        WAIT 1
        OUT(12) = 1
        WAIT 1
        OUT(12) = 0
    ENDIF
   
    '**********INICIALIZA GPS PARA 4800, NA PORTA P0.13
    GPS_INIT_RCVR
    '**********SINALIZADORES DE INTERRUPÇÕES

    s0=0
    e0=0
    s2=0
    e2=0

    '**********AGUARDA QUALQUER UM DOS SENSORES ACIONAR...

    WHILE 1=1
        IF s0<>e0 then
             PEGA_DADOS_GPS         
        ENDIF
        IF s2<>e2 then
             PEGA_DADOS_GPS         
        ENDIF
    WAIT 1000
    LOOP
   
END
'-----------------------------------------------------------------------------------------------------------------------------


Aqui um codigo em BASIC que uso int0 e int2, talvez lhe ajude...sao basicamente os mesmo registradores
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor die6o » 23 Dez 2010 15:01

Novamente.
O EINT seja "0,1,2,3", funciona lindamente bem, até que o LCD controler é habilitado...
É sabido que o EINT2 e 3, são utilizados no hW do LCD, e o EINT1, não!! Mesmo não sendo utilizado, este EINT1, não interrompe!

Não é configuração do EINT1, pois se fosse, o mesmo não funcionaria com o LCD desabilitado!

A função que habilita a EINT1, é chamada APÓS o LCD ser habilitado !!
die6o
Nibble
 
Mensagens: 71
Registrado em: 07 Mar 2007 13:26

Mensagempor polesapart » 24 Dez 2010 10:19

Na pag. 175 da rev. 04 do manual, tem a seguinte nota de rodapé:

[18] Either one of the external interrupts EINT1 to EINT3 or the LCD function is selectable.

Que dá a entender que a função LCD, quando ativa, inutiliza as funções EINT 1 a 3.

Na tabela 135, na pag. 184, na descrição do registrador PINSEL4, que cobre o pino p2.11 , lê-se que a função alternativa 01 compartilha as funções EINT1 e LCDCLKIN.

Até ai, tudo bem (ou não), poderia se especular que haveria uma alternativa.

Mas quando você olha as tabelas nas pgs. 325 a 328, vc vê que a maioria das configurações de LCD usa sim a função LCDCLKIN, em especial, a tabela na pg 328 que se refere aos displays TFT, que são a maioria deles. Neste caso em todas as configurações possíveis, lá está a função habilitada, o que certamente desabilita a EINT1 (leia a nota de rodapé #2), mesmo que houvesse na configuração do periférico LCD, alguma forma de não chavear os pinos sem uso efetivo.
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor die6o » 27 Dez 2010 07:41

polesaparte, obrigado pelo seu tempo desprendido!!!

Cara, eu ja tinha visto tudo isso, mais tipo, sabe quando você não quer acreditar numa m**** desse tamanho por uma empresa igual a NXP...? Você busca uma alternativa, de forma a não desanimar da empresa que você utiliza os uC ?
Tenho 3 displays, de diferentes barramentos, e todos TFT. Em nenhum dos casos o hW do 2478 utiliza este pino LCDCLKIN como sinc clock... para alimentar o barramento interno do AHB.. Para falar a verdade, ainda não ví nenhum display, ou nenhuma aplicação, onde um uC com hw dedicado para displays utiliza o clock do lcd ....

Cara olha, acho que por isso o fabim esta desanimando de nxp, e partindo para freescale "imx233", e vai começar a mexer agora com sansung...

Bom, fazer o que!!!!

Muito obrigado novamente.

Die6o.
die6o
Nibble
 
Mensagens: 71
Registrado em: 07 Mar 2007 13:26

Mensagempor tcpipchip » 28 Dez 2010 17:51

voce so recorreu ao forum ?
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!


Voltar para ARM

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x