| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| чек сума на програмната памет на PIC24 http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=18993 |
Страница 1 от 1 |
| Автор: | Edesign [ Чет Окт 12, 2023 2:08 pm ] |
| Заглавие: | чек сума на програмната памет на PIC24 |
Здравейте, Накой може ли да подхвърли сламка как да направя четене на байт по байт (word ) и просто да ги сумирам. Така да проверявам дали програмната памет е бъгната. Сумата ще се съхранява външно от проца. За PIC18 съм го правил но за P24 няма прагма и т.н...... #pragma romdata PROG_END const unsigned int ROM_END = 0x55AA; #pragma romdata // #pragma romdata PROG_Start const unsigned int ROM_BEGIN = 0x55AA; #pragma romdata ROMPtr=&ROM_BEGIN; //Clear ROM pointer ROMSum=0; //Clear ROM sum accumulator do {ROMSum+=*ROMPtr; //Accumulate ROM sum ROMPtr=ROMPtr+1;} while(ROMPtr!=&ROM_END); //If end of ROM area |
|
| Автор: | TheWizard [ Чет Окт 12, 2023 2:33 pm ] |
| Заглавие: | Re: чек сума на програмната памет на PIC24 |
__builtin_tblrdl() __builtin_tblrdh() TBLRDL, TBLRDH |
|
| Автор: | Edesign [ Чет Окт 12, 2023 2:42 pm ] |
| Заглавие: | Re: чек сума на програмната памет на PIC24 |
Да видях __builtin_tblrdl Issues the tblrdl.w instruction to read a word from Flash or EEDATA memory. You must set up the TBLPAG to point to the appropriate page. To do this, you may make use of __builtin_tbloffset() and__builtin_tblpage(). Please refer to the data sheet or “dsPIC30F Family Reference Manual” (DS70046) for complete details regarding reading and writing program Flash. Обаче не мога да схвана офсета и tblpage -> на мен ми трябва prog_start / prog_end |
|
| Автор: | TheWizard [ Чет Окт 12, 2023 2:51 pm ] |
| Заглавие: | Re: чек сума на програмната памет на PIC24 |
с указател можеш да прочетеш само първите 32к от флаша иначе tblpage сочи старшия word от адреса |
|
| Автор: | Edesign [ Чет Окт 12, 2023 3:20 pm ] |
| Заглавие: | Re: чек сума на програмната памет на PIC24 |
TBLPAG=0; addrOffset = (0x200); do { ROMSum=ROMSum+__builtin_tblrdl(addrOffset); // contains lower word data from 24 bits word if (addrOffset==0xFFFF) {TBLPAG=1;addrOffset=0;}else{addrOffset++;} }while((addrOffset<0x57F0)||(TBLPAG==0)); Това ли е което трябва да направя за да чета флаша 0x200 до 0x157f0 Става въпрос за PIC24FJ128GA006 |
|
| Автор: | TheWizard [ Чет Окт 12, 2023 3:26 pm ] |
| Заглавие: | Re: чек сума на програмната памет на PIC24 |
https://microchipdeveloper.com/local--f ... xample.svg |
|
| Автор: | Edesign [ Чет Окт 12, 2023 3:33 pm ] |
| Заглавие: | Re: чек сума на програмната памет на PIC24 |
TheWizard моля те погледни в предния ми пост. Правилно ли съм рабрал ? |
|
| Автор: | TheWizard [ Чет Окт 12, 2023 3:41 pm ] |
| Заглавие: | Re: чек сума на програмната памет на PIC24 |
в момента нямам XC16 да симулирам - пиша по памет |
|
| Автор: | Edesign [ Чет Окт 12, 2023 3:44 pm ] |
| Заглавие: | Re: чек сума на програмната памет на PIC24 |
Да така е проверих на симлуатора. Само че трябва да е addrOffset+=2 Благодаря TheWizard |
|
| Автор: | relsys [ Сря Окт 18, 2023 8:00 pm ] | |||||||||
| Заглавие: | Re: чек сума на програмната памет на PIC24 | |||||||||
Така съм го бил направил за PIC16:
|
||||||||||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|