Перейти к содержанию

Общие вопросы по PIC-микроконтроллерам


NebsteR

Рекомендуемые сообщения

Добрый день. У меня вопрос по PIC16F946. Есть одна схема и две прошивки, с одной внешний кварц на 8 мгц нормально запускается, со второй не хочет. В битах конфигурации всё идентично, стоит бит HS. На внутреннем генераторе обе прошивки работают. Я так понимаю нужно что-то править ещё в самой прошивке? Хотя мне казалось при установке HS кварц по любому должен заводиться. 

Ссылка на комментарий
Поделиться на другие сайты

Если 2 разные прошивки на одном и том же железе ведут себя по-разному, какой логический вывод можно из этого сделать ? Неужели на железо хотите грешить ?

Ссылка на комментарий
Поделиться на другие сайты

Логический вывод напросился сам: хочешь что-то сделать - делай сам! ....... На другие ответы не особо рассчитывал.))

P.S. Спасибо за неоценимую помощь КЭП!

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Микроконтроллер PIC16f84a.

Возможен паереход из основной программы в прерывание а при выходе из прерывания в "START" основной программы?

Заранее спасибо!

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

18 часов назад, legik сказал:

PIC16f84a. Возможен переход?

Странный выбор контроллера для подобных извращений...

Попробуйте сформулировать конечную задачу. Есть сильное подозрение, что вы пытаетесь ее решить перректальным методом.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, my504 сказал:

Странный выбор контроллера для подобных извращений...

Попробуйте сформулировать конечную задачу. Есть сильное подозрение, что вы пытаетесь ее решить перректальным методом.

Возможно, поэтому и обратился в этот раздел.

Конечная задача - генерация импульсов  определенной длительности  с выхода RA4.

 

Это один из 3 циклов основной программы:

lo_cyc        decfsz    ml_b_lo_tmp,1
        goto    lo_cyc
        decfsz    sr_b_lo_tmp,1
        goto    lo_cyc
        ;decfsz    st_b_lo_tmp,1
        ;goto    lo_cyc
        bsf        PORTA,4
        
        movf    ml_b_hi,0
        movwf    ml_b_hi_tmp
        movf    sr_b_hi,0
        movwf    sr_b_hi_tmp
        movf    st_b_hi,0
        movwf    st_b_hi_tmp
        
        goto    hi_cyc
        
        
hi_cyc        decfsz    ml_b_hi_tmp,1
        goto    hi_cyc
        decfsz    sr_b_hi_tmp,1
        goto    hi_cyc
        ;decfsz    st_b_hi_tmp,1
        ;goto    hi_cyc
        bcf        PORTA,4
        
        movf    ml_b_lo,0
        movwf    ml_b_lo_tmp
        movf    sr_b_lo,0
        movwf    sr_b_lo_tmp
        movf    st_b_lo,0
        movwf    st_b_lo_tmp
        
        goto    lo_cyc

в прерывании я изменяю длительность импульсов и перехожу на "START" программы, после "START" я провожу проверку регистров и перехожу на один из 3 таких циклов.

почему 3 цикла? потомучто самый старший регистр может быть нулем и я его хочу исключить в других циклах. при старте и проверок на 0.

кто нибудь подскажет как можно из прерывания попасть на "START" программы?

 

 

Изменено пользователем legik
Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, IMXO сказал:

проверки чего? 

для перейти на вектор сброса достаточно goto... , другой вопрос, что стек в пик16 не доступен и будет рушится.

Вы имеете ввиду "goto 0000h"?

Сброс стэка тоже произойдет?

Ссылка на комментарий
Поделиться на другие сайты

legik - Сброс стэка тоже произойдет?

 

Почему вы решили, что произойдёт сброс? Разве где-то в даташите на данный МК такое упоминалось?
Здесь только программный возврат из прерывания приведёт стек в предыдущее его состояние. Ибо задача и логика (сиречь суть) прерывания - ТОЛЬКО срочно ПРЕРВАТЬ выполнения основной программы и выполнив там некие действа, вернуться и продолжить её исполнение. Всё, что не так (в вашем предположении тоже), будет заполнять стек и в итоге приведёт к его переполнению и как следствbе - к сбою выполнения программы. Стек в данном МК программно не доступен.
Ищите другие пути логики вашего процесса. И поверьте, они есть. :)

Ссылка на комментарий
Поделиться на другие сайты

2 hours ago, legik said:

Сброс стэка тоже произойдет?

В этом МК не надо беспокоиться о сбросе стека. Стек представляет собой циклический буфер на 8 ячеек, и указатель стека ходит по кругу. При записи в стек более восьми раз: указатель сбросится и запись начнётся с начала стека.

Поэтому можно начинать программу или делать рестарт, имея указатель стека на любом месте. Главное, в программе не делать более 8 вложенных вызовов функций или прерываний.

Думаю, что просто напишите в прерывании последней строчкой "goto START", а о стеке не беспокойтесь.

Ссылка на комментарий
Поделиться на другие сайты

30 минут назад, Yurkin2015 сказал:

Главное, в программе не делать более 8 вложенных вызовов функций или прерываний.

Думаю, что просто напишите в прерывании последней строчкой "goto START", а о стеке не беспокойтесь.

это если уходить из прерывания по return , retlw or retfie .

выход по goto  будет изменять расположение вершины стека. поэтому здесь даже одного вызова функции ужо не получецо  и  придется забыть о командах call,  return , retlw or retfie и использовать программный стек и прямую запись в PCL

хотя мы до сих пор не знаем, что собственно надо ТС и какие требования выдвигаются к стабильности сигнала на выходе RA4 ,  даже обычный вызов прерывания (с возвратом по retfie) из выше озвученных циклов будет рвать сигнал в ..овно.

Ссылка на комментарий
Поделиться на другие сайты

Yurkin2015 - В этом МК не надо беспокоиться о сбросе стека. Стек представляет собой ...

Беспокоится надо прежде всего о правильной, грамотной, читабельной и понятной логике программирования. И также к умению правильно увязывать требования процесса с не только (а вдруг в этом МК прокатит "нЕчто") с недокументированными возможностями МК, но и с возможным использованием программы на другом МК того же семейства (к примеру 628 и пр. подобных),

Да и зацикливаться на представленном варианте программы тоже нет смысла, ибо задача достаточно тривиальна и вполне себе решается правильным построением логики.

Ссылка на комментарий
Поделиться на другие сайты

11 часов назад, legik сказал:

Конечная задача - генерация импульсов  определенной длительности  с выхода RA4.

в прерывании я изменяю длительность импульсов и перехожу на "START" программы....

Вместо ответа по существу Вы зачем то привели кусок кода, который к вопросу не имеет никакого отношения.

1. Первая часть вопроса - почему взят этот контроллер для такой задачи? Это я к тому, что есть ПИН2ПИН совместимый PIC16F628A с модулем CCP и тремя таймерами.

2. Вторая часть вопроса - в чем причина столь экзотического решения? Что мешает в прерывании изменять параметр и выставлять флаг требования изменить программный счетчик в основном цикле по завершению очередного цикла генерации?

3. Под конечной задачей я понимаю ВСЮ задачу ПО СУЩЕСТВУ, а не какие то обрывки фраз из которых нужно догадываться о Ваших реальных намерениях.

Конкретно. Что такое входной сигнал? Я так понимаю, что это сигнал на входе внешнего прерывания? Параметры сигнала какие? Частота, скважность?

Что такое выходной сигнал по отношению к входному ?  Частота, скважность?

Я канешна смутно догадываюсь, что речь идет о пересчете одной частоты в другую для какой нибудь очередной приборки, но все же можно не заставлять гадать на кофейной гуще...

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

03.07.2020 в 23:05, legik сказал:

Возможен паереход из основной программы в прерывание а при выходе из прерывания в "START" основной программы?

Именно нужно в "START" возвращаться?

Если задействовать пин контроллера "RESET" - так не подойдёт? С полным сбросом контроллера очень просто получается, причём с любым контроллером.

Технические вопросы решаю в теме , в личке не обсуждаю !!!

Ссылка на комментарий
Поделиться на другие сайты

10 часов назад, my504 сказал:

Вместо ответа по существу Вы зачем то привели кусок кода, который к вопросу не имеет никакого отношения.

1. Первая часть вопроса - почему взят этот контроллер для такой задачи? 

Использую то что есть.

10 часов назад, my504 сказал:

2. Вторая часть вопроса - в чем причина столь экзотического решения? Что мешает в прерывании изменять параметр и выставлять флаг требования изменить программный счетчик в основном цикле по завершению очередного цикла генерации?

В прерывании я изменяю длительность импульсов высокого и длительность низкого уровня сигнала.

 

11 часов назад, my504 сказал:

Конкретно. Что такое входной сигнал?

нет входного  сигнала, просто генератор импульсов.

11 часов назад, my504 сказал:

Я канешна смутно догадываюсь, что речь идет о пересчете одной частоты в другую для какой нибудь очередной приборки, но все же можно не заставлять гадать на кофейной гуще...

нет никакого пересчета, чисто генерация импульсов.

Основновной код я выложил. Он состоит из цикла который генерирует длительность низкого уровня и цикла который генерирует высокий уровень и всё.

В дальнейшем добавлю еще 2 таких цикла но без самых старших регистров("st_b_hi" или "st_b_lo" если они будут равны "0").

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, legik сказал:

В прерывании я изменяю

В прерывании ОТ ЧЕГО?  О каких частотах ШИМ идет речь? О каких скважностях идет речь?

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

18 часов назад, IMXO сказал:

выход по goto  будет изменять расположение вершины стека. поэтому здесь даже одного вызова функции ужо не получецо  и  придется забыть о командах call,  return , retlw or retfie ....

Впринципе устраивает вариант. Буду пробывать,  всем спасибо.

Только что, my504 сказал:

В прерывании ОТ ЧЕГО?  О каких частотах ШИМ идет речь? О каких скважностях идет речь?

нет никаких частот и ШИМ, меняю 3 регистра длительности высокого уровня и 3 регистра длительности низкого уровня и после прерывания прехожу в цикл.

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, legik сказал:

и после прерывания прехожу в цикл.

Я просто в недоумении... В этом МК есть только ДВА источника прерываний касающихся событий времени - внешнее прерывание и прерывание по TMR0. Если не внешнее, и при условии, что вы считаете программным счетчиком, то как тут использован TMR0?

 

6 минут назад, legik сказал:

меняю 3 регистра длительности высокого уровня и 3 регистра длительности низкого уровня.

Вообще то это и есть ШИМ. Программный, но ШИМ.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, legik сказал:

да, про "RESET" я уже задумывался но хочеться более корректно решить задачу

Да что там делать-то?

В конце цикла прерывания переводишь один разряд какого-либо порта в "0". Этот разряд соединяешь с RESET. С резистором подтягиваешь это соединение к "+" питания. И всего-то делов. 

В конце цикла прерывания просто рестартируется контроллер.

Технические вопросы решаю в теме , в личке не обсуждаю !!!

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, Shahabbas сказал:

В конце цикла прерывания

Мне начало казаться, что нет никакого прерывания... :crazy: 

Есть такое мнение, что формальные советы могут завести в тупик. Автор вопроса говорит на каком то своем языке...

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

13 минут назад, my504 сказал:

Мне начало казаться, что нет никакого прерывания... :crazy: 

 

А это что?:

 

03.07.2020 в 23:05, legik сказал:

Возможен паереход из основной программы в прерывание а при выходе из прерывания в "START" основной программы?

 

Изменено пользователем Shahabbas

Технические вопросы решаю в теме , в личке не обсуждаю !!!

Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, Shahabbas сказал:

А это что?

Это то, что автор не может внятно объяснить ничего про ИСТОЧНИК этих прерываний. Прежде чем давать формальные советы стоит разобраться в ситуации. А ситуация противоречит здравому смыслу. Внешнего прерывания нет, а из внутренних остается только TMR0. Вы можете объяснить каким образом прерывания от таймера могут вызвать описанную автором ситуацию? Лично я - нет.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...