Página 1 de 1

LPC2148 & 24C256

MensagemEnviado: 16 Mar 2012 13:14
por aureo.oliveira
Alguem aí pode me ajudar ? , estou há 15 dias trabalhando o dia todo,mas nao consigo fazer o LPC2148 ler uma 24c256(dip), eu gravei em um programador de um amigo o seguite codigo a partir do endereço zero ; ABCDEFG , mas nao consigo lê-la, alguem tem um codido ai ? , eu so keil .
pinos A0 e A1 - gnd e kit do Rodrigo da www.kitmcu.com.br

sds,

MensagemEnviado: 16 Mar 2012 18:07
por tcpipchip
Posta ai o teu codigo...
99,98454454% usam Keil.

E este o código

MensagemEnviado: 18 Mar 2012 20:09
por precisao
[b]Tinha perdido minha senha, dai pedi meu amigo para postar ,mas o código é este :
void I2C_ISR(void)__irq
{
int temp=0 ;
temp = I2C0STAT ;

switch (temp)
{
case ( 0x08 ): // ENVIEI START

I2C0CONSET=0X04;
I2C0CONCLR=0x28;
I2C0DAT=0xA0;
break;

case ( 0x18 ): // ESCREVEU NA E2PROM E VOLTOU
I2C0DAT=0x00;
I2C0CONSET=0X04;
I2C0CONCLR=0x28;

case ( 0x28 ): // I2DAT FOI TRANSMITIDO, VEIO ACK
I2C0DAT = 0x00; //LSB Address
I2C0CONSET=0X04;
I2C0CONCLR=0x28;
I2C0DAT=0xA1;

break;

case ( 0x40 ): // SLA + R FOI TRANSMITIDO,


I2C0CONSET=0X04;
I2C0CONCLR=0x28;
I2C0DAT=0xA1;
break;



case ( 0x50 ): //DATA BYTE FOI TRANSMITIDO E VEIO ACK

I2C0CONSET=0X04;
I2C0CONCLR=0x08;
E2PROM = I2C0DAT ;

break;

case ( 0x58 ): // Dado recebido .NOT ACK

I2C0CONSET = 0x20; //Resend Start condition

break;

default:

break;
}
I2C0CONCLR = 0x08; // Limpa flag de I2C( interrupção )

VICVectAddr = 0x0; //RESET VIC ADRESS INTERRUPT LAST

MensagemEnviado: 19 Mar 2012 16:25
por tcpipchip
Código: Selecionar todos
//BNU-6-3-2007
//CAPITULO 6 LIVRO SOBRE ARM
//PROGRAMA OK
//TOPICO: I2C (Vectored IRQ)
        Dim res as boolean
   Dim Ic2_Write_Address as boolean
   sub I2CSendByte()
      Ic2_Write_Address    = True
      I2C0CONCLR           = &H000000FF
      I2C0CONSET           = &H00000040
      I2C0CONSET           = &H00000020
   end sub
   Irq irq_I2C0()
   Dim  st As Byte
   st = I2C0STAT
       Print #0, Hex$(St)
      Select Case (st)
        Case &H00000008
         I2C0DAT    = &H000000AA
         I2C0CONCLR = &H00000020
         Case &H00000018
         I2C0DAT    =     &H00000024 'Endereço
         Case &H00000028
            if Ic2_Write_Address = True then
               I2C0DAT    =  &H00000024 'Dado
               Ic2_Write_Address = Not Ic2_Write_Address
            else
               Print #0, "Escrito..."
               I2C0CONSET  = &H00000010
               end if
         Case &H00000020
         I2C0DAT    =  &H00000024
      End Select
     I2C0CONCLR      = &h00000008
      VICVectAddr     = &H00000000
End Irq
sub main()
      PINSEL0   =      &H00000051
      I2C0SCLH  =      &H00000010
      I2C0SCLL  =      &H00000010
      res = __hbbr_install_irq(I2C0_INT, AddressOf irq_I2C0)
      Call __hbbr_enable_irq()
      Call I2CSendByte()
      do
      loop while 1 = 1
   end sub
 

Dim res as boolean
   Dim Ic2_Write_Address as boolean
   sub I2CSendByte()
      Ic2_Write_Address    = True
      I2C0CONCLR           = &H000000FF
      I2C0CONSET           = &H00000040
      I2C0CONSET           = &H00000020
   end sub
   Irq irq_I2C0()
   Dim  st As Byte
   st = I2C0STAT
       Print #0, Hex$(St)
      Select Case (st)
        Case &H00000008
         I2C0DAT    = &H000000AA
         I2C0CONCLR = &H00000020
         Case &H00000018
         I2C0DAT    =     &H00000024 'Endereço
         Case &H00000028
            if Ic2_Write_Address = True then
               I2C0DAT    =  &H00000024 'Dado
               Ic2_Write_Address = Not Ic2_Write_Address
            else
               Print #0, "Escrito..."
               I2C0CONSET  = &H00000010
               end if
         Case &H00000020
         I2C0DAT    =  &H00000024
      End Select
     I2C0CONCLR      = &h00000008
      VICVectAddr     = &H00000000
End Irq
sub main()
      PINSEL0   =      &H00000051
      I2C0SCLH  =      &H00000010
      I2C0SCLL  =      &H00000010
      res = __hbbr_install_irq(I2C0_INT, AddressOf irq_I2C0)
      Call __hbbr_enable_irq()
      Call I2CSendByte()
      do
      loop while 1 = 1
   end sub
 


Aqui tem um exemplo que fiz em HBBRBASIC...

TCPIPCHIP

MensagemEnviado: 19 Mar 2012 19:35
por lopesjm
Olá,

Veja se este site de ajuda. Ele cria um código básico para os periféricos. Quem sabe a tua inicialização tenha alguma configuração inadequada.

http://www.codearchitect.org/nxp/v2/

[]s
Jorge