| Автор |
Съобщение |
|
i_dachev
Ранг: Новодошъл
Регистриран на: Вто Ное 16, 2004 3:29 pm Мнения: 108 Местоположение: София
|
 Проблем с Proteus PIC18 и Extended Instruction Mode
Имам следния проблем компилирам си с MPLAB и MCC18 компилатора.
Програмата е много проста подкарвам SPI на PIC18F2620.
Опитвам се да заредя програмата в Proteus задавам COF файла.
Като пусна да симулира и дебъгва всичко си върви по програмата и
по сорса, така както се очаква, обаче променливите ги разполага
в началото на паметта там дето са системните регистри.
Както и не слага нещата правилно в стека направо си записва 0.
Като го дебъгвам през MPLAB всичко си бачка.
Предполагам че проблема е в COF формата и нещо не го е прочело
правилно, и съм в безизходица искам да изтествам нещо с симулатора
и сега трябва да правя платките и чак тогава да видя дали всичко е наред.
Предполагам че ако успея да генерирам ASM по моите C сорсове и го компилирам
през Proteus ще успея да го дебъгна както трябва до сега не съм имал проблем
с ASM файлове и Proteus.
Някой да се е сблъсквал с подобен проблем?
Последна промяна i_dachev на Пет Мар 21, 2008 11:25 am, променена общо 1 път
|
| Чет Мар 20, 2008 10:51 am |
|
 |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 08, 2006 2:12 pm Мнения: 2017 Местоположение: Котел
|
Къде ти е записан *.dsn файла?
|
| Чет Мар 20, 2008 10:59 am |
|
 |
|
i_dachev
Ранг: Новодошъл
Регистриран на: Вто Ное 16, 2004 3:29 pm Мнения: 108 Местоположение: София
|
В различни директори са имам отделна за MPLAB проекта и отделна за Proteus.
Това не ми е било до сега проблем или да пробвам да ги сложа на едно място?
|
| Чет Мар 20, 2008 11:18 am |
|
 |
|
i_dachev
Ранг: Новодошъл
Регистриран на: Вто Ное 16, 2004 3:29 pm Мнения: 108 Местоположение: София
|
Пробвах на едно място да са проект файловете и за компилатора и за Prоtеusа
но пак като ръгна да дебъгва/симулира всички променливи дето се подават
на функциите са нула като се влезе във функцията.
Тоест има някакъв проблем със стека защото там се записват аргументите
на функциите и локалните. Поне така като гледам какво се опитва да присвоява
от стека към SPI буфера.
Май като се влиза в функцията като се прави call въобще не сетва
променливите слага ги на 0 и това си е.
Последна промяна i_dachev на Чет Мар 20, 2008 4:18 pm, променена общо 1 път
|
| Чет Мар 20, 2008 11:51 am |
|
 |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 08, 2006 2:12 pm Мнения: 2017 Местоположение: Котел
|
Чакай че нещо не доразбрах. Симулацията си работи нормално, не неможе да дебъгваш стъпка по стъпка? Най-честия проблем за това е че coff и dsn файла трябва да са в обща папка.
|
| Чет Мар 20, 2008 12:57 pm |
|
 |
|
i_dachev
Ранг: Новодошъл
Регистриран на: Вто Ное 16, 2004 3:29 pm Мнения: 108 Местоположение: София
|
Дебъгвам стъпка по стъпка но стойностите, които подавам към функциите
като влезне във функцията дебъгера на симулатора са 0.
пример:
void spi_write(unsigned char aData) {
SSPBUF = aData; // Begin SPI transfer
...
}
main {
...
spi_write(0x1F);
}
Симулатора си дебъгва точно по COF файла но като влезна в spi_write
стойността на aData вместо 0x1F е 0. Това за всичките ми функции.
|
| Чет Мар 20, 2008 4:16 pm |
|
 |
|
i_dachev
Ранг: Новодошъл
Регистриран на: Вто Ное 16, 2004 3:29 pm Мнения: 108 Местоположение: София
|
Намерих решението явно Proteus има проблем с Extended Instruction на PIC18.
Маха се да не компилира в този extended режим и всичко си заработва перфектно.
|
| Пет Мар 21, 2008 11:29 am |
|
|