Sida 1 av 2
pic till I2C EEPROM
Postat: 7 mars 2004, 17:31:13
av mullemeck
Hej!
Har kopplat in ett I2C EEPROM 24FC256 till en pic.
Men om jag skriver till det och försöker läsa sen så får den bara in noll.
jag är inte säker på om det är läsningen eller skrivningen som inte funkar..
Kod: Markera allt
cont CON %10100000
I2CWrite PORTC.4,PORTC.5,cont,17,[52]
Pause 800
I2CRead PORTC.4,PORTC,5,cont,17,[ret]
Pause 600
Debug DEC ret,10,13
Jag tycker att koden borde funkat..
Postat: 13 mars 2004, 17:34:51
av mullemeck
Har nu försökt få igång det i några timmar men det vill verkligen inte fungera..
det enda jag får ut när jag läser är 0.
finns det nått sätt man kan kolla om det är läsningen eller skrivningen som är fel?
eller kolla så att minnet fungerar?
Postat: 13 mars 2004, 18:18:00
av mrmike
Om du nån gång byggt en JDM så går det att läsa å skriva I2C-minnen med den. Sen borde det väl finnas mängder med kod på internet? För säkerhets skull kan du ju koppla WP till jord.
Postat: 13 mars 2004, 19:41:32
av mullemeck
testade nu att läsa och skriva lite till det med min pic programerare.. och det funkade utmärkt.. då är det alltså koden i pic:en som inte funkar då..
Postat: 14 mars 2004, 18:13:46
av mullemeck
wee.. nu funkade det..
fick tydligen bara skriva dit hexadecimala värden.. lite skummt
Postat: 14 mars 2004, 18:57:12
av mrmike
Grattis. Menar du skriva hexadecimalt i kompilatorn/assemblern? Minnet vill ha det binärt hoppas jag

Postat: 14 mars 2004, 19:36:37
av mullemeck
jo i kompilatorn... ganska skummt..
för i kompilatorns manual så fanns där flera exempel där de hade vanliga decimala tal.. helt skumt..
Postat: 14 mars 2004, 19:41:22
av EagleSpirit
är du säker på att du skrev rätt? Kompilatorn ska göra om det till binära. Det var ingen definiering du missa för att visa att det är decimalt?
Postat: 14 mars 2004, 20:05:52
av mrmike
Råkade ut för samma sak när jag bytte version av MPLAB. Där kan man använda RADIX för att sätta vilken form som ska vara standard. Det kanske finns nåt liknande i din kompilator.
Postat: 14 mars 2004, 20:24:44
av mullemeck
nej i picbasic så är decimalt standard förutom när man skickar decimalt få då måste man skriva lite argument så det inte bli ascii
i manualen står det att man får skiva såhär:
I2CWrite sda,scl,%10100000,addr,[6]
men det funkar inte..
om man därimot skriver som
I2CWrite sda,scl,%10100000,addr,[$6]
så funkar det..$ tecknet säjer att det är hexadecimal..
men det spelar inte så stor roll.. man får bara konvertera allt till hex först..
Postat: 15 mars 2004, 08:56:25
av baltazar
>>Mr Mike
"borde finnas mängder med kod på internet", jag skulle gärna vilja komma över lite sån kod, fast i assembler. Har letat länge o väl men inte hittat det jag söker. Tänkte använda usart half duplex, verkar som det skulle funka mellan en 16f628 och ett eeprom. Vet du om någon sådan länk så skulle jag vara tacksam.
Postat: 15 mars 2004, 12:16:29
av mrmike
Jag menade inte riktigt så specifikt som att använda USART:en. Bitbangande borde det däremot finnas gott om. t.ex.
http://www.piclist.com/techref/microchip/24LC65-tu.htm.
Tyvärr har jag ingen länk för hur man använder USART:en med minnen men databladet för 16f628 innehåller Synchronuos USART transmit/recieve steg-för-steg-setup. Sen borde det bara vara att skicka och ta emot. Jag har inte använt i2c men all information på bussen skickas väl i bytes, alltså heltalsmultiplar av 8 bitar (eller vad man ska kalla det. 8 bitar, 16 bitar, 24 bitar, 32 bitar, ..., 8*n bitar)?
Postat: 15 mars 2004, 12:35:21
av cyr
Tror inte man kan få ihop I2C med USARTen, men det finns hårdvaru-I2C på de större picarna.
Bit-bang ska nog funka bra, behöver själv strax fixa ihop I2C mellan en pic16f648a och en seriell DAC, så om det inte redan finns tillräckligt med I2C-kod på nätet så kan jag slänga upp min

Postat: 15 mars 2004, 12:51:08
av zus
USART:en kanske inte är rätt. Har 16f628 MSSP?
Postat: 15 mars 2004, 12:59:31
av mrmike
nix, det har den inte.