Вопросы начинающих PIC ASM

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 4812
Зарегистрирован: Вс сен 17, 2017 17:44:21
Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.

Сообщение Steppe »

[uquote="BOB51",url="/forum/viewtopic.php?p=4592180#p4592180"]Многое ....[/uquote]
Я задал довольно конкретный вопрос. Вы мне написали целую обобщающую главу.
Про подключение импульсных трансформаторов к ногам МК [uquote="BOB51",url="/forum/viewtopic.php?p=4592180#p4592180"]Применяем варианты ключей с высокоомным входом (эмиттерные повторители) и гальванразвязки на оптронах или импульсных трансформаторах..[/uquote]
даже комментировать не буду.
Как впрочем и все остальное.
Применял как-то dsPIC33FJхххх (80-pin TQFP) c питанием 3,3 В. Навешивал на него много чего. Еле ног хватило. Получился такой контроллер технологического оборудования со многими функциями и т.д. Выбор пал на эту серию из-за встроенного интерфейса с квадратурным энкодером.
Реклама
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

[uquote="yor",url="/forum/viewtopic.php?p=4592171#p4592171"]А, я понял! ... Искажение - это всего-навсего просадка вывода. И она актуальна в течение нескольких ближайших тактов, или больше, в зависимости от.[/uquote] Если речь всё ещё о RMW, то - нет.
Эта просадка актуальна в течение каких-то наносекунд, а то и меньше, пока входные емкости зарядятся. И я согласен со Steppe, искажать логические уровни мощными нагрузками... ну это возможно только лишь в нарушение спецификаций, не читая их и не зная ничего. Например, цепляясь к древней 145-ой серии бездумно, можно исказить как угодно, да, там требование к нагрузке - мегаом и более. И если имеются ввиду такие специфичные случаи, то спецификация в руки.

Добавлено after 4 minutes 11 seconds:
[uquote="BOB51",url="/forum/viewtopic.php?p=4592180#p4592180"]Классика разработки внешней схемотехники 30-40 летней давности не отменялась.[/uquote] Не 30-40, а вообще. Правила есть правила, их соблюдать надо всегда.
Но причём тут RMW?
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15697
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Речь о том, что возможно (но в большинстве простых конструкций редко попадается).
Конкретика зависит и от поколения МК и от квалификации выполняющего проект.
Смотрим название данной ветки.
:wink:
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

А в сложных - часто? :)))
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 4812
Зарегистрирован: Вс сен 17, 2017 17:44:21
Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.

Сообщение Steppe »

[uquote="Martian",url="/forum/viewtopic.php?p=4592206#p4592206"]И я согласен со Steppe, искажать логические уровни мощными нагрузками... ну это возможно только лишь в нарушение спецификаций,[/uquote]
Мы же не китайцы, которые вешают на ноги МК напрямую аноды/катоды семисегментных индикаторов, да еще и опрос клавиатурных кнопок одновременно туда же.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15697
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Это уже не вопросы ассемблера и системы команд.
8)
Абсолютным решением вопроса является применение дополнительных буферных регистров в ОЗУ - одного под исходные данные для вывода в порт другого для хранения текущих данных, считанных из линий порта. Медленно, но полностью контролируемо.
"Стандартная средне младшая" это совсем не 18я или более "старшие".
А уж если и это не помогает - тогда лезем в дебри документации и схемотехники.
8)
Реклама
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

хм... а почему сразу не залезть в дебри документации и схемотехники? Когда мне здесь указали на ошибочность понимания работы порта, у меня сразу всё стало просто и логично. И если бы раннее сразу залез в дебри (точнее, понял бы их верно), то и сразу было бы проще.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15697
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Документация на сегодня это несколько буков страниц за 500 да на иностранном (включая иероглифы).
Вычитывать её в обязательном порядке разве что профессионалам под силу.
Чаще читаем общую часть в обязательном порядке и уже глубоко "по прециденту" встречи с неясной ситуацией.
Иначе "мозги выкипят" (Да и при нынешней частоте смены поколений и семейств МК ресурса мозгов на ВСЁ не хватит).
:beer:
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

ну... ну... ну тогда я не знаю, как быть :)
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4812
Зарегистрирован: Вс сен 17, 2017 17:44:21
Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.

Сообщение Steppe »

[uquote="BOB51",url="/forum/viewtopic.php?p=4592230#p4592230"]Документация на сегодня это несколько буков страниц за 500 да на иностранном (включая иероглифы).
Вычитывать её в обязательном порядке разве что профессионалам под силу.
Чаще читаем общую часть в обязательном порядке и уже глубоко "по прециденту" встречи с неясной ситуацией.
Иначе "мозги выкипят" (Да и при нынешней частоте смены поколений и семейств МК ресурса мозгов на ВСЁ не хватит).
:beer:[/uquote]
Позвольте мне не согласиться с таким утверждением.
МК меняются не так часто, как вам кажется. У семейств существует преемственность. Если понадобиться разобраться с определенным интерфейсом, к примеру CAN, DMA или другими, то читай соответствующие главы. Вычитывать нужно в обязательном порядке. И что такое "общая часть" в datasheet? Первые несколько страниц документа?
Не разбираясь с работой "модулей", интерфейсов, что находятся на борту любого МК, ничего путного никогда не создать.
Друг Кота
Аватара пользователя
Сообщения: 15697
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Martian писал(а):ну... ну... ну тогда я не знаю, как быть :)
Читать учебники по навыкам сбора, систематизации и анализу информации.
:wink:
Steppe
В каждом МК всегда будут неиспользуемые в конкретной конструкции режимы работы и аппаратные модули.
Перечитывать ВСЁ в таком случае весьма избыточно.
Насчёт смены поколений МК и семейств (даже с учётом некоторой преемственности) то минимум раз в год новинки в серию запускаются. Функции начальной конфигурации давненько уже вручную мало кто делает - пользуются готовым софтом не вникая в подробности (т.е. не вычитывая документацию МК). И только при возникновении проблем к букам обращаются. И плюсы в том и минусы.
8)
Друг Кота
Аватара пользователя
Сообщения: 25560
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="Steppe",url="/forum/viewtopic.php?p=4592236#p4592236"]Позвольте мне не согласиться с таким утверждением.
....... ничего путного никогда не создать.[/uquote]
:facepalm:
"Не ищи дурее себя..." (с)
В очередной раз повторяю поговорку моего тестя...
Ваш опыт канешна бесценен, но недостаточен, чтобы нравоучить.
Классический случай проблемы связанной с отсутствием входной защелки В СТАРЫХ МК Микрочипа - программная эмуляция 1Wire и I2C.
Не нужно просаживать выходы, достаточно применить open drain. Рассказать вам как это происходит?
Абисняю.
Ноль пишут в выходную защелку порта PORTx, а вывод осуществляют с помощью TRISx.
Надеюсь вы догадались как быстро в порт будет перезаписана единица вместо нуля?
:tea:
Ну и в догон напомню вашему бесценному опыту, что в 18-х пиках и, тем более, в дспиках всегда имеется отдельная защелка у выхода и отдельная у входа. Поэтому там такого конфликта не может быть по определению.
[uquote="yor",url="/forum/viewtopic.php?p=4592171#p4592171"]А, я понял![/uquote]
Нет, вы ничего не поняли.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

что-то я упускаю суть и у меня создаётся ощущение, что мы все доказываем одно и то же. Ещё больше запутывая yor
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4812
Зарегистрирован: Вс сен 17, 2017 17:44:21
Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.

Сообщение Steppe »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4592242#p4592242"]"Не ищи дурее себя..." (с)
В очередной раз повторяю поговорку моего тестя...[/uquote]
Вот на этой сладкой парочке и остановимся...
Друг Кота
Аватара пользователя
Сообщения: 15697
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Разновидность (вариации на тему) DDS?...
8)
yor
Мудрый кот
Сообщения: 1711
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Это прямой цифровой синтез? Я и слов таких не знаю))
Человек изобрести может всё, но кто ж виноват, что всё изобретено до нас))
Друг Кота
Аватара пользователя
Сообщения: 15697
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Ну вроде того...
таймер 8 разрядный счетные тики дает, а программный обработчик заданную частоту высчитывает.
:roll:
yor
Мудрый кот
Сообщения: 1711
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Есть ли какие тонкости с WDT, или просто настроить его и сбрасывать по ходу программы, пока не истекло время?
Друг Кота
Аватара пользователя
Сообщения: 4812
Зарегистрирован: Вс сен 17, 2017 17:44:21
Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.

Сообщение Steppe »

[uquote="yor",url="/forum/viewtopic.php?p=4594214#p4594214"]Есть ли какие тонкости с WDT, или просто настроить его и сбрасывать по ходу программы, пока не истекло время?[/uquote]
Есть. Все они описаны в datasheet
yor
Мудрый кот
Сообщения: 1711
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4436367#p4436367"]избегайте блокирующего кода. То есть такого кода, который занимает много времени на свое исполнение. Любой код должен вызываться из пустого цикла, исполняться и возвращать управление в пустой цикл. Пустой цикл - это основной внешний цикл работы МК из которого вызываются все функции.
На ассемблере PIC-ов это выглядит так:

Код: Выделить всё

Superloop:
        call    Func1
        call    Func2
        call    Func3
..
        call    FuncN
        goto  Superloop

Func1:
......
       return

Func2:
......
       return

Func3:
......
       return

...................
...................
...................

FuncN:
......
       return
На фоне работы этого кода могут генерироваться и вызываться прерывания, обработчики которых являются отдельным кодом.[/uquote]Это пример идеальной программы? В смысле сферической в вакууме? В мало-мальски сложной программе скорей всего (и даже точно) надо будет по результатам выполнения FuncN прыгать в разные места, крутиться и вертеться как волчок. Мне кажется, что очень трудно, если вообще возможно, оформить чисто в таком виде. Без вставок проверок условий и т.д. рутины.
Вопрос вызван вот чем:

Код: Выделить всё

; RA2 изменил уровень, как? Спад или подъём? Факт смены уровня подразумавает инверсию D1 in Dlvl
; Просто инвертируем его, если был 0 -> 1 && call RearFront, 1 -> 0 && call FwdFront
<------>movlw<->0x4<---><------>; вес D1
<------>xorwf<->Dlvl,f<><------>; инверсия D1
<------>btfss<->Dlvl,D1
<------>call<-->FwdFront
[<----->goto<-->scanD]
<------>call<-->RearFront
Не могу сообразить, как после проверки btfss пройти на два последовательных вызова ПП? После первой не надо вызывать вторую. Но если вставить goto, то на него сразу уйдёт вместо второго call. Подскажите пож-ста, какая тут есть хитрость.
Ответить

Вернуться в «PIC»