Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Удаленная работа
Помощь проекту


 
Опции темы
Непрочитано 08.04.2019, 15:05  
Maddocrus
Частый гость
 
Регистрация: 16.05.2017
Сообщений: 12
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Maddocrus на пути к лучшему
По умолчанию MPLAB X IDE проблемы с симуляцией

Начал осваивать pic на Си. Установил MPLAB X но заметил неприятную особенность очень долго считает задержку по __dalay_ms(1000) в низу полосочка крутится секунд 8.

Тестил в MPLAB X ver 5.10 и 4.20

Код:
#include 
#define _XTAL_FREQ 4000000
void main(void) {
    while (1){
    PORTBbits.RB1 = 0;
    __delay_ms(100);
    PORTBbits.RB1 = 1;  
    __delay_ms(1000);
    }   
    return;
}
__delay_ms(100); обрабатывается еще терпимо но вот __delay_ms(1000); уже долго ждать при том что частота стоит 4МГц а если в настройках симуляции и в _XTAL_FREQ поставить реальные 16 МГц то конца симуляции не дождатся.
Код из дизасемблера:
Код:
!    __delay_ms(1000);
0x7EE: MOVLW 0x6
0x7EF: MOVWF 0x72
0x7F0: MOVLW 0x13
0x7F1: MOVWF 0x71
0x7F2: MOVLW 0xAD
0x7F3: MOVWF __pcstackCOMMON
0x7F4: DECFSZ __pcstackCOMMON, F
0x7F5: GOTO 0x7F4
0x7F6: DECFSZ 0x71, F
0x7F7: GOTO 0x7F4
0x7F8: DECFSZ 0x72, F
0x7F9: GOTO 0x7F4
0x7FA: GOTO 0x7FB
0x7FB: GOTO 0x7DF
Хотя, запуская то же самое в ASM MPLAB 8.92, никаких проблем нет, STOPWATCH показывает результаты мгновенно.

Мне вот интересно у всех так, или только я, не могу что-то, понять, включить? Как бороться с медленной симуляцией?
Реклама:
Maddocrus вне форума  
Непрочитано 08.04.2019, 16:49  
my504
Прописка
 
Аватар для my504
 
Регистрация: 30.07.2006
Адрес: Фрязино, М.О.
Сообщений: 101
Сказал спасибо: 0
Сказали Спасибо 18 раз(а) в 16 сообщении(ях)
my504 на пути к лучшему
По умолчанию Re: MPLAB X IDE проблемы с симуляцией

А зачем вообще симулировать задержки, тем более, такие большие?
Вы отдаете себе отчет в том, что симулятору болт положить на реальное время и он тупо симулирует машинные циклы. То есть, увеличивая частоту осциллятора, Вы набиваете кучу никчемных циклов задержки...
Симулятор в МПЛАБе нужен для проверки фрагментов кода, а не для того, чтобы достоверно развернуть временную диаграмму на миллиарды циклов.
К слову, логический анализатор при этом симуляторе вообще ограничен буфером всего на 10000 крайних машинных циклов, остальное он выбрасывает.
my504 вне форума  
Непрочитано 09.04.2019, 02:21  
Maddocrus
Частый гость
 
Регистрация: 16.05.2017
Сообщений: 12
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Maddocrus на пути к лучшему
Сообщение Re: MPLAB X IDE проблемы с симуляцией

Ладно так как никто ничего не предлагает, пришлось продолжить поиски ответа :(

Эксперимент №1:
Для того что бы симуляторы MPLAB 8.92 b MPLAB X IDE 5.15 были в равных условиях, выбираю одинаковые компиляторы mpasm v5.83 и пишу код задержки равный 3 вложенным циклам.

Результат: MPLAB 8.92 - время обработки 4.5 сек на 16 МГц

Нажмите, чтобы открыть спойлер

Результат: MPLAB X IDE 5.15 - время обработки 14.5 сек на 16 МГц
Нажмите, чтобы открыть спойлер


Далее потыкал, покрутил, получалось что больше 2,2 секунд не показывает и цикл больше 35,4 M не крутит. Стал уменьшать в настройках симулятора частоту Fcyc и понял что частота как будто умножается на 4, так как количество циклов не совпадает.

Эксперимент №2:

Результат: MPLAB 8.92 - время обработки 0.01 сек на 16 МГц

Нажмите, чтобы открыть спойлер


Результат: MPLAB X IDE 5.15 - время обработки 4 сек на 4 МГц
Нажмите, чтобы открыть спойлер


Настройки Симулятора MPLAB X IDE 5.15:
Нажмите, чтобы открыть спойлер


На данном этапе удалось добиться сокращения скорости эмуляции "задержки" и получить идентичные результаты в обоих программах, на языке Ассемблера.
Осталось попробовать на Си покрутить.

Но все равно не понятно, вроде новая программа, должна быстрее работать... или наоборот получается, новая навороченная медленная?

Покрутил на Си __delay_ms(1000) на 16 МГц время эмуляции шага(F8) 45 сек. (мда печаль...) 4000000 циклов, однако если пройти по циклу зеленой кнопкой (F5) то нормально 1.5 секунды. Это понятно что применяются более сложные вычисления, по этому так долго. Но я хотел бы, как то настраивать сложность обработки циклов для увеличения скорости.

Вот еще перевод хелапа по симулятору:
Цитата:
"Часто циклы будут использоваться в коде для генерации временных задержек. При использовании симулятора вы можете уменьшить эти временные задержки или условно удалить эти разделы кода с помощью операторов “IFDEF”, чтобы увеличить скорость моделирования."
Так хорошо где конкретный пример КАК УДАЛИТЬ?
Миниатюры:
Нажмите на изображение для увеличения
Название: pruf.jpg
Просмотров: 0
Размер:	24.6 Кб
ID:	140696   Нажмите на изображение для увеличения
Название: pruf1.jpg
Просмотров: 0
Размер:	241.5 Кб
ID:	140697   Нажмите на изображение для увеличения
Название: pruf3.jpg
Просмотров: 0
Размер:	26.3 Кб
ID:	140698  

Нажмите на изображение для увеличения
Название: pruf4.jpg
Просмотров: 0
Размер:	190.2 Кб
ID:	140699   Нажмите на изображение для увеличения
Название: pruf5.jpg
Просмотров: 0
Размер:	22.7 Кб
ID:	140700  

Последний раз редактировалось Maddocrus; 09.04.2019 в 03:08. Причина: Тест __delay_ms(1000) на 16 МГц
Maddocrus вне форума  
Непрочитано 09.04.2019, 02:33  
mike-y-k
Почётный гражданин KAZUS.RU
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 7,461
Сказал спасибо: 7,532
Сказали Спасибо 2,345 раз(а) в 1,807 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: MPLAB X IDE проблемы с симуляцией

Maddocrus, тут ведь не реальное исполнение кода на реальном железе, а эмуляция этого железа.
Как оно внутри работает известно только разработчикам пакета и модели МК.
Эти вопросы стоит задавать их поддержке и на форуме сообщества программы.
Конечно на серии экспериментов удасться определить какие-то эмпирики для поведения виртуального МК, но в них таки немного смысла - смена версии пакета и содержимого эмулятора дадут новые результаты (99% вероятность).
Тут сильно продуктивнее обычная отладка на реальном железе - минимум задержки будут как положено отрабатывать
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при малом числе вариантов…
mike-y-k вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование программатором STERH 007 PIC микроконтроллеров ispitatel1 Песочница (вопросы новичков) 4 17.04.2017 17:18
MPLAB IDE v.7.5 vovik_t PIC 14 02.10.2015 16:04
Програмирование на PIC в MPLAB IDE v8.46 CAH9IForeve Микроконтроллеры, АЦП, память и т.д 3 26.03.2010 16:59
MPLAB IDE и HI-TECH 18 s-4ern Микроконтроллеры, АЦП, память и т.д 16 17.09.2009 14:06
Кириллица в проектах MPLAB IDE 8.00 X_ela_2 Микроконтроллеры, АЦП, память и т.д 2 22.01.2008 15:26


Часовой пояс GMT +4, время: 03:13.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot