Página 1 de 1

I2C em Assembler (start/stop)

MensagemEnviado: 05 Abr 2009 04:52
por icaro51
Oi pessoal estou tentando impementar um programinha em assembler para ler os dados do acelerometro do controle do Wii.
Os dados sao passado no formato I2C e eu estou usando o pic18f258 que tem o protocolo implementado.
Depois de dar uma olhada no datasheet e implementar o programa eu estava vendo uns programas em C que fazem a mesma leitura para saber o protocolo e vi que em C tem os comandos I2C_Start() e I2C_Stop() isso nao existia no meu codigo, procurando na net encontrei uma comunicacao I2C para E2Prom que e mais ou menos assim:

call AGUARDA_I2C_LIVRE
bcf STATUS,C
rlncf ENDERECO_HIGH,W
iorlw B'10100000'
movwf SSPBUF
call AGUARDA_I2C_LIVRE
call TESTA_ACK
btfsc F_ERRO
goto I2C_ERRO

movf ENDERECO_LOW,W
movwf SSPBUF
call AGUARDA_I2C_LIVRE
call TESTA_ACK
btfsc F_ERRO
goto I2C_ERRO

Minha duvida e se esse iorlw estaria fazendo o papel do I2C_Start e o que faria o papel do I2C_Stop


Desde ja agradeco,
Icaro

MensagemEnviado: 12 Abr 2009 23:47
por Vonnilmam
Se eu entendi bem sua pergunta:

Quero lhe dizer que o star quanto o stop são necessarios quer seja em assembler ou c...Dá uma olhada no site da microchip que lá tem uma rotina para controlar memorias i2c via software e via hardware do pic, eu particularmente utilizo via software e a utilizo a varios anos...existem varios formatos de controle desde o simples ler e escrever um byte na memoria como escrever ou apagar ou ler em blocos de 64 bytes que é o mais convencional e rapido...dá uma olhada lá e se não conseguir achar avise que posto para vc uma rotina que funciona certinha, ok...em assembler é claro...

VIVA AO ASSEMBLER...