PIC kenners, jullie hulp komt erg van pas bij het volgende probleem. Ik probeer wat data in een tabel te schrijven in een 18F242 PIC. Echter volgens de datasheet heeft deze geen EEPROM zoals bijvoorbeeld een 16F628. Daarintegen kun je schrijven in het program memory. (als ik het goed begrepen heb)
Volgens de datasheet moet het zelfs kunnen met speciale commando's : TBLWT*, etc met een adrespointer.
De volgende code zou als test een getallenreeks van 0h tot +/-F0h moeten wegschrijven vanaf adreslocatie 0x1000:
TABLADDR EQU 0x00001000 ; Intern geheugen
..
..
CLRF y
MOVLW UPPER(TABLADDR) ; Init intern geheugen
MOVWF TBLPTRU
MOVLW HIGH(TABLADDR)
MOVWF TBLPTRH
MOVLW LOW(TABLADDR)
MOVWF TBLPTRL
BSF RCON,6 ; Set Long Write
start MOVF y,w
MOVWF TABLAT ; low
TBLWT*+
INCF y
MOVF y,w
MOVWF TABLAT ; high
TBLWT*
INCF y
MOVLW 0xF0
CPFSGT y
GOTO start
CLRF y
GOTO start
Dit alleen nog zonder simulatieresultaat in MPLAB.
Wellicht ben ik nog enkele zeemijlen verwijderd van de juiste oplossing. Hopelijk heeft iemand al ervaring met tabellen in de 18F of 18C serie.
Op 8 augustus 2005 23:15:52 schreef Effeen:
Ik probeer wat data in een tabel te schrijven in een 18F242 PIC. Echter volgens de datasheet heeft deze geen EEPROM zoals bijvoorbeeld een 16F628.
De 18F242 heeft 256 bytes data EEPROM (net zoals de 16F628, alleen 256 ipv 128 bytes).
Je kan ook het FLASH geheugen gebruiken, maar met name voor schrijven is dat wat ingewikkelder, dit omdat je per 16 bytes moet schrijven en per 64 bytes moet erasen. (je kan dus niet gewoon een lokatie overschrijven zoals wel kan met de data EEPROM.
Gebruik dus gewoon de data EEPROM, een stuk simpeler..
Op 9 augustus 2005 00:06:35 schreef JoWi:
[...]
De 18F242 heeft 256 bytes data EEPROM (net zoals de 16F628, alleen 256 ipv 128 bytes).
Je kan ook het FLASH geheugen gebruiken, maar met name voor schrijven is dat wat ingewikkelder, dit omdat je per 16 bytes moet schrijven en per 64 bytes moet erasen. (je kan dus niet gewoon een lokatie overschrijven zoals wel kan met de data EEPROM.
Gebruik dus gewoon de data EEPROM, een stuk simpeler..
Duidelijk op zich JoWi, echter kan ik in de Microchip datasheet van de 18F242 niet terug vinden over aansturen van EEPROM. (Misschien is dit zo voor de hand liggend dat ze dit niet eens meer vermelden vrees ik
..). Ik kan in iedergeval geen registers -SFR's- terugvinden op de 18F zoals EEDATA en EEADR bij de 16F628. Ik kan in uit de voeten met 256 bytes, die TBLWT toestand laat ik even achterwege
Als je wat voorbeeldcode heb voor de 18F serie of weet te vinden is dit zeer welkom. Thx
Datasheet:
Hoofdstuk 5: FLASH Program Memory (kon je blijkbaar vinden)
Hoofdstuk 6: Data EEPROM Memory (effe doorbladeren dus)
Op 9 augustus 2005 14:36:24 schreef The Headhunter:
lees het berichtje boven dat van jou nog 10x door.
Owja, foutje. 
Bedankt voor tips! Ik ben eruit. Al een tijdje de verkeerde datasheet (18Cxx2 ipv 18Fxx2) gebruikt. 
Tsja en dat kost je dan een avond puzzelen. Kunnen we weer verder met het TimesSquare op je bureau project wat ook op dit forum te vinden is. Thx allen!