tester777 Опубликовано 31 мая, 2020 Поделиться Опубликовано 31 мая, 2020 Добрый день. У меня вопрос по PIC16F946. Есть одна схема и две прошивки, с одной внешний кварц на 8 мгц нормально запускается, со второй не хочет. В битах конфигурации всё идентично, стоит бит HS. На внутреннем генераторе обе прошивки работают. Я так понимаю нужно что-то править ещё в самой прошивке? Хотя мне казалось при установке HS кварц по любому должен заводиться. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 31 мая, 2020 Поделиться Опубликовано 31 мая, 2020 Если 2 разные прошивки на одном и том же железе ведут себя по-разному, какой логический вывод можно из этого сделать ? Неужели на железо хотите грешить ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
tester777 Опубликовано 2 июня, 2020 Поделиться Опубликовано 2 июня, 2020 Логический вывод напросился сам: хочешь что-то сделать - делай сам! ....... На другие ответы не особо рассчитывал.)) P.S. Спасибо за неоценимую помощь КЭП! -1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
legik Опубликовано 3 июля, 2020 Поделиться Опубликовано 3 июля, 2020 Микроконтроллер PIC16f84a. Возможен паереход из основной программы в прерывание а при выходе из прерывания в "START" основной программы? Заранее спасибо! 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 4 июля, 2020 Поделиться Опубликовано 4 июля, 2020 возможен, вопрос зачем... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
legik Опубликовано 4 июля, 2020 Поделиться Опубликовано 4 июля, 2020 4 часа назад, IMXO сказал: возможен, вопрос зачем... Для того чтоб исключить проверки в циклах. Как это можно реализовать? Через стэк? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 4 июля, 2020 Поделиться Опубликовано 4 июля, 2020 проверки чего? для перейти на вектор сброса достаточно goto... , другой вопрос, что стек в пик16 не доступен и будет рушится. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 4 июля, 2020 Поделиться Опубликовано 4 июля, 2020 18 часов назад, legik сказал: PIC16f84a. Возможен переход? Странный выбор контроллера для подобных извращений... Попробуйте сформулировать конечную задачу. Есть сильное подозрение, что вы пытаетесь ее решить перректальным методом. 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
legik Опубликовано 4 июля, 2020 Поделиться Опубликовано 4 июля, 2020 (изменено) 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" программы? Изменено 4 июля, 2020 пользователем legik 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
legik Опубликовано 4 июля, 2020 Поделиться Опубликовано 4 июля, 2020 4 часа назад, IMXO сказал: проверки чего? для перейти на вектор сброса достаточно goto... , другой вопрос, что стек в пик16 не доступен и будет рушится. Вы имеете ввиду "goto 0000h"? Сброс стэка тоже произойдет? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
valentinovich Опубликовано 4 июля, 2020 Поделиться Опубликовано 4 июля, 2020 legik - Сброс стэка тоже произойдет? Почему вы решили, что произойдёт сброс? Разве где-то в даташите на данный МК такое упоминалось? Здесь только программный возврат из прерывания приведёт стек в предыдущее его состояние. Ибо задача и логика (сиречь суть) прерывания - ТОЛЬКО срочно ПРЕРВАТЬ выполнения основной программы и выполнив там некие действа, вернуться и продолжить её исполнение. Всё, что не так (в вашем предположении тоже), будет заполнять стек и в итоге приведёт к его переполнению и как следствbе - к сбою выполнения программы. Стек в данном МК программно не доступен. Ищите другие пути логики вашего процесса. И поверьте, они есть. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Yurkin2015 Опубликовано 4 июля, 2020 Поделиться Опубликовано 4 июля, 2020 2 hours ago, legik said: Сброс стэка тоже произойдет? В этом МК не надо беспокоиться о сбросе стека. Стек представляет собой циклический буфер на 8 ячеек, и указатель стека ходит по кругу. При записи в стек более восьми раз: указатель сбросится и запись начнётся с начала стека. Поэтому можно начинать программу или делать рестарт, имея указатель стека на любом месте. Главное, в программе не делать более 8 вложенных вызовов функций или прерываний. Думаю, что просто напишите в прерывании последней строчкой "goto START", а о стеке не беспокойтесь. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 4 июля, 2020 Поделиться Опубликовано 4 июля, 2020 30 минут назад, Yurkin2015 сказал: Главное, в программе не делать более 8 вложенных вызовов функций или прерываний. Думаю, что просто напишите в прерывании последней строчкой "goto START", а о стеке не беспокойтесь. это если уходить из прерывания по return , retlw or retfie . выход по goto будет изменять расположение вершины стека. поэтому здесь даже одного вызова функции ужо не получецо и придется забыть о командах call, return , retlw or retfie и использовать программный стек и прямую запись в PCL хотя мы до сих пор не знаем, что собственно надо ТС и какие требования выдвигаются к стабильности сигнала на выходе RA4 , даже обычный вызов прерывания (с возвратом по retfie) из выше озвученных циклов будет рвать сигнал в ..овно. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
valentinovich Опубликовано 4 июля, 2020 Поделиться Опубликовано 4 июля, 2020 Yurkin2015 - В этом МК не надо беспокоиться о сбросе стека. Стек представляет собой ... Беспокоится надо прежде всего о правильной, грамотной, читабельной и понятной логике программирования. И также к умению правильно увязывать требования процесса с не только (а вдруг в этом МК прокатит "нЕчто") с недокументированными возможностями МК, но и с возможным использованием программы на другом МК того же семейства (к примеру 628 и пр. подобных), Да и зацикливаться на представленном варианте программы тоже нет смысла, ибо задача достаточно тривиальна и вполне себе решается правильным построением логики. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 5 июля, 2020 Поделиться Опубликовано 5 июля, 2020 11 часов назад, legik сказал: Конечная задача - генерация импульсов определенной длительности с выхода RA4. в прерывании я изменяю длительность импульсов и перехожу на "START" программы.... Вместо ответа по существу Вы зачем то привели кусок кода, который к вопросу не имеет никакого отношения. 1. Первая часть вопроса - почему взят этот контроллер для такой задачи? Это я к тому, что есть ПИН2ПИН совместимый PIC16F628A с модулем CCP и тремя таймерами. 2. Вторая часть вопроса - в чем причина столь экзотического решения? Что мешает в прерывании изменять параметр и выставлять флаг требования изменить программный счетчик в основном цикле по завершению очередного цикла генерации? 3. Под конечной задачей я понимаю ВСЮ задачу ПО СУЩЕСТВУ, а не какие то обрывки фраз из которых нужно догадываться о Ваших реальных намерениях. Конкретно. Что такое входной сигнал? Я так понимаю, что это сигнал на входе внешнего прерывания? Параметры сигнала какие? Частота, скважность? Что такое выходной сигнал по отношению к входному ? Частота, скважность? Я канешна смутно догадываюсь, что речь идет о пересчете одной частоты в другую для какой нибудь очередной приборки, но все же можно не заставлять гадать на кофейной гуще... 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
Shahabbas Опубликовано 5 июля, 2020 Поделиться Опубликовано 5 июля, 2020 03.07.2020 в 23:05, legik сказал: Возможен паереход из основной программы в прерывание а при выходе из прерывания в "START" основной программы? Именно нужно в "START" возвращаться? Если задействовать пин контроллера "RESET" - так не подойдёт? С полным сбросом контроллера очень просто получается, причём с любым контроллером. 0 Технические вопросы решаю в теме , в личке не обсуждаю !!! Ссылка на комментарий Поделиться на другие сайты Поделиться
legik Опубликовано 5 июля, 2020 Поделиться Опубликовано 5 июля, 2020 да, про "RESET" я уже задумывался но хочеться более корректно решить задачу 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
legik Опубликовано 5 июля, 2020 Поделиться Опубликовано 5 июля, 2020 10 часов назад, my504 сказал: Вместо ответа по существу Вы зачем то привели кусок кода, который к вопросу не имеет никакого отношения. 1. Первая часть вопроса - почему взят этот контроллер для такой задачи? Использую то что есть. 10 часов назад, my504 сказал: 2. Вторая часть вопроса - в чем причина столь экзотического решения? Что мешает в прерывании изменять параметр и выставлять флаг требования изменить программный счетчик в основном цикле по завершению очередного цикла генерации? В прерывании я изменяю длительность импульсов высокого и длительность низкого уровня сигнала. 11 часов назад, my504 сказал: Конкретно. Что такое входной сигнал? нет входного сигнала, просто генератор импульсов. 11 часов назад, my504 сказал: Я канешна смутно догадываюсь, что речь идет о пересчете одной частоты в другую для какой нибудь очередной приборки, но все же можно не заставлять гадать на кофейной гуще... нет никакого пересчета, чисто генерация импульсов. Основновной код я выложил. Он состоит из цикла который генерирует длительность низкого уровня и цикла который генерирует высокий уровень и всё. В дальнейшем добавлю еще 2 таких цикла но без самых старших регистров("st_b_hi" или "st_b_lo" если они будут равны "0"). 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 5 июля, 2020 Поделиться Опубликовано 5 июля, 2020 1 минуту назад, legik сказал: В прерывании я изменяю В прерывании ОТ ЧЕГО? О каких частотах ШИМ идет речь? О каких скважностях идет речь? 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
legik Опубликовано 5 июля, 2020 Поделиться Опубликовано 5 июля, 2020 18 часов назад, IMXO сказал: выход по goto будет изменять расположение вершины стека. поэтому здесь даже одного вызова функции ужо не получецо и придется забыть о командах call, return , retlw or retfie .... Впринципе устраивает вариант. Буду пробывать, всем спасибо. Только что, my504 сказал: В прерывании ОТ ЧЕГО? О каких частотах ШИМ идет речь? О каких скважностях идет речь? нет никаких частот и ШИМ, меняю 3 регистра длительности высокого уровня и 3 регистра длительности низкого уровня и после прерывания прехожу в цикл. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 5 июля, 2020 Поделиться Опубликовано 5 июля, 2020 1 минуту назад, legik сказал: и после прерывания прехожу в цикл. Я просто в недоумении... В этом МК есть только ДВА источника прерываний касающихся событий времени - внешнее прерывание и прерывание по TMR0. Если не внешнее, и при условии, что вы считаете программным счетчиком, то как тут использован TMR0? 6 минут назад, legik сказал: меняю 3 регистра длительности высокого уровня и 3 регистра длительности низкого уровня. Вообще то это и есть ШИМ. Программный, но ШИМ. 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
Shahabbas Опубликовано 5 июля, 2020 Поделиться Опубликовано 5 июля, 2020 1 час назад, legik сказал: да, про "RESET" я уже задумывался но хочеться более корректно решить задачу Да что там делать-то? В конце цикла прерывания переводишь один разряд какого-либо порта в "0". Этот разряд соединяешь с RESET. С резистором подтягиваешь это соединение к "+" питания. И всего-то делов. В конце цикла прерывания просто рестартируется контроллер. 0 Технические вопросы решаю в теме , в личке не обсуждаю !!! Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 5 июля, 2020 Поделиться Опубликовано 5 июля, 2020 1 минуту назад, Shahabbas сказал: В конце цикла прерывания Мне начало казаться, что нет никакого прерывания... Есть такое мнение, что формальные советы могут завести в тупик. Автор вопроса говорит на каком то своем языке... 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
Shahabbas Опубликовано 5 июля, 2020 Поделиться Опубликовано 5 июля, 2020 (изменено) 13 минут назад, my504 сказал: Мне начало казаться, что нет никакого прерывания... А это что?: 03.07.2020 в 23:05, legik сказал: Возможен паереход из основной программы в прерывание а при выходе из прерывания в "START" основной программы? Изменено 5 июля, 2020 пользователем Shahabbas 0 Технические вопросы решаю в теме , в личке не обсуждаю !!! Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 5 июля, 2020 Поделиться Опубликовано 5 июля, 2020 4 минуты назад, Shahabbas сказал: А это что? Это то, что автор не может внятно объяснить ничего про ИСТОЧНИК этих прерываний. Прежде чем давать формальные советы стоит разобраться в ситуации. А ситуация противоречит здравому смыслу. Внешнего прерывания нет, а из внутренних остается только TMR0. Вы можете объяснить каким образом прерывания от таймера могут вызвать описанную автором ситуацию? Лично я - нет. 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.