| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| PIC18F452 FLASH Read/Write (BootLoader) http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=512 |
Страница 1 от 1 |
| Автор: | Predator_MF [ Чет Мар 24, 2005 6:57 pm ] |
| Заглавие: | PIC18F452 FLASH Read/Write (BootLoader) |
Реших да си пренапиша BootLoader-а да работи и с 18-ки...Да, ама много сериозни проблеми...Първо, проблем с четенето на HEX файла. Някой преди време спомена че бил HEX32 (за 18F), всъщост си е HEX8 със много интересни записи за адреси, по-големи от FFFF...Както и да е, там се справих. По-основния проблем е че програмата ми зацикля на 16% (някъде между 0x930 и 0x950) всеки път, като до там всичко във FLASH-а се пише както трябва, а в един момент решава да спре, PIC-чето съвсем умира. Във Errata има много интересни приказки за Program FLASH Read/Write - трябвало да се изключват всички прекъсвания поотделно преди всяко четене/запис (намразих PIC-овете). Съобразих се и с това, ама г*за...някой да знае решение на тоя проблем? EDIT: Да не би да има някаква "критична" при писането във FLASH-а? |
|
| Автор: | ¶ [ Чет Мар 24, 2005 7:55 pm ] |
| Заглавие: | |
... |
|
| Автор: | bateAz [ Чет Мар 24, 2005 11:17 pm ] |
| Заглавие: | |
Провери къде се е заредил BootLoader-а. Да не би на 16% да записваш точно върху него. |
|
| Автор: | gnm_soft [ Пет Мар 25, 2005 12:12 am ] |
| Заглавие: | |
Sy6to taka nqma da e nikak zle da se ubedi6 100% w towa 4e ti zawiswa PIC-a (respektiwno hardware) a ne host-a (PC-to ili kakwoto polzwa6 tam ot drugata strana na UART-a) |
|
| Автор: | Gogo [ Пет Мар 25, 2005 12:44 am ] |
| Заглавие: | |
Predator_MF dai malko intifa! Na kakuv ezik go pishesh - asm ili C ? Az si napisah edin predi godina i polovina i nemam nikakkav problem - 1320,452, 458, 8520, 8525... E, ima malko razliki pri razli4nite prfesori de. Daje biah varzal edin 458 po RS232 kum PC-to i prez nego po I2C flashvah 452... Sega kato zapochna da pisha niakoi soft za PIC, purvata mi rabota e da mu kacha bootloadera (vse sushtiya) s niakoi programmer i posle po RS-a. Ne sam koi-znae kakuv programist, ama tova pone sam go probval na niakolko 18-ki i nema problem. Moga da butna edno ramo (mislia). Sorry za shliokavicata, ama sam v proces na preinstalirane na windowsa. |
|
| Автор: | Цецо [ Пет Мар 25, 2005 10:58 am ] |
| Заглавие: | |
Ами аз кат писах моя първия, прекъсванията ми играеха най-големи номера. Забрани ги глобално в момента на записа. Локално май не беше достатъчно. Иначе не виждам логика да спира на 16%. Разбра ли са що ти е да имаш ICD? Щото като спре, щеше да видиш къде точно е спрял и защо. Иначе аз първо го бях започнал на асемблер, ама после ми писна и го измаах на С. Ама кво ми пука, Флаш има. |
|
| Автор: | Predator_MF [ Пет Мар 25, 2005 12:04 pm ] | |||||||||
| Заглавие: | ||||||||||
Да бе...ей тука при мене има едно ICD2, за да го закача към процесора трябвало да откача всико от RB5,RB6 и RB7 (FLASH карта, 6 TTL-ки, 40 светодиода и 40 бутона)...как се дебъгва...Както и да е... Значи BootLoader-а ми е между 0x7D00 и 0x7FFF, пускал съм го без да пише (не изпълнява писане, а само ACK), стига си до 100%. Проблем с писане в EEPROM-а няма, пише се OK, във FLASH-а също се пише, но при достигане на "критичния" адрес, контролера умира...По точно, стига до 0x1C40, затрива следващите 8 думи, но не записва нищо...Пусках и кучето, ама не помогна...Ето ми го най простия BootLoader:
Пробвах и на по-ниски скорости, проблема не е оттам...Самия протокол за сериината връзка си работи безотказно в няколко процесора...А сега де Забележка: Във "Device Editor>18F452,Errata" съм включил "FFFF (nop) after TBLRD, NOP after GIE=0". Тия двете помагат с още 4-5 процента |
||||||||||
| Автор: | Цецо [ Пет Мар 25, 2005 12:19 pm ] |
| Заглавие: | |
AAAA, уби ме. Подобрявало с 4,5 %. Бе това да не е КПД. Или работи или не. Нямам време да го прегледам сега, ако не се оправиш, ще го гледам по подробно по-късно. По принцип темата е интересна. Какъв принцип си избрал - слагаш го в края и пренасочваш ресет вектора или го бухаш в началото. Мен първото ми се струва по нормално, ама е малко по особенно за писане на С. Директно hex файла (като символи) ли му мяташ или го правиш като бинарен отпечатък? За кучето и разните му там други FAULT ресети зимаш ли грижи? А как го активираш? |
|
| Автор: | Predator_MF [ Пет Мар 25, 2005 12:34 pm ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
Ти не вярваш...трябва да го видиш...като изключа Errata, стига до 16%, като я включа, 54%!!! Протокола за връзката е малко особен, не въртя кръгов буфер защото е RS485, със кабел около 200м и покрай него доста други кабели и машини. Скороста достига до 20KB/s @500Kbps ако някой го интересува, ще го предоставя... Лоудера се извиква със команда през RS485, (switch (CMD)...), в момента в който се извика, всички прекъсвания спират и в следващите 5 секунди се чака пакет от PC. Пакетите (само за лоудера) са: Offset | Data Length | Data | Checksum (ползвам и 2 байта preamble). При успешно приемане, се сравняват приетата checksum-а и сметнатата, ако съвпадат, командата се изпълнява, ако не съвпадат се чака приемане на нов пакет. PC програмата не зацикля; ако не се отговори на даден пакет, съответния се препраща до получаване на отговор "OK" или до изтичане на даден TIMEOUT. За RESET FAULT съм се погрижил, както обясних и със WDT експериметирах, все тая. Същия код съм го вкарвал и в PIC16F877A, там работи абсолютно безотказно.
|
|||||||||||||||||||
| Автор: | Цецо [ Пет Мар 25, 2005 5:11 pm ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
Един малко тъп въпрос, ама как ти е захранването. Да не се ебава по време на записа. Или пък ресета да ти мърда нещо... Абе аз го направих както си пише в http://ww1.microchip.com/downloads/en/DeviceDoc/39576b.pdf
ей така го правя аз. Преди това имам
И работи. [/code] |
|||||||||||||||||||
| Автор: | Predator_MF [ Пет Мар 25, 2005 5:26 pm ] | |||||||||
| Заглавие: | ||||||||||
Евентуалния проблем се появява, когато лоудера стигне до
|
||||||||||
| Автор: | Predator_MF [ Съб Мар 26, 2005 5:13 pm ] |
| Заглавие: | |
Ето го решението на проблема: http://www.ccsinfo.com/forum/viewtopic.php?p=41906#41906...АБЕ КОЙ ДА СЕ СЕТИ ДА НАПИШЕ В Help-a |
|
| Автор: | ¶ [ Съб Мар 26, 2005 6:31 pm ] |
| Заглавие: | |
... |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|