TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: oso en 09 de Mayo de 2007, 15:12:24
-
Necesito que me ayuden con un problema de tiempos que tengo con la escritura de una memoria serial spi del tipo 25lc080 aqui les dejo parte del codigo para que lo vean, y por favor que me expliquen en que me estoy equivocando.
EE_WRITE_ENB:
low CS
delayms 5
shout
SSPBUF = WRT_ENB
gosub Envio_ok
high CS
delayms 5
return
EE_WRITE:
low CS
delayms 5
SSPBUF = WRT_CMD
gosub Envio_ok
SSPBUF = $0
gosub Envio_ok
SSPBUF = $0
gosub Envio_ok
SSPBUF = "X"
gosub Envio_ok
high CS
return
ENVIO_OK:
IF SSPIF = 0 Then envio_ok
SSPIF = 0
delayms 5
return
-
:-/ :-/ :-/Un ejemplito que funciona, igual RARAAVIS ha trabajado un poco mas y lo ha presentado mejor :-/ :-/ :-/
Include "PROTON18_20.INC"
XTAL = 4
DECLARE SHIFT_DELAYUS 5
'******************* VARIABLES Y CONSTANTES **********************
DIM WRT_ENB AS byte
DIM WRT_CMD AS byte
DIM WRT_DIS AS byte
DIM RD_CMD AS byte
dim HOLA [4] AS BYTE
dim i AS BYTE
DIM LOW_ADDR AS BYTE
DIM HIGH_ADDR AS BYTE
Symbol CS_ = PORTC.0 ' Chip select pin
Symbol SCK_ = PORTC.3 ' Clock pin
Symbol SDI_ = PORTC.4 ' Data in pin
Symbol SDO_ = PORTC.5 ' Data out pin
WRT_ENB = %00000110
WRT_CMD = %00000010
WRT_DIS = %00000100
RD_CMD = %00000011
HOLA
HOLA [1] = "B"
HOLA [2] = "C"
HOLA [3] = "D"
Dim Addr as WORD ' Address
DIm B0 as Byte ' Data
Delayms 500 ALL_DIGITAL = TRUE ' Set PORTA and PORTE to digital
high CS_ ' Chip select inactive
Delayms 5 ' Wait for LCD to start up
Gosub eewriteen ' Enable SEEPROM writes
HIGH_ADDR = 0
LOW_addr = 0 ' B0 is data for SEEPROM
gosub eewrite ' Write to SEEPROM
loop1: Goto loop1
'******* Subroutine to read data from addr in serial EEPROM ********
eeread:
CS_ = 0
Shout sDo_, sCK_, MSBFIRST, [RD_CMD\8, LOW_ADDR\8]
Shin sDi_, sCK_, MSBPOST_H, [B0]
CS_ = 1
Return
'************** Subroutina para escribir EEPROM ******************
eewrite:
CS_ = 0
Shout sDo_, sCK_, MSBFIRST, [WRT_CMd, high_addr, LOW_ADDR, STR HOLA] ' Send write command, address and data
CS_ = 1
delayms 5
'************* Subrutina que habilita escritura de EEPROM *************
eewriteen:
CS_ = 0
Shout sDo_, sCK_, MSBFIRST, [WRT_ENB]
CS_ = 1
Return
End