Вопросы начинающих PIC ASM
Re: Вопросы начинающих PIC ASM
я не понимаю прерываний, если это не точный счёт времени, и прерывания могут поступить от разных источников...всё равно в таком случае их отрабатывать в какой-то очереди...я в этом случае запрещал прерывания, а потом в свободном месте цикла смотрел надо ли кому чего.....
- Реклама
- КРАМ
- Друг Кота
- Сообщения: 25237
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
[uquote="Kostin-cx",url="/forum/viewtopic.php?p=4457974#p4457974"]я не понимаю прерываний.....[/uquote]
Этим следовало бы и ограничится, а не продолжать говорить всякую хрень.
Прерывания вообще не нужны для счета времени. Прерывания нужны как РЕАКЦИЯ НА СОБЫТИЯ. Не важно какие.
Это может быть готовность данных периферии (АЦП, УАРТ, SPI, I2C и т.д.), Это может быть готовность периферии ПРИНЯТЬ новую порцию данных. Это может быть реакция на внешнее событие, например срабатывание датчика или переход через ноль напряжения сети...
А счет времени ведет ТАЙМЕР. И ему в этом процессе вообще не нужны никакие прерывания. Он вообще ничего не знает о прерываниях с той лишь разницей, что он САМ МОЖЕТ ИХ ГЕНЕРИРОВАТЬ при определенных обстоятельствах.
Что касается процесса обработки событий от разных источников, то либо нужно мириться с ограничениями архитектуры с фиксированным вектором (семафор в начале обработчика и последовательная обработка в порядке этого семафора), либо переходить на МК с индивидуальными векторами на каждый источник прерываний (по типу PIC18Q), либо переходить на МК с контроллером вложенных прерываний (PIC24, dsPIC33, PIC32, PIC32C или вообще любой другой ARM иных производителей).
Этим следовало бы и ограничится, а не продолжать говорить всякую хрень.
Прерывания вообще не нужны для счета времени. Прерывания нужны как РЕАКЦИЯ НА СОБЫТИЯ. Не важно какие.
Это может быть готовность данных периферии (АЦП, УАРТ, SPI, I2C и т.д.), Это может быть готовность периферии ПРИНЯТЬ новую порцию данных. Это может быть реакция на внешнее событие, например срабатывание датчика или переход через ноль напряжения сети...
А счет времени ведет ТАЙМЕР. И ему в этом процессе вообще не нужны никакие прерывания. Он вообще ничего не знает о прерываниях с той лишь разницей, что он САМ МОЖЕТ ИХ ГЕНЕРИРОВАТЬ при определенных обстоятельствах.
Что касается процесса обработки событий от разных источников, то либо нужно мириться с ограничениями архитектуры с фиксированным вектором (семафор в начале обработчика и последовательная обработка в порядке этого семафора), либо переходить на МК с индивидуальными векторами на каждый источник прерываний (по типу PIC18Q), либо переходить на МК с контроллером вложенных прерываний (PIC24, dsPIC33, PIC32, PIC32C или вообще любой другой ARM иных производителей).
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Вопросы начинающих PIC ASM
Тоже не понятна идея использовать 20+ летний МК для всего, в т.ч. обработка сигналов как в теме (почти ЦОС
). Они с ограниченные ресурсы, сейчас уже дороже.
случайное сравнение с тем, что есть:
PIC16F648A: $3.34, 7KB, 256b, 3 таймера, Interrupt Sources: 10, без возм. изменения приоритета
PIC18F26Q10: $1.49, 64KB, 3.6KB, 7 таймера, 2-Level Interrupt Priority, с переводчиком: прерывания с высоким приоритетом прерывает прерывание с низким приоритетом.
Вижу вариант деятельности таким образом только для ознакомления с возможностями старых типов МК, но не для работающей конструкции.
...
По нескольким моим конструкциям вопросы похожи на вопросы моих друзей и знакомых: "С этим МК нельзя?" И возвращаются на 16F628A, 12F629/675, 16F873А ... (Возможно, такие МК так и остались неиспользованными, не знаю, что еще думать для причина). Ну, не может. Часто остаюсь с непониманием.
случайное сравнение с тем, что есть:
PIC16F648A: $3.34, 7KB, 256b, 3 таймера, Interrupt Sources: 10, без возм. изменения приоритета
PIC18F26Q10: $1.49, 64KB, 3.6KB, 7 таймера, 2-Level Interrupt Priority, с переводчиком: прерывания с высоким приоритетом прерывает прерывание с низким приоритетом.
Вижу вариант деятельности таким образом только для ознакомления с возможностями старых типов МК, но не для работающей конструкции.
...
По нескольким моим конструкциям вопросы похожи на вопросы моих друзей и знакомых: "С этим МК нельзя?" И возвращаются на 16F628A, 12F629/675, 16F873А ... (Возможно, такие МК так и остались неиспользованными, не знаю, что еще думать для причина). Ну, не может. Часто остаюсь с непониманием.
Последний раз редактировалось veso74 Вс авг 06, 2023 10:35:35, всего редактировалось 1 раз.
Re: Вопросы начинающих PIC ASM
так вот именно, что сразу на все события одним процессором не отреагируешь, поэтому "все в очередь", типа закончу одно, займусь следующим...(да, процессор не из новейших и опыт далеко не программиста)КРАМ писал(а): Прерывания нужны как РЕАКЦИЯ НА СОБЫТИЯ
===
для себя я представлял, что по прерыванию должен следовать мгновенный переход на его отработку, а если мгновенный не требуется, то тогда обработка запросов в свободном месте программы, когда все "внутренние" процессы завершены...
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Вопросы начинающих PIC ASM
Ето верно: с флагом, быстрыми расчетами. А в плюсе: некоторые компиляторы/IDE (С) отказываются компилироваться при обнаружении возможных конфликтов, что избавляет от бесконечного написания кода и тестирования с вых. логических ошибок и несоответствий.
Код: Выделить всё
>>> Warning 216: Interrupts disabled during call to prevent re-entrancy: (...)- Реклама
- КРАМ
- Друг Кота
- Сообщения: 25237
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
[uquote="Kostin-cx",url="/forum/viewtopic.php?p=4458014#p4458014"]так вот именно, что сразу на все события одним процессором не отреагируешь, поэтому "все в очередь", типа закончу одно, займусь следующим...(да, процессор не из новейших и опыт далеко не программиста)
===
для себя я представлял, что по прерыванию должен следовать мгновенный переход на его отработку, а если мгновенный не требуется, то тогда обработка запросов в свободном месте программы, когда все "внутренние" процессы завершены...[/uquote]
Никаких "мгновенных" переходов не может быть ПО ОПРЕДЕЛЕНИЮ. Любой вызов обработчика прерываний связан с ЛАТЕНТНОСТЬЮ такого перехода (в разных архитектурах эта латентность разная), которая (латентность) определяется длиной конвейера АЛУ, который нужно завершить, отделив код основного цикла от кода обработчика. То есть минимум 4 машинных цикла на такой переход придется отдать. Далее последует сохранение контекста, которое в обсуждаемой архитектуре займет еще 4 машинных цикла, затем семафор - еще 4 цикла... И лишь потом код собственно обработчика.
Механизм прерываний не слишком быстр. Им не реализовать строгий синхронизм. Поэтому синхронизацию нужно строить на встроенных аппаратных фичах МК.
===
для себя я представлял, что по прерыванию должен следовать мгновенный переход на его отработку, а если мгновенный не требуется, то тогда обработка запросов в свободном месте программы, когда все "внутренние" процессы завершены...[/uquote]
Никаких "мгновенных" переходов не может быть ПО ОПРЕДЕЛЕНИЮ. Любой вызов обработчика прерываний связан с ЛАТЕНТНОСТЬЮ такого перехода (в разных архитектурах эта латентность разная), которая (латентность) определяется длиной конвейера АЛУ, который нужно завершить, отделив код основного цикла от кода обработчика. То есть минимум 4 машинных цикла на такой переход придется отдать. Далее последует сохранение контекста, которое в обсуждаемой архитектуре займет еще 4 машинных цикла, затем семафор - еще 4 цикла... И лишь потом код собственно обработчика.
Механизм прерываний не слишком быстр. Им не реализовать строгий синхронизм. Поэтому синхронизацию нужно строить на встроенных аппаратных фичах МК.
Re: Вопросы начинающих PIC ASM
Правильно ли я понимаю, что подсчёт длительности с помощью 8бит таймера до прерывания в тактах OSC/4 выглядит так: Kpre*FF*Kpost+TMR?
А с дискретностью тут не очень, она равна Kpre*Kpost?
А с дискретностью тут не очень, она равна Kpre*Kpost?
- КРАМ
- Друг Кота
- Сообщения: 25237
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
[uquote="yor",url="/forum/viewtopic.php?p=4459588#p4459588"]с дискретностью тут не очень[/uquote]
Именно так. Патамушта выбирать МК нужно под задачу, а не заниматься мазохизмом в неприспособленных условиях.
Именно так. Патамушта выбирать МК нужно под задачу, а не заниматься мазохизмом в неприспособленных условиях.
Re: Вопросы начинающих PIC ASM
Может подскажете замену нога в ногу pic16f648 с двумя 16 бит таймерами?
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Вопросы начинающих PIC ASM
Задайте нужные параметры (напр. pin18 - pin 18), база будет отфильтрована и легко найдете нужный МК:
MICROCHIP ADVANCED PART SELECTOR
МК на 18 выводов не много. Такого МК нет.
PIC18F1220/1320, некоторые контакты совпадают, но номера входов/выходов с 16F648A разные.
MICROCHIP ADVANCED PART SELECTOR
МК на 18 выводов не много. Такого МК нет.
PIC18F1220/1320, некоторые контакты совпадают, но номера входов/выходов с 16F648A разные.
- КРАМ
- Друг Кота
- Сообщения: 25237
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
[uquote="yor",url="/forum/viewtopic.php?p=4459720#p4459720"]Может подскажете замену нога в ногу[/uquote]
Зачем нога в ногу?
Вы модернизируете серийное изделие?
Зачем нога в ногу?
Re: Вопросы начинающих PIC ASM
PIC18F1230/1330 да, побогаче, и прерываний море, и частота 40МГц, но таймера всего два, зато 16бит. Пока вроде хватает. При написании своей программы несовпадение ног не страшно. Но стоят от 300руб, до 600, а в чипдипе 2600!
Мелкосерийное)) У меня пять изделий, и старая программа без исходников уже на них не пойдёт. Если вдруг придётся вернуться. Так что повоюем пока. Ради повышения квалификации в том числе. В принципе, варианты есть. Пускать друг за другом два 8бит таймера без делителей, например. Использовать один 16-битный на всё про всё.
Мелкосерийное)) У меня пять изделий, и старая программа без исходников уже на них не пойдёт. Если вдруг придётся вернуться. Так что повоюем пока. Ради повышения квалификации в том числе. В принципе, варианты есть. Пускать друг за другом два 8бит таймера без делителей, например. Использовать один 16-битный на всё про всё.
Re: Вопросы начинающих PIC ASM
Есть смысл посмотреть чего есть в "улучшенной среднемладшей" в смысле подобия корпусировки и улучшенного содержимого.....

- Steppe
- Друг Кота
- Сообщения: 4812
- Зарегистрирован: Вс сен 17, 2017 17:44:21
- Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.
Re: Вопросы начинающих PIC ASM
[uquote="yor",url="/forum/viewtopic.php?p=4459720#p4459720"]Может подскажете замену нога в ногу pic16f648 с двумя 16 бит таймерами?[/uquote]
Сделайте переходник. В любом случае программу переделывать надо, с одного камушка на другой не перенесешь без изменений.
Сделайте переходник. В любом случае программу переделывать надо, с одного камушка на другой не перенесешь без изменений.
- Zikon
- Встал на лапы
- Сообщения: 92
- Зарегистрирован: Вт фев 28, 2017 08:13:31
- Откуда: Свердловская обл.
Re: Вопросы начинающих PIC ASM
для замены pic16f648a
в "улучшенной среднемладшей" совместимые по ногам полностью
pic16f1826 - но 2+1 таймера (8b-16b)
pic16f1827(47) - но у них 4+1 таймера (8b-16b)
система команд - гораздо лучше и переферии много
а среди pic18 питание также, а порты по другому
pic18f1220/1320 - 1+3 таймера (8b-16b)
pic18f1230/1330 - 0+2 таймера (8b-16b)
выводы для программирования совместимы
цена только заоблачная ввиду старости - наверное
в "улучшенной среднемладшей" совместимые по ногам полностью
pic16f1826 - но 2+1 таймера (8b-16b)
pic16f1827(47) - но у них 4+1 таймера (8b-16b)
система команд - гораздо лучше и переферии много
а среди pic18 питание также, а порты по другому
pic18f1220/1320 - 1+3 таймера (8b-16b)
pic18f1230/1330 - 0+2 таймера (8b-16b)
выводы для программирования совместимы
цена только заоблачная ввиду старости - наверное
Re: Вопросы начинающих PIC ASM
Спасибо, прикину.
Re: Вопросы начинающих PIC ASM
Открыл Америку, придумал как сделать 16-бит таймер из одного 8-ми битного)) Всё очень просто, организуем дополнительный регистр, который инкрементируем в каждом цикле. Ну и собственно всё как у взрослого. Только прерывания часто сыпать будут.
Так что решил я обратить внимание на pic18f1220/1320 и pic18f1230/1330. А даташиты на них старые, старше чем на 16f648. И микрочип вроде не даёт скачать с их сайта. Где взять, поделитесь пож-ста.
Так что решил я обратить внимание на pic18f1220/1320 и pic18f1230/1330. А даташиты на них старые, старше чем на 16f648. И микрочип вроде не даёт скачать с их сайта. Где взять, поделитесь пож-ста.
Re: Вопросы начинающих PIC ASM
Вот...
Добавлено after 1 minute 42 seconds:
И до полного комплекта:
И до полного комплекта:


