Imotor Опубликовано 17 августа, 2015 Поделиться Опубликовано 17 августа, 2015 (изменено) где настройка ANSEL и TRIS ? где задержка перед запуском преобразования на 12мкс? В регистрах ANSEL и TRIS все правильно, так как без ухода в сон АЦП работает и выдает значение напряжения в свои выходные регистры. Задержку перед запуском не делал, но делал после записи в ANSEL, для заряда конденсатора АЦП. Может в этом ошибка. Сейчас переписать программу не могу, но потом переделаю и отпишусь Изменено 17 августа, 2015 пользователем Imotor 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 17 августа, 2015 Поделиться Опубликовано 17 августа, 2015 (изменено) Подскажите пожалуйста как настроить измерение ацп в спящем режиме (sleep) PIC16F676. Микроконтроллер после команды sleep уходит в спящий режим и не выходит из него. Хотя сделал все по спецификации. ................... После nop должен уйти в вектор прерывания. Но микроконтроллер из сна не выходит Это с какого перепуга он должен уйти в прерывание? Есть ДВА варианта wake-up из слипа. Если мы устанавливаем только разрешение прерывания самого источника (в данном случае АЦП) в PIE1, то выход из слипа будет выглядеть как исполнение одного NOPа и ПРОДОЛЖЕНИЕ исполнения кода ПОСЛЕ команды sleep. А если установлено ГЛОБАЛЬНОЕ разрешение GIE и периферийное PEIE (для части прерываний, к которым относится АЦП и TMR1), то тогда после выхода из слипа произойдет переход на вектор 4, то есть в область обработчиков прерываний. Настройки входов ТРИЗ и АНСЕЛ никакого отношения к выходу из слип не имеют. Контроллеру глубоко по барабану как будут настроены входы, как и наличие и отсутствие эквизишн тайма (окна заряда УВХ), важно лишь то, кто и как взведет флаг прерываний. Изменено 17 августа, 2015 пользователем my504 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Imotor Опубликовано 18 августа, 2015 Поделиться Опубликовано 18 августа, 2015 Это с какого перепуга он должен уйти в прерывание? Потому что разрешено прерывание АЦП и глобальные прерывания. Если мы устанавливаем только разрешение прерывания самого источника (в данном случае АЦП) в PIE1, то выход из слипа будет выглядеть как исполнение одного NOPа и ПРОДОЛЖЕНИЕ исполнения кода ПОСЛЕ команды sleep. А если установлено ГЛОБАЛЬНОЕ разрешение GIE и периферийное PEIE (для части прерываний, к которым относится АЦП и TMR1), то тогда после выхода из слипа произойдет переход на вектор 4, то есть в область обработчиков прерываний. С этим понятно. Но микроконтроллер не входит в прерывание АЦП даже когда команда sleep в тексте программы отсутствует. Может это из-за того, что разрешено прерывание по таймеру, а оно имеет приоритет над остальными прерываниями? Сейчас переписал программу без прерывания АЦП, потом все равно перепишу, потому что интересно найти причину. Компьютер к сожалению сейчас не при мне. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Imotor Опубликовано 19 августа, 2015 Поделиться Опубликовано 19 августа, 2015 Вот фрагмент программы. Вроде бы все по даташиту ;interrupt vector org 04h goto int_sel table addwf PCL,f ;PCL=PCL+W retlw b'00000000' ;0 retlw b'00000100' ;1 retlw b'00001000' ;2 retlw b'00001100' ;3 retlw b'00010000' ;4 retlw b'00010100' ;5 retlw b'00011000' ;6 retlw b'00011100' ;7 retlw b'00100000' ;8 retlw b'00100100' ;9 int_sel movwf t_work ;save context swapf status,w movwf t_status ;----------------------------------------------------------------------------- btfsc PIR1,0 call tmr1_int ;----------------------------------------------------------------------------- btfsc PIR1,6 call ADC_int bcf PIR1,6 ;reset interrupt flag ADC ;----------------------------------------------------------------------------- swapf t_status,w ;extract context movwf status swapf t_work,f swapf t_work,w retfie //программа инициализации (выполняется один раз при сбросе) init movlw b'00010000' bsf status,5 ;bank1 movwf TrisA ;setup portA/C to output bcf status,5 ;return bank0 movlw b'00000011' bsf status,5 ;bank1 movwf TrisC ;setup portA/C to output bcf status,5 ;return bank0 ;---------------------------------------------------------------------------- movlw b'11000000' movwf INTCON movlw b'01000001' bsf status,5 ;bank1 movwf PIE1 ;PERIPHERAL INTERRUPT ENABLE REGISTER 1 bcf status,5 ;return bank0 clrf button_flag clrf push_button clrf tempL clrf tempH movlw b'00100001' movwf T1CON ;INTERRUPT CONTROL REGISTER TMR1 ;setting ADC movlw b'00110000' bsf status,5 ;bank1 movwf ADCON1 ;внутренний осцилятор АЦП bcf status,5 ;return bank0 goto main //Подпрограмма запуска АЦП (вызывается из главного цикла) meteringADC bcf INTCON,7 ; Disables all interrupts bcf PIR1,6 ;reset interrupt flag ADC bcf PIR1,0 movlw b'00100000' bsf status,5 ;bank1 movwf ANSEL ;select in bcf PIE1,0 ;disables TMR1 overflow interrupt bsf PIE1,6 bcf status,5 ;return bank0 call delayADC movlw b'10010101' movwf ADCON0 call delayADC bsf ADCON0,1 ;start ADC sleep nop nop ;---------------------------------------------------------------------------- ;write result movf ADRESH,w movwf tempH bsf status,5 ;bank1 movf ADRESL,w bcf status,5 ;return bank0 movwf tempL rrf tempH,f rrf tempL,f ;---------------------------------------------------------------------------- bsf status,5 ;bank1 bsf PIE1,0 ;enables TMR1 overflow interrupt bcf status,5 ;return bank0 Не хочет уходить в прерывание. причем даже если не использовать команду sleep. Я так понимаю, не взводится флаг прерывания АЦП. В чем причина ума не приложу 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 19 августа, 2015 Поделиться Опубликовано 19 августа, 2015 :crazy: //Подпрограмма запуска АЦП (вызывается из главного цикла)meteringADC bcf INTCON,7 ; Disables all interrupts И С ЧЕГО ЕМУ УХОДИТЬ В ПРЕРЫВАНИЕ???? bcf PIR1,6 ;reset interrupt flag ADC bcf PIR1,0 movlw b'00100000' bsf status,5 ;bank1 movwf ANSEL ;select in bcf PIE1,0 ;disables TMR1 overflow interrupt bsf PIE1,6 bcf status,5 ;return bank0 call delayADC movlw b'10010101' movwf ADCON0 call delayADC bsf ADCON0,1 ;start ADC sleep nop nop 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Imotor Опубликовано 19 августа, 2015 Поделиться Опубликовано 19 августа, 2015 Спасибо исправил. Это уже не первая версия подпрограммы ввода микроконтроллера в сон. Было много исправлений, запутался уже. Протеус неправильно моделирует, в железе все работает, в сон уходит и выходит. Видимо впервый раз где-то допустил ошибку и в железе не заработало. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Imotor Опубликовано 30 августа, 2015 Поделиться Опубликовано 30 августа, 2015 Еще появилась проблема. Pic стартует через раз. Когда питал от блока питания проблем не было. Когда включил через стабилизатор в устройство, стартовать стал через раз. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
chip-chip Опубликовано 30 августа, 2015 Поделиться Опубликовано 30 августа, 2015 Блокирующие конденсаторы возле ног питания контроллера стоят? 0 Все можно наладить, если вертеть в руках достаточно долго! Если ничто другое не помогает, прочтите, наконец, инструкцию! Ссылка на комментарий Поделиться на другие сайты Поделиться
Imotor Опубликовано 30 августа, 2015 Поделиться Опубликовано 30 августа, 2015 Блокирующие конденсаторы возле ног питания контроллера стоят? После стабилизатора ен5а стоит 470мкф. Возле ног питания стоит один 0,1 мкф Может быть не запускается генератор из-за каких-то наводок. Если питать от блока питания, то все работает. Хотя в блоке питания на выходе такой же стабилизатор, только блок питания регулируемый 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
chip-chip Опубликовано 30 августа, 2015 Поделиться Опубликовано 30 августа, 2015 Вроде нормально. Хотя емкость 470 можно и уменьшить до 47-100мкф. А до стабилизатора что стоит? Ресет через что подтянут к +? На чем монтаж? Вид на монтаж? Уже было подобное - длинные линии связи где не надо, ошибки в разводке ПП. 0 Все можно наладить, если вертеть в руках достаточно долго! Если ничто другое не помогает, прочтите, наконец, инструкцию! Ссылка на комментарий Поделиться на другие сайты Поделиться
Imotor Опубликовано 30 августа, 2015 Поделиться Опубликовано 30 августа, 2015 (изменено) Вроде нормально. Хотя емкость 470 можно и уменьшить до 47-100мкф. А до стабилизатора что стоит? Ресет через что подтянут к +? На чем монтаж? Вид на монтаж? Уже было подобное - длинные линии связи где не надо, ошибки в разводке ПП. До стабилизатора 1000мкф. Ресет подтянул к плюсу через резистор 1 кОм, хотя в конфигурации пробовал и как обычный вход и как MCLR - никакой разницы. Есть перемычки от платы до платы с индикатором, около 5 см PWRT помогает, но не сильно. Все равно запускается через раз-два Изменено 30 августа, 2015 пользователем Imotor 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
chip-chip Опубликовано 30 августа, 2015 Поделиться Опубликовано 30 августа, 2015 (изменено) А ничего, что 4 вывод МК в воздухе? Вообще то это MCLR. И не надо цитировать мои сообщения. Модераторы накажут, и будут правы. В самом низу страницы есть окно "ответить". Им и надо пользоваться. Изменено 30 августа, 2015 пользователем chip-chip 0 Все можно наладить, если вертеть в руках достаточно долго! Если ничто другое не помогает, прочтите, наконец, инструкцию! Ссылка на комментарий Поделиться на другие сайты Поделиться
Imotor Опубликовано 30 августа, 2015 Поделиться Опубликовано 30 августа, 2015 Я его со стороны проводников подтянул к "+" питания. Хотя изначально он был настроен как I/O. На бредборде все работало. Была только проблема с режимом сна 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
chip-chip Опубликовано 30 августа, 2015 Поделиться Опубликовано 30 августа, 2015 Плюс прямо с электролита подайте на 1 ногу МК, минуя кучу загогулин. Что выйдет? 0 Все можно наладить, если вертеть в руках достаточно долго! Если ничто другое не помогает, прочтите, наконец, инструкцию! Ссылка на комментарий Поделиться на другие сайты Поделиться
Imotor Опубликовано 30 августа, 2015 Поделиться Опубликовано 30 августа, 2015 Попробую завтра 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexeyslav Опубликовано 30 августа, 2015 Поделиться Опубликовано 30 августа, 2015 Да... много косяков. Стабилизатор 7805? вообще интегральные стабилизаторы не любят большую емкость на выходе. Смысла электролита ПОСЛЕ стабилизатора нет вообще никакого. А вот керамику надо ставить и на входе и на выходе, причем на входе должно быть больше - 0.47мкФ а на выходе 0.1мкФ иначе стабилизатор начинает заводится, длительные переходные процессы и подобная неприятность. Вот он у тебя наверно заводится и контроллер не может стартануть. Убери электролит на выходе - смысла в нем нет никакого(на ВЧ он не работает, а НЧ там равно нулю, а если не равно то это огромные проблемы для всей схемы - источник питания не справляется с нагрузкой до такой степени что стабилизатор перестаёт работать). Вместо него поставь SMD-конденсаторы прямо к выводам на 0.47мкф и 0.1мкф соответственно ко входу и выходу стабилизатора. 0 Учение - изучение правил. Опыт - изучение исключений. Ссылка на комментарий Поделиться на другие сайты Поделиться
chip-chip Опубликовано 31 августа, 2015 Поделиться Опубликовано 31 августа, 2015 Совсем убрать - это уже слишком. Надо уменьшить и все! Смотрим даташит: емкость после стабилизатора раз в 10 меньше емкости до стабилизатора. Я и посоветовал 47-100мкф. А блокирующие ВЧ конденсаторы 0.1мкф можно повесить по питанию каждого корпуса отдельно. От одного 0.47мкф толка мало. 0 Все можно наладить, если вертеть в руках достаточно долго! Если ничто другое не помогает, прочтите, наконец, инструкцию! Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexeyslav Опубликовано 31 августа, 2015 Поделиться Опубликовано 31 августа, 2015 Емкость на выходе стабилизатора будет только мешать его работе. Он достаточно быстродействующий чтобы компенсировать провалы напряжения вызванные повышением тока потребления. До стабилизатора нужен электролит большой емкости а после - нет. А блокировочные на 0.47 и 0.1 непосредственно возле выводов нужны для того чтобы он был устойчивым в области высоких частот. 0 Учение - изучение правил. Опыт - изучение исключений. Ссылка на комментарий Поделиться на другие сайты Поделиться
Imotor Опубликовано 31 августа, 2015 Поделиться Опубликовано 31 августа, 2015 Испробовал все варианты. Не помогло. Поставил после стабилизатора конденсатор на 1800мкф. Пока все работает. Экпериментально выяснил, что микроконтролленру нужно плавное повышение напряжение, которое как раз и обеспечивает конденсатор большой емкости. Это конечно не выход. Может микроконтроллер с браком? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexeyslav Опубликовано 31 августа, 2015 Поделиться Опубликовано 31 августа, 2015 Смотри осциллографом работу стабилизатора. Ему вообще не нужна большая емкость на выходе, может он у тебя просто "звенит" в момент включения. 0 Учение - изучение правил. Опыт - изучение исключений. Ссылка на комментарий Поделиться на другие сайты Поделиться
Imotor Опубликовано 31 августа, 2015 Поделиться Опубликовано 31 августа, 2015 Осцилографа к сожалению у меня нет. А что значит "звенит"? Предполагаю что это переходные процессы и наводки в самом микроконтроллере вследствие резкого скачка по питанию. Попробую другой микроконтроллер. Еще я затирал константу в этом микроконтроллере. Но она у меня была прочитана и записана на бумажку, а потом вписана обратно. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
chip-chip Опубликовано 31 августа, 2015 Поделиться Опубликовано 31 августа, 2015 Самовозбуждается. Можно попробовать заменить на 7805. Ну и входу MCLR повесить конденсатор порядка 1мкф на землю. 0 Все можно наладить, если вертеть в руках достаточно долго! Если ничто другое не помогает, прочтите, наконец, инструкцию! Ссылка на комментарий Поделиться на другие сайты Поделиться
Imotor Опубликовано 31 августа, 2015 Поделиться Опубликовано 31 августа, 2015 Менял на 78l05. Не помогло. Конденсатор ставил. На 1мкф не дало ничего, 470мкф дало небольшую задержку запуска, стал запускаться чаще, но все равно не всегда. Даже кнопку ставил с MCLR на землю, нажимал её и включал питание, после отпускал. Толку никакого. Думаю либо микроконтроллер с браком либо программа кривая. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
chip-chip Опубликовано 31 августа, 2015 Поделиться Опубликовано 31 августа, 2015 Среди АВР попадались с браком. Среди ПИК - не помню такого. Но поменять же не проблема. Смените контроллер. 0 Все можно наладить, если вертеть в руках достаточно долго! Если ничто другое не помогает, прочтите, наконец, инструкцию! Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 31 августа, 2015 Поделиться Опубликовано 31 августа, 2015 (изменено) а если тогда на MCLR повесить RC-цепочку авторестарта по питанию? Классика же хотя честно говоря ни разу на пиках с такой проблемой не сталкивался. Питание обычно на 7805 по обычной схеме. Один раз правда было дело 16F886 стартовал чуть дольше (гдето 0,3...0,4 сек лишних), но ни разу такого не случалось, чтобы не стартовал совсем. Причем случай был единичный и я списал на косяк камня, так как после замены все прошло. Изменено 31 августа, 2015 пользователем mail_robot 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.