PIC pic 16F767 16F876A I2C

A

alejandrodaniel

Guest
come il titolo.
Se collego un esterno EEPROM 24C64 16f767 funziona bene.
nel SCL / SDA linea 2K2-up resistori pull.
il codice:
Codice:SUBPROCEDURAS''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''

PROCEDURA DI SUB Escribe_Eeprom (AS wAddress WORD DIM, DIM M AS WORD)

I2C_Start () 'Invia il segnale di start I2C

I2C_Wr ($ A6) 'Invia byte alla EEPROM esterna

I2C_Wr (HI (wAddress)) 'Invia l'alto valore dell'indirizzo EEPROM)

I2C_Wr (LO (wAddress)) 'Invia il basso valore l'indirizzo EEPROM)

I2C_Wr (M) 'Invia i dati del valore

I2C_Stop () 'Invia il segnale di stop I2C

END SUB

''''''''''''''''''''''''''''''''''''''''''''''''' COMINCIA '''''''''''''''''''''''

Principali:

ADCON1 =% 10.001.111 'analogico PORTA.0/1/2/3, riposo digital.PORTB digitale, giustificato a destra Vref

TRISA =% 000000 'Porta come output

Trisba =% 00000000 'PORTB come output

Frolic =% 00011000 'porte di ingresso e PORTC.3 PORTC.4

PORTA =% 000.000 'Porta Setaje

PORTB =% 00000000 'Setaje PORTB

PORTC =% 00000000 'PORTC Setaje

Address_mem = 0 'Inizializzare la variabile indirizzo

vValor = 0 'Inizializzare la variabile di dati

I2C_Init (312.500) 'SSPADD = ((FOSC/CLOCK_I2C) / 4) -1

Envia_Slave:

Escribe_Eeprom (Address_mem, vValor)

INC (vValor)

INC (Address_mem)

GOTO Envia_Slave

ELSE

GOTO Envia_Slave

END IF

FINE.

 
Dal momento che non riesco a ottenere alle prese con questo problema, ora mangia di dominare e slave.thanks tra 'USART.

 
Prendo la discussione.
il codice funziona bene con la EEPROM esterna.
quindi penso che sia un problema di impostazione del SSPCON, SSPCON2, SSPSTAT, PIR1, ecc ..................

Master Code 16F767
Codice:SUBPROCEDURAS''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''

PROCEDURA DI SUB Escribe_Slave (AS wAddress WORD DIM, DIM M AS WORD)

I2C_Start () 'Invia il segnale di start I2C

I2C_Wr ($ A4) 'byte Invia a slave

I2C_Wr (M) 'Invia i dati del valore

I2C_Stop () 'Invia il segnale di stop I2C

END SUB

''''''''''''''''''''''''''''''''''''''''''''''''' COMINCIA '''''''''''''''''''''''

Principali:

ADCON1 =% 10.001.111 'analogico PORTA.0/1/2/3, riposo digital.PORTB digitale, giustificato a destra Vref

TRISA =% 000000 'Porta come output

Trisba =% 00000000 'PORTB come output

Frolic =% 00011000 'porte di ingresso e PORTC.3 PORTC.4

PORTA =% 000.000 'Porta Setaje

PORTB =% 00000000 'Setaje PORTB

PORTC =% 00000000 'PORTC Setaje

Address_mem = 0 'Inizializzare la variabile indirizzo

vValor = 0 'Inizializzare la variabile di dati

I2C_Init (312.500) 'SSPADD = ((FOSC/CLOCK_I2C) / 4) -1

Envia_Slave:

Escribe_Slave (vValor, vValor)

INC (vValor)

GOTO Envia_Slave

ELSE

GOTO Envia_Slave

END IF

FINE.

 
Ciao ragazzi,
Sono novizio di Micro controller, attualmente di fare l'anno finale del progetto, hanno bisogno di aiuto su modulo trasmittente RF / codice assembly ricevendo da PIC a PIC.
Meglio se vi è un codice asm e schema schemi.
grazie

 

Welcome to EDABoard.com

Sponsor

Back
Top