Вопросы начинающих PIC ASM
Re: Вопросы начинающих PIC ASM
Или halt? То есть reset
- Реклама
Re: Вопросы начинающих PIC ASM
[uquote="yor",url="/forum/viewtopic.php?p=4599036#p4599036"]Или halt? То есть reset[/uquote]
Жесть... Не в коня корм.
Жесть... Не в коня корм.
Re: Вопросы начинающих PIC ASM
А если серьёзно, для чего nop используют в программе? Понятно, ничего не делать, пропуск командного цикла, задержка. В каких случаях это может понадобиться, пример можно? Если внешнее устройство, порт не поспевает, надо ПП задержки делать, на nop-ах в цикле или таймерах. Но иногда встречались листинги, один-два nop-а и всё. Чего они там задержат?
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Вопросы начинающих PIC ASM
Действительно в немногих случаях встречал, ниже: NOP напр. в start/stop I2c, чтобы условие было выполнено.
- требование из документации I2c

- эксперименты со HW Fast-mode plus I2c в PIC18F06Q40, измеренные данные от логического анализатора
.lst файл:

- требование из документации I2c
- эксперименты со HW Fast-mode plus I2c в PIC18F06Q40, измеренные данные от логического анализатора
.lst файл:
Код: Выделить всё
.. i2c_start();
*
00052: BSF 4C8.1
00054: NOP
00056: BSF 4C8.0
00058: BRA 005A
0005A: BCF 4C0.1
0005C: BCF 4C8.1
0005E: NOP
00060: BCF 4C0.0
00062: BCF 4C8.0Re: Вопросы начинающих PIC ASM
Как минимум, для подмены команды при ветвлении, для выравнивания, для того, чтобы подождать, пока какая-то одна аппаратная часть догонит другую.
И не стоит забывать, что ассемблер - это по сути не созданный язык программирования какого-то уровня, а набор инструкций процессора, оформленных в виде языка.
И не стоит забывать, что ассемблер - это по сути не созданный язык программирования какого-то уровня, а набор инструкций процессора, оформленных в виде языка.
- Реклама
Re: Вопросы начинающих PIC ASM
[uquote="Martian",url="/forum/viewtopic.php?p=4599207#p4599207"]Как минимум, для подмены команды при ветвлении, для выравнивания[/uquote]Можно этот момент прояснить? Какие команды подменять, если одно условие - значит делать то, другое - это. И про выравнивание. Поиск предлагает выравнивание фото.
А кстати, в проблеме RMW NOP может помочь?
А кстати, в проблеме RMW NOP может помочь?
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
[uquote="yor",url="/forum/viewtopic.php?p=4599221#p4599221"]И про выравнивание.[/uquote]
Условное ветвление имеет разное время исполнения, в зависимости от необходимости этого самого ветвления. Если код продолжает линейное исполнение, то время равно 1 циклу, а если произошел переход, то 2 циклам. Пустые инструкции позволяют выровнять оба варианта и обеспечить отсутствие джиттера временнОй диаграммы на этом участке.
Так же пустые инструкции позволяют формировать импульсы определенной длительности ногодрыгом. Обычно так делают при коротких импульсах длительностью в несколько машинных циклов.
В 16-разрядной платформе (PIC24/dsPIC) nop-ы применяют для задержек в циклах с RAW-инструкциями. Не путать с RMW.
К ним относятся инструкции с автоинкрементными/автодекрементными адресациями.
[uquote="yor",url="/forum/viewtopic.php?p=4599221#p4599221"]А кстати, в проблеме RMW NOP может помочь?[/uquote] Нет.
Условное ветвление имеет разное время исполнения, в зависимости от необходимости этого самого ветвления. Если код продолжает линейное исполнение, то время равно 1 циклу, а если произошел переход, то 2 циклам. Пустые инструкции позволяют выровнять оба варианта и обеспечить отсутствие джиттера временнОй диаграммы на этом участке.
Так же пустые инструкции позволяют формировать импульсы определенной длительности ногодрыгом. Обычно так делают при коротких импульсах длительностью в несколько машинных циклов.
В 16-разрядной платформе (PIC24/dsPIC) nop-ы применяют для задержек в циклах с RAW-инструкциями. Не путать с RMW.
К ним относятся инструкции с автоинкрементными/автодекрементными адресациями.
[uquote="yor",url="/forum/viewtopic.php?p=4599221#p4599221"]А кстати, в проблеме RMW NOP может помочь?[/uquote] Нет.
Последний раз редактировалось КРАМ Сб июл 06, 2024 11:33:18, всего редактировалось 1 раз.
Re: Вопросы начинающих PIC ASM
[uquote="КРАМ",url="/forum/viewtopic.php?p=4599226#p4599226"]линейное исполнение, то время равно 1 циклу, а если произошел переход, то 2 циклам. Пустые инструкции позволяют выровнять оба варианта
Так же пустые инструкции позволяют формировать импульсы определенной длительности ногодрыгом. Обычно так делают при коротких импульсах длительностью в несколько машинных циклов.[/uquote]
Логично.
Так же пустые инструкции позволяют формировать импульсы определенной длительности ногодрыгом. Обычно так делают при коротких импульсах длительностью в несколько машинных циклов.[/uquote]
Логично.
Re: Вопросы начинающих PIC ASM
Код: Выделить всё
incrementing of Timer0 (TMR0 and Prescaler) will also be inhibited 2 instruction cycles (TCY). So if the prescaler is configured as 2, then after a write to the TMR0 register TMR0 will not increment for 4 Timer0 clocks (Figure 11-3). After that, TMR0 will increment every prescaler number of clocks later.Как бы там ни было, надо, значит, сначала записать TMR, а потом предделитель. И никаких проблем? В смысле пропусков клоксов?
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
Clock - это единственное число
Clocks - множественное.
Если употребляете англицизмы, то потрудитесь не писать глупости.
Или склоняйте по правилам русского языка, или пишите по английски.
А то ваши клоксы звучат гомерически смешно.
Clocks - множественное.
Если употребляете англицизмы, то потрудитесь не писать глупости.
Или склоняйте по правилам русского языка, или пишите по английски.
А то ваши клоксы звучат гомерически смешно.
Re: Вопросы начинающих PIC ASM
https://web.archive.org/web/20080221231 ... c16_11.pdf
страничка 6...
Речь о 4 циклах при внутреннем тактировании.
Собственно предделитель T0 делит с WDT и там конкретно по выбранному МК почитать не помешает. Иногда включая ерраты.

страничка 6...
Речь о 4 циклах при внутреннем тактировании.
Собственно предделитель T0 делит с WDT и там конкретно по выбранному МК почитать не помешает. Иногда включая ерраты.
Re: Вопросы начинающих PIC ASM
[uquote="КРАМ",url="/forum/viewtopic.php?p=4600526#p4600526"]А то ваши клоксы звучат гомерически смешно.[/uquote]Смех продлевает жизнь! НО Вам, по-моему, не смешно)) Это грустно
Re: Вопросы начинающих PIC ASM
[uquote="КРАМ",url="/forum/viewtopic.php?p=4600526#p4600526"]клоксы[/uquote]двумерный массив клоков 
Re: Вопросы начинающих PIC ASM
Обнаружил ошибку в предыдущем описании. То сообщение никак удалить не могут.
Придумал способ превращения 8 бит таймера в 16 бит. Основано на динамическом вычислении значения предделителя.
Свойства:
1) точность отсчёта - десятки тиков
2) дискретность отсчёта - 1 тик
3) диапазон 64К тактов, как у 16 бит без делителя
Минусы:
1) большее время инициализации
...
Ошибка 21 тик, что на единицах и десятках миллисекунд очень даже нечувствительно.
Из FF вычитать кол-во циклов, так как таймер считает от нуля.
Придумал способ превращения 8 бит таймера в 16 бит. Основано на динамическом вычислении значения предделителя.
Свойства:
1) точность отсчёта - десятки тиков
2) дискретность отсчёта - 1 тик
3) диапазон 64К тактов, как у 16 бит без делителя
Минусы:
1) большее время инициализации
...
Код: Выделить всё
Дано: 16бит число 0x4321
Значение предделителя=период : макс разрядность предделителя
1) 4321:FF=43 (округлить до целого) ; FF - макс разрядность предделителя
(или 4321 >>8 = 43, надеюсь правильно обозначил сдвиг вправо на 8 разрядов, быстрее, но меньше точность)
2) У результата определить вес старшего единичного разряда
43 -> max^2 = 40 и взять следующий старший вес = 80 (не корите за корявость выражения)
Предделитель=0x80
Значение таймера=FF-период : предделитель
Кол-во циклов=4321:80=86 (округлить)
Значение TMR=FF-86=79, так как он считает от нуля
Итого имеем
T=preTMR*TMR
80*86=4300Из FF вычитать кол-во циклов, так как таймер считает от нуля.
Re: Вопросы начинающих PIC ASM
[uquote="КРАМ",url="/forum/viewtopic.php?p=4599226#p4599226"]...[uquote="yor",url="/forum/viewtopic.php?p=4599221#p4599221"]А кстати, в проблеме RMW NOP может помочь?[/uquote] Нет.[/uquote]
Всю ветку не читал, но для PIC без регистров LAT в некоторых случаях NOP очень даже может помочь. Вот хорошая статья на тему RMW:
https://electrosome.com/read-modify-write-problem-pic/
Когда проблема RMW может возникнуть:
http://www.amber.ssau.ru/download/PIC16_Manual.pdf
п.9.10.2. Последовательность операций с портами ввода/вывода
Всю ветку не читал, но для PIC без регистров LAT в некоторых случаях NOP очень даже может помочь. Вот хорошая статья на тему RMW:
https://electrosome.com/read-modify-write-problem-pic/
Когда проблема RMW может возникнуть:
И возможные варианты решения проблемы:The actual physical state (voltage level) of a pin may be different from the value written to PORT register in certain instances. For example:
- When the output pin is connected to high inductance or capacitance loads.
- When the output pin is connected to LEDs without current limiting resistors.
- When the output pin drives a transistor without base resistor.
- When the output pin is shorted to ground.
Этим "delay" как раз и может стать NOP. Но это, повторюсь, справедливо лишь в некоторых случаях, особенно у начинающих :-D. Нормальная схемотехника позволит не прибегать к таким трюкам, это чисто для теории. У первых PIC была еще история связанная с конвеером, где мог потребоваться NOP:...
How to Solve this problem ?
1. Insert a delay after RB7 = 1 such that sufficient time is provided for the charging of capacitor.
...
http://www.amber.ssau.ru/download/PIC16_Manual.pdf
п.9.10.2. Последовательность операций с портами ввода/вывода
Re: Вопросы начинающих PIC ASM
Про подавление дребезга и паразитных скачков на сканируемых входах: как-то говорили, и назывались цифры, что при механических кнопках порядка 20мс, на оптодатчиках вроде меньше, но тоже около единиц миллисекунд. Если память не изменяет. А как быть, если период между импульсами (между нажатиями, можно считать) сам по себе 5мс?
Ничего лучше как несколько раз опрашивать входы, сверяя с предыдущим состоянием, я не придумал.
Применена пара свето-фотодиод, между ними пролетает шторка из алюминия, обрезанная ножницами вручную. В сканировании участвует от 7 до 10 команд, безошибочный повтор 5 раз - это получается 35-50мкс. Какова надёжность такого способа?
Можно, наверное, шторку подточить на строгую перпендикулярность краёв, покрасить поглощающей краской, или и так сойдёт?
Ничего лучше как несколько раз опрашивать входы, сверяя с предыдущим состоянием, я не придумал.
Применена пара свето-фотодиод, между ними пролетает шторка из алюминия, обрезанная ножницами вручную. В сканировании участвует от 7 до 10 команд, безошибочный повтор 5 раз - это получается 35-50мкс. Какова надёжность такого способа?
Можно, наверное, шторку подточить на строгую перпендикулярность краёв, покрасить поглощающей краской, или и так сойдёт?
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
[uquote="yor",url="/forum/viewtopic.php?p=4601467#p4601467"]А как быть, если период между импульсами (между нажатиями, можно считать) сам по себе 5мс?[/uquote]
Что это за механический датчик с периодом 5 мс?
В любом случае, такой "автомобиль" не поедет.
Оптодатчики дребезга не имеют, в отличии от механических. Там вопрос решается простым гистерезисом триггера Шмитта или компаратора.
Что это за механический датчик с периодом 5 мс?
В любом случае, такой "автомобиль" не поедет.
Оптодатчики дребезга не имеют, в отличии от механических. Там вопрос решается простым гистерезисом триггера Шмитта или компаратора.
Re: Вопросы начинающих PIC ASM
[uquote="КРАМ",url="/forum/viewtopic.php?p=4601494#p4601494"]Что это за механический датчик с периодом 5 мс?[/uquote]Где я такое написал? Внимательнее читайте сообщения))
[uquote="КРАМ",url="/forum/viewtopic.php?p=4601494#p4601494"]Оптодатчики дребезга не имеют, в отличии от механических.[/uquote]На криво обрезанной шторке, да при отражениях от неё, могут быть явления, подобные дребезгу. Назовём их "паразитными срабатываниями".
[uquote="КРАМ",url="/forum/viewtopic.php?p=4601494#p4601494"]Оптодатчики дребезга не имеют, в отличии от механических.[/uquote]На криво обрезанной шторке, да при отражениях от неё, могут быть явления, подобные дребезгу. Назовём их "паразитными срабатываниями".
Re: Вопросы начинающих PIC ASM
[uquote="yor",url="/forum/viewtopic.php?p=4601467#p4601467"]Про подавление дребезга и паразитных скачков на сканируемых входах: как-то говорили, и назывались цифры, что при механических кнопках порядка 20мс[/uquote] число может быть и трехзначным, зависит от кнопки
геркон? возможно, тот успеет отдребезжатьКРАМ писал(а):Что это за механический датчик с периодом 5 мс?
Re: Вопросы начинающих PIC ASM
Чему вы удивлячетсь, хоть я и не писал об этом, но контакты прерывателя механические, да, вполне себе работают до 6000-8000тыс. оборотов, а это период 5-3мс у 2Ц/2Т мотора.


