Sida 1 av 1

Fylla 877A interna EEPROM direkt? MPLAB + PICC Lite

Postat: 13 maj 2005, 18:49:32
av Nulletz
Finns det något sätt att fyll det interna EEPROM direkt när man programmerar uCn? jag har ca 200byte som behöver åka direkt in i EEPROMET. Jag använder MPLAB (& PICC Lite) för att skapa HEX filerna och ett annat program för att programmera uCn.

Så som jag får göra nu är att använda funktioner för att skriva till eppromet och är det väl är fyllt "låser" jag eepromet så att det inte raderas nästa gång jag programmera. Sedan skriver jag den kod som egentligen skall vara i programmet.

Postat: 13 maj 2005, 19:04:25
av cyr
I vilket format har du den datan?

Om det är ren binär data så finns det program som kan konvertera det till en h-fil med array i. (googla på bin2h). Sen *antar* jag att PICC har något nyckelord som man använder för att placera den just i EEPROMet, bör stå i manualen.

Postat: 13 maj 2005, 19:35:38
av sodjan
Självklart gör det det !

Kapitel "5.10 EEPROM Data" på sidan 114 i manualen...

Postat: 13 maj 2005, 21:48:23
av Nulletz
Tackar...det fanns visst en manual som jag inte tänkte på.

Postat: 14 maj 2005, 20:41:08
av Nulletz
Jag använder mig av detta för att fylla EEPROMET.

Kod: Markera allt

// Loading the character codes into internal EEPROM
__EEPROM_DATA( 	0x41, 0x2E, 0x36, 0x3A, 0x41, 0x3B, 0x3D, 0x00 	);
Men nu får jag ett fel meddelande. Använder jag denna kod fyra gånger eftervarandra så funkar det att bygga hex filne men tar jag fler så får jag detta felmeddelande:

Kod: Markera allt

Error[000] W:\PIC Projekts\1. Eget bibliotek!\PIS\PIS.c 39 : end of file within macro argument from line 14
Warning[000] W:\PIC Projekts\1. Eget bibliotek!\PIS\PIS.c 39 : Wrong number of macro arguments for "__EEPROM_DATA" - 0 instead of 8
Warning[000] __EEPROM_DATA 39 : Wrong number of macro arguments for "___mkstr" - 0 instead of 1
Warning[000] __EEPROM_DATA 39 : Wrong number of macro arguments for "___mkstr1" - 0 instead of 1
Någon som vet varför jag får det? Här är alla rader som finns i mitt program just nu:

Kod: Markera allt


#include "pic.h"

	__EEPROM_DATA( 	0x41, 0x2E, 0x36, 0x3A, 0x41, 0x3B, 0x3D, 0x00 	);
	__EEPROM_DATA( 	0x3F, 0x3F, 0x3D, 0x1E, 0x2E, 0x36, 0x3A, 0x5D 	);
	__EEPROM_DATA( 	0x3E, 0x36, 0x36, 0x49, 0x70, 0x77, 0x77, 0x77 	);
	__EEPROM_DATA( 	0x00, 0x38, 0x36, 0x36, 0x36, 0x4E, 0x41, 0x36 	);
	__EEPROM_DATA( 	0x36, 0x36, 0x4F, 0x7E, 0x7E, 0x0E, 0x72, 0x7C 	};
	__EEPROM_DATA( 	0x49, 0x36, 0x36, 0x36, 0x49, 0x79, 0x36, 0x36	);
	__EEPROM_DATA( 	0x36, 0x41, 0x01, 0x76, 0x76, 0x76, 0x01, 0x00	);
	__EEPROM_DATA( 	0x36, 0x36, 0x36, 0x49, 0x41, 0x3E, 0x3E, 0x3E	);
	__EEPROM_DATA( 	0x5D, 0x00, 0x3E, 0x3E, 0x3E, 0x41, 0x00, 0x36	);
	__EEPROM_DATA( 	0x36, 0x3E, 0x3E, 0x00, 0x36, 0x76, 0x7E, 0x7E 	);
	__EEPROM_DATA( 	0x42, 0x3E, 0x36, 0x36, 0x45, 0x00, 0x77, 0x77	);
	__EEPROM_DATA( 	0x77, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x5F	);
	__EEPROM_DATA( 	0x7F, 0x3F, 0x3F, 0x40, 0x00, 0x77, 0x6B, 0x5D	);
	__EEPROM_DATA( 	0x3E, 0x00, 0x3F, 0x3F, 0x3F, 0x3F, 0x00, 0x79	);
	__EEPROM_DATA( 	0x73, 0x79, 0x00, 0x00, 0x79, 0x77, 0x4F, 0x00	);
	__EEPROM_DATA( 	0x41, 0x3E, 0x3E, 0x3E, 0x41, 0x00, 0x76, 0x76	);
	__EEPROM_DATA( 	0x76, 0x7E, 0x43, 0x3D, 0x2D, 0x43, 0x3F, 0x00	);
	__EEPROM_DATA( 	0x76, 0x66, 0x56, 0x69, 0x59, 0x36, 0x36, 0x36	);
	__EEPROM_DATA( 	0x4D, 0x7E, 0x7E, 0x00, 0x7E, 0x7E, 0x40, 0x3F	);
	__EEPROM_DATA( 	0x3F, 0x3F, 0x40, 0x78, 0x67, 0x1F, 0x67, 0x78	);
	__EEPROM_DATA( 	0x00, 0x4F, 0x67, 0x4F, 0x00, 0x1C, 0x6B, 0x77	);
	__EEPROM_DATA( 	0x6B, 0x1C, 0x7C, 0x73, 0x07, 0x73, 0x7C, 0x1E	);
	__EEPROM_DATA( 	0x2E, 0x36, 0x3A, 0x3C, 0x7F, 0x7F, 0x7F, 0x7F	);

void main(){

	while(1);

}

Postat: 14 maj 2005, 20:48:16
av cyr
Du har en måsvinge istället för högerparentes på femte raden...

Postat: 14 maj 2005, 20:54:03
av Nulletz
Där ser man. Såg inte den på min TFT skärm :)