29.09.2019, 10:46
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Proteus общие вопросы
Сообщение от pic121618
|
видишь биты, но даже не понимаешь что с ними делать
|
Не понимаете - вините себя самого. На скрине внизу - все нарисовано-написано, все биты. Есть биты, есть описание, есть ассемблер. Что мешает сделать? Собственная бестолковость? Да.
Ассемблер для АРМ - это не 35 инструкций в ПИК16. Thumb-2 для Cortex M7 - это 220 базовых инструкций, умноженных на несколько их вариантов, итого - более 1500 ассемблерных инструкций!!, плюс вариативный второй операнд, который может быть дополнительной инструкцией. Вы сможете запомнить хотябы десятую часть из них??
Я знаю и понимаю ассемблер для АРМ. Но писать на нем что-то большее, чем:
Код:
|
ldr r1, [pc, #148]
ldr r2, [r3, #0]
ldr r0, [pc, #148]
lsls r2, r2, #28
ite pl
ldrpl.w r3, [r3, #148]
ldrmi r3, [r3, #0]
ldr r2, [r1, #8]
ite pl
ubfxpl r3, r3, #8, #4
ubfxmi r3, r3, #4, #4
and.w r2, r2, #12
cmp r2, #8
ldr.w r3, [r0, r3, lsl #2] - составной второй операнд lsl #2
beq.n 200013a6
cmp r2, #12
beq.n Ext |
-уж извините.
Писать на АРМ-ассемблере можно, но далеко на нем не уедешь. А инициализация того же USB или Ethernet - это по большей части НЕ битовые операции. Уже не говоря о графической подсистеме. Когда у вас есть графический цветной дисплей хотябы 800х480, и вы начинаете рисовать графический интерфейс пользователя со множеством интерактивных элементов, текста, виртуальных приборов - вот тут вы на ассемблере завязните по самые помидоры.
Я уже и не заикаюсь про Cortex A7 (и выше), являющийся процессорным ядром с двухуровневым кэшем инструкций и данных.
Вся серия PIC16 - убога от рождения и годилась только для старта начинающих. Ей не помогла циферка 1 в номере. Кстати, она появилась очень давно уже!. Но как были фундаментальные проблемы, так они и остались. Банковая нелинейная организация ОЗУ, страничная организация флеша - это убогость! Регистры управления и регистры ОЗУ, идущие вперемешку друг с другом - это убогость и ненадежность! Для смены банка нужно вначале подергать биты селектора банков, и лишь потом чето изменить/прочитать. 4 такта на инструкцию - это жутко старо, конец прошлого тысячелетия!
А попробуйте на PIC16 умножить 547 на 263 (на практике - значение АЦП умн. на коэфф.) - сколько текста будет на ассемблере?
На АРМ это:
Код:
|
mov r0, #574
mov r1, #263
mul r0, r0, r1 |
Исполнение - три такта.
И еще раз - лично для вас, лично для ваших скудных ограниченных возможностей - PIC16 - самое то, что доктор прописал. Пользуйтесь, пожалста, никто вам не запрещает.
Однако, другие люди - на вас не похожи. Другие уже давно перешагнули скудные возможности PIC16 и повыкидывали их, чтобы не захламляли место в коробочках. Если лично вам некуда дальше расти и жизнь на этом закончена, то вы конечно имеете полное право сидеть на PIC16F1xxx, у которых фундаментальные проблемы идут еще с первых PIC16 С501 конца прошлого тысячелетия.
Ну и еще раз - если предел ваших возможностей - мигалки, поливалки и включатели релюшек - то конечно вы в праве оставаться на этом пределе, никто вас не гонит за прогрессом. Оставайтесь и сидите. ВАС НИКТО НЕ ЗАСТАВЛЯЕТ, не стоните и не нойте!
А вообще, pic121618, у вас речь - крайне бестолковая и глупая, содержит простой набор фраз. Те, кто в теме технических аспектов, понимают, что от вас исходит бестолковый набор фраз, не имеющих ничего общего с реальным положением дел. Когда вы начинаете рассуждать, вы такую ересь несете, что ни один уважающий себя специалист просто не станет терять время на вас.
Последний раз редактировалось NewWriter; 29.09.2019 в 13:04.
|
|
|
|
02.10.2019, 20:16
|
|
Частый гость
Регистрация: 30.06.2007
Сообщений: 38
Сказал спасибо: 10
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Proteus общие вопросы
Сообщение от pic121618
|
Да никто не отжирал у Вас ресурсы:
1. У Вас есть один физический проц
2. При запуске Протеуса ему хватает ресурсов, он об этом сообщает
3. Наслаждайтесь полученным результатом, или же подойдите к зеркалу -
там увидете барана, который повёлся на маркетинговую рекламу о
1000 встроенных ядер...
|
Ндяя, как все запущенно.
То протеусу не хватает ресурсов, то уже все хватает.
Вы похоже сами в том зеркале находитесь, ибо кроме своей болтовни вы нифига не читаете что вам пишут )))
Разбей зеркало, а то так бараном и останешься.
|
|
|
|
10.11.2019, 19:53
|
|
Частый гость
Регистрация: 10.11.2019
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus общие вопросы
Здравствуйте.
PIC16
XC8 v1.20
Объясните почему Proteus выставляет горчичник на выражение PR2-=16; Причем не регулярно, а изредка, при симуляции.
Собственно горчичник:
[PIC16 MEMORY] PC=0x0005. Attempt to write unimplemented memory location 0x00FE with 0x05 ignored. [U1]
[PIC16 MEMORY] PC=0x0384. Attempt to read unimplemented memory location 0x00FE ignored. [U1]
Код:
|
if (flag_tweet) {
if (PR2 ‹ 141) {//Здесь не даем провалиться PR2 ниже 125
TMR2ON = 0;
PR2 = 255;
}
TMR2ON = 0;
PR2 -= 16;
T2CON = 0x05;//после смены PR2-запускаем таймер
CCP1CON |= 0x0F;
//Все действия согласно соответствующей документации.
} |
Выше по коду PR2 инициализирован значением 255 до входа в функцию, где написана эта часть кода.
В MPLAB, при симуляции, подобного "варнинга" нет.
|
|
|
|
10.11.2019, 20:17
|
|
Гражданин KAZUS.RU
Регистрация: 10.06.2010
Сообщений: 598
Сказал спасибо: 222
Сказали Спасибо 234 раз(а) в 154 сообщении(ях)
|
Re: Proteus общие вопросы
может нуна TMR2 обнулять перед изменением периода счета?
и эта сначала включаем ШИМ, а потом включаем таймер.
а вообще приведите листинг асма.
|
|
|
|
10.11.2019, 22:07
|
|
Частый гость
Регистрация: 10.11.2019
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus общие вопросы
Сообщение от DmitriyVDN
|
сначала включаем ШИМ, а потом включаем таймер
|
Нет.
4. Establish the TMR2 prescale value and enable Timer2 by writing to T2CON.
5. Configure the CCP module for PWM operation
|
|
|
|
10.11.2019, 22:48
|
|
Частый гость
Регистрация: 10.11.2019
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus общие вопросы
Пробовал обнулять таймер, не помогает.
В железе пищалка работает хорошо. Вопрос задал из любопытства. Ситуация не критическая.
А вот почему в окне "PIC CPU Variables" вообще ни как не видно переменных объявленных как
bit
Приходится создавать структуру с полями unsigned Bxxxx : 1; Это лишние телодвижения.
А переменные объявленные в "не стандартном размере"
uint24_t
Видно, но не отслеживаются их значения. Приходится засовывать их в Watch Windows, где их значения можно отследить выбрав "Data Types- Double WORD" отбросив в уме лишние отображаемые разряды.
Это беспокоит больше. Перерыл пол форума, ответа не нашел.
|
|
|
|
11.11.2019, 12:51
|
|
Гражданин KAZUS.RU
Регистрация: 10.06.2010
Сообщений: 598
Сказал спасибо: 222
Сказали Спасибо 234 раз(а) в 154 сообщении(ях)
|
Re: Proteus общие вопросы
Сообщение от Ganinoff
|
Нет.
|
шо нет? читайте референс мануал....
порядок инициализации ШИМ:
Последний раз редактировалось DmitriyVDN; 11.11.2019 в 12:54.
|
|
|
|
11.11.2019, 12:59
|
|
Гражданин KAZUS.RU
Регистрация: 10.06.2010
Сообщений: 598
Сказал спасибо: 222
Сказали Спасибо 234 раз(а) в 154 сообщении(ях)
|
Re: Proteus общие вопросы
только не понял, на кой менять период ШИМ , а не его заполнение
|
|
|
|
11.11.2019, 14:12
|
|
Частый гость
Регистрация: 10.11.2019
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus общие вопросы
Сообщение от DmitriyVDN
|
читайте референс мануал
|
Да менял уже порядок включения, еще хуже, было 4ре варнинга подряд, а стало 8мь.
В даташите тоже написано буквами что шим включается после TMR2, а в листинге, совершенно верно, наоборот.
Сообщение от DmitriyVDN
|
на кой менять период ШИМ , а не его заполнение
|
А на той, что это пищалка типа детской игрушки, а не диммер. Для создание звука разной высоты. Получается трель типа "электронной свирели", или сверчка если изменить скорость.
|
|
|
|
11.11.2019, 14:35
|
|
Частый гость
Регистрация: 10.11.2019
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus общие вопросы
Скважность там то же меняется, потому как CCPR1L не корректируется в момент изменения PR2. Что бы не было ее перебежки через "0" установлено ограничение
Код:
|
if (PR2 ‹ 141) {//Здесь не даем провалиться PR2 ниже 125
TMR2ON = 0;
PR2 = 255;
} |
Это не дает пищалке, уйти в мышиный писк, в зону дискомфортных звуков, и не требуется коррекция CCPR1L(H).
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:04.
|
|