Het Elektor forum gaat sluiten. Zie ook deze link. Vanaf vrijdag 15 maart is het niet langer mogelijk om in te loggen op het forum. Wel blijft de inhoud van het forum nog zichtbaar tot het einde van de maand maart. Per 1 april gaat het forum definitief uit de lucht.

EEPROM 24LC16

Ontwerpen en programmeren

Postby joost2 » Fri Jul 22, 2011 12:00 am

Hi,Ik heb pas Flowcode4 en probeer ervaring ermee op te te doen. Naar een geheugen te schrijen en uit te lezen, ik gebruik de Macro,s van FC4 met een 16F877A. Ik krijg dat niet aan de gang, weet niet waar de fout zit. Device address, is denk ik A0 maar uitlezen is steeds 255. Met een scope naar SDA en SCL gekeken en spelen prima. Iemand heeft dit probleem al eens gepost maar verder geen oplossing bij gegeven. Wat doe ik niet goed?Joost
joost2
 
Posts: 14
Joined: Thu Jan 02, 2014 3:29 pm

Postby kersing » Fri Jul 22, 2011 12:00 am

Je code even attachen zodat we die kunnen zien? Nu moeten we wel erg raden wat je programma doet...
kersing
 
Posts: 269
Joined: Thu Jan 02, 2014 3:28 pm

Postby petrus bitbyter » Sat Jul 23, 2011 12:00 am

Joost2 Wat doe ik niet goed?Joost


Nou eh... Op de eerste plaats verwacht je te veel magische bedrevenheden van je lezers. Sommigen hebben weliswaar een kristallen bol maar die is altijd stuk.

Heb je de datasheets van de processor en de EEPROM bij Microchip opgehaald? Negen van de tien keer leveren die de informatie die je nodig hebt. Vergeet ook de errata niet.

Lang geleden, in de MSDOS-tijd, had Philips een schakelingetje om via de parallele poort I2C-master te spelen. Daarmee zou je ook zo'n EEPROM aan moeten kunnen. Werkt helaas niet meer onder NT, 2000, XP en nieuwer.

petrus bitbyter
petrus bitbyter
 
Posts: 663
Joined: Thu Jan 02, 2014 3:27 pm

Postby joost2 » Sat Jul 23, 2011 12:00 am

Voor zover ben ik blij met reacties en voor wat betreft mijn verwachtingen, ja iets op een forum vragen waaruit misschien blijkt dat je er weinig kaas van gegeten hebt is altijd beter als niets vragen. Uiteraard heb ik de datasheet gelezen en daar niet te gek veel mee bereikt. Ik heb een voorbeeld van Flowcode Basic send en receive I2C. Dat schijnt niet te werken want als je het geheugen uit de schakeling haalt en dan test maakt het geen fluit uit. Zou uitkomen als er iemand met hetzelfde bijltje gehakt heeft natuurlijk niet om het geheugen in de prak te slaan. Joost
joost2
 
Posts: 14
Joined: Thu Jan 02, 2014 3:29 pm

Postby petrus bitbyter » Sat Jul 23, 2011 12:00 am

Als je ergens niet uit komt, kun je hier vragen stellen. Daar is het forum onder andere voor. Maar waar is die flowcode die je gebruikt hebt en die niet doet wat je wilt? Heb je een assemblerlisting? Hier zijn mensen die zo'n lijst kunnen lezen en nog begrijpen ook. Een schemaatje van je opstelling kan ook al helpen. Mogelijk zit daar iets fout.

Als iemand anders het ook niet aan de praat kreeg, wil dat nog lang niet zeggen dat er bij hem hetzelfde mis was als bij jouw. Zonder meer informatie kun je niet meer dan een paar algemene vragen en opmerkingen verwachten. Daar schiet je dan niet veel mee op maar nogmaals en ten overvloede: Techneuten hebben weinig met magie en het tweede gezicht hebben ze ook al niet.

petrus bitbyter
petrus bitbyter
 
Posts: 663
Joined: Thu Jan 02, 2014 3:27 pm

Postby joost2 » Sat Jul 23, 2011 12:00 am

Zoals ik al zei, goed dat er mensen meedenken. Ik ga er van uit dat iedereen Flowcode heeft en dat is zo te zien niet waar. Met Flowcode heb je geen assembly informatie alleen een Flowdiagram en dus een higher level. Dit wordt naar een via een Hex file en programmer software naar de 16F877A gestuurd dit hele proces is transparant en je hoopt dat dat doet wat je wilt dat het doet. De simulatie van het programma is okay. Wat er aan schakeling is. is een 24LC16 conform de datasheet aangesloten en met de SDA en SCL lijnen naar de PIC 16F877A. Ik denk dat ik een fout maak met de Device addressing wat volgens de data sheet A0 moet zijn? Ik neem mijn vraag maar even terug om dit beter voor te bereiden.In ieder geval bedankt voor de reactie. Joost
joost2
 
Posts: 14
Joined: Thu Jan 02, 2014 3:29 pm

Postby anneo » Sat Jul 23, 2011 12:00 am

Misschien heb je iets aan het volgende.
Als je A0 naar die chip stuurt is dat om blok 0 te schrijven.
Wil je blok 0 lezen dan is dat A1.
Voor blok 1 wordt dat A2=schrijven en A3=lezen.
Blok 2 geeft A4 en A5 enz.
Even is schrijven,oneven lezen.
Anne
anneo
 
Posts: 1339
Joined: Thu Jan 02, 2014 10:36 am

Postby kersing » Sat Jul 23, 2011 12:00 am

Joost2Zoals ik al zei, goed dat er mensen meedenken. Ik ga er van uit dat iedereen Flowcode heeft en dat is zo te zien niet waar.


Joost, ook als we flowcode hebben wil dat niet zeggen dat we weten hoe jouw code er uit ziet. Daarom vroegen we je code aan een bericht toe te voegen zodat we kunnen zien wat je precies doet.

Joost2Met Flowcode heb je geen assembly informatie alleen een Flowdiagram en dus een higher level. Dit wordt naar een via een Hex file en programmer software naar de 16F877A gestuurd dit hele proces is transparant en je hoopt dat dat doet wat je wilt dat het doet.


Flowcode wordt omgezet naar C code en dat via assembler naar de hex file. Na het omzetten van flowcode naar hex zul je in de map waar je .fcf bestand staat ook een .c en .asm bestand vinden.

Joost2
De simulatie van het programma is okay.


De simulatie en de praktijk komen helaas niet altijd overeen zoals je merkt.

Nogmaals, als je wilt dat we je met je code helpen, geef ons dan code om naar te kijken...

Succes,

Jac
kersing
 
Posts: 269
Joined: Thu Jan 02, 2014 3:28 pm

Postby kersing » Sat Jul 23, 2011 12:00 am

Joost2Wat er aan schakeling is. is een 24LC16 conform de datasheet aangesloten en met de SDA en SCL lijnen naar de PIC 16F877A.


Nog een puntje, heb je een pullup op SDA aangebracht? Zie 8.1 in de datasheet

Groeten,

Jac'
kersing
 
Posts: 269
Joined: Thu Jan 02, 2014 3:28 pm

Postby petrus bitbyter » Sat Jul 23, 2011 12:00 am

Lang niet iedereen heeft flowcode, ik ook niet. Ik voel me beter thuis bij een assembler voor kleine programma's. Voor grotere gebruik ik C. Dat wil uiteraard niet zeggen dat er met flowcode iets mis zou zijn.

Toch denk ik dat je ook een flowcode-programma op één of andere manier op moet kunnen slaan en moet kunnen printen. Zonder dat zou ik zelfs als super-flowcode-expert niet kunnen weten wat je hebt gedaan en dus ook niet wat er fout kan zijn.

Veel zogenaamde hogere programmeertalen, waaronder ik flowcode maar even reken, kunnen een assemblerlisting maken. Sterker, ze moeten hem maken om de .HEX file te kunnen genereren maar dat wil dan weer niet zeggen dat het een voor mensen leesbare listing moet zijn. Zegt de handleiding van flowcode daar niks over?

Als op beide I2C-lijnen signaal staat, lijkt het er op dat de processor in elk geval werkt. Voor het schrijven van één byte moeten er drie verstuurd worden. Je krijgt dan de volgende reeks:

Start conditie
A0h = device adres + blok adres + write bit
ACK
40h = woord adres in het blok
ACK
55h = data byte dat geschreven moet worden
ACK
Stop conditie

De ACKs worden door de 24LC16 gegenereerd. Als het goed is, zou flowcode moeten regelen dat er geen nieuw byte verstuurd wordt voordat de ACK is ontvangen.

Voor het teruglezen van hetzelfde byte moeten er twee bytes verstuurd en één ontvangen worden:

Start conditie
A1h = device adres + blok adres + read bit
ACK
40h = woord adres in het blok
ACK
55h = data byte dat gelezen wordt
ACK
Stop conditie

Eén en ander staat nog veel uitgebreider in de datasheet van de EEPROM.

petrus bitbyter
petrus bitbyter
 
Posts: 663
Joined: Thu Jan 02, 2014 3:27 pm

Next

Return to Microcontrollers

Who is online

Users browsing this forum: No registered users and 1 guest