PIC simulator IDE + i2c EEPROM 24LC256

Software potřebné k práci s elektronikou

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
vohrablo
Příspěvky: 24
Registrován: 24 dub 2009, 02:00

PIC simulator IDE + i2c EEPROM 24LC256

#1 Příspěvek od vohrablo »

Ahoj,
pouzivate nekdo tento soft?
Potreboval bych radu:
Nedari se mi zapisovat a cist do EEPROM (v realu, v simulaci neni problem).
Do PICu jsem zkusil zapsat priklad "EXAMPLE 8: I2C communication with 24c256 eeprom" ( http://www.oshonsoft.com/picexamples.html ), bohuzel to nejak nejde. Porad to cte 255.
Nevite nekdo, kde je finta? Trochu tusim, ze by mohla byt zrada v konfiguraci SSPCON, SSPADD atd., ale fakt nevim. ASM bohuzel vubec nerozumim.
Diky moc za pripadne rady.

Edit: Asi by to spis melo byt v Programování PIC, ATMEL, EEPROM a dalších obvodů ... Sorry

Uživatelský avatar
jmysik
Příspěvky: 7
Registrován: 21 čer 2007, 02:00

#2 Příspěvek od jmysik »

Zdravím,
Odzkoušel jsem vámi uvedený příklad a funguje bez problému. Jelikož nemá PIC 16f877A, tak jsem to naprgramoval do PIC 16f84A a jako výstup pro monitorování jsem použil RS232 a Hyperterminal.
Jediné co mě napádá zda máte správnou adresaci vlastní paměti.
Zde je výpis programu.
'***************************************
'program 1.bas
'I2C sbernice; odzkouseni pameti 24lc256
'vystup RS 232
'autor JMy
'verze 6.71
'procesor PIC 16F84A
'externi krystal 4 MHz; vsechny port digitalni
'PA0 = SDA; PA1 = SCL
'PB1 = TX; PB2 = RX; 9600Bd

'******************************************************

Define CONF_WORD = 0x3ff1 'configurace procesoru

AllDigital

Symbol scl = PORTA.0
Symbol sda = PORTA.1

Dim addr As Word
Dim data As Byte

'vymaz
addr = 2
I2CRead sda, scl, 0xa0, addr, data
Gosub delay
If data <> 255 Then
For addr = 0 To 10
I2CWrite sda, scl, 0xa0, addr, 255
Gosub delay
Next addr
Endif
'*********************************************
Serout PORTB.1, 9600, " Zapis dat ", CrLf
For addr = 0 To 10
data = 255 - addr
Gosub vystup1
I2CWrite sda, scl, 0xa0, addr, data
Gosub delay
Next addr
'*********************************************
Serout PORTB.1, 9600, " Cteni dat ", CrLf
For addr = 0 To 10
I2CRead sda, scl, 0xa0, addr, data
Gosub vystup1
Gosub delay
Next addr
Serout PORTB.1, 9600, " Konec ", CrLf
End
'*********************************************
vystup1:
Serout PORTB.1, 9600, #addr, " : ", #data, CrLf
Return
'********************************************
delay:
WaitMs 250
Return
'*********************************************

Odpovědět

Zpět na „Software“