Выкладывайте полный текст программы (вместе с CONFIG-ами и "шапкой программы"). Убедительная просьба: Оформите текст как "Code" и спрячьте его под спойлер.
програмка через ацп анализирует напряжение и отображает через portc только наименьшее значение, пробую плавно менять напряжение все работает но как только дохожу до очень малых значений измерений все сбрасывается или резко отключаю напряжение от RB4 другими словами высокое напряжение или малое код программы работает тотже, измеряю 1,5вольта и меньше . "Оформите текст как "Code" и спрячьте его под спойлер."- как это?
Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России.
На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.
Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO
подробнее>>
varella56
Заголовок сообщения: Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)
;****************************************************************************** ; * ; This file is a basic code template for code generation on the * ; PIC18F14K50. This file contains the basic code building blocks to build * ; upon. * ; * ; Refer to the MPASM User's Guide for additional information on features * ; of the assembler. * ; * ; Refer to the respective data sheet for additional information on the * ; instruction set. * ; * ;****************************************************************************** ; * ; Filename: xxx.asm * ; Date: * ; File Version: * ; Author: * ; Company: * ; * ;****************************************************************************** ; * ; Files Required: P18F14K50.INC * ; * ;****************************************************************************** ; * ; Notes: * ; * ;****************************************************************************** ; * ; Revision History: * ; * ;******************************************************************************
;---------- ; PROCESSOR DECLARATION ;----------
LIST P=PIC18F14K50 ; list directive to define processor #INCLUDE <P18F14K50.INC> ; processor specific variable definitions
;---------- ; ; CONFIGURATION WORD SETUP ; ; The 'CONFIG' directive is used to embed the configuration word within the ; .asm file. The lables following the directive are located in the respective ; .inc file. See the data sheet for additional information on configuration ; word settings. ; ;----------
; PIC18F14K50 Configuration Bit Settings
; ASM source line config statements
; CONFIG1L CONFIG CPUDIV = NOCLKDIV ; CPU System Clock Selection bits (No CPU System Clock divide) CONFIG USBDIV = OFF ; USB Clock Selection bit (USB clock comes directly from the OSC1/OSC2 oscillator block; no divide)
; CONFIG1H CONFIG FOSC = HS ; Oscillator Selection bits (HS oscillator) CONFIG PLLEN = ON ; 4 X PLL Enable bit (Oscillator multiplied by 4) CONFIG PCLKEN = OFF ; Primary Clock Enable bit (Primary clock is under software control) CONFIG FCMEN = OFF ; Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor disabled) CONFIG IESO = OFF ; Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)
; CONFIG2L CONFIG PWRTEN = ON ; Power-up Timer Enable bit (PWRT disabled) CONFIG BOREN = OFF ; Brown-out Reset Enable bits (Brown-out Reset enabled in hardware only (SBOREN is disabled)) CONFIG BORV = 19 ; Brown-out Reset Voltage bits (VBOR set to 1.9 V nominal)
; CONFIG2H CONFIG WDTEN = OFF ; Watchdog Timer Enable bit (WDT is controlled by SWDTEN bit of the WDTCON register) CONFIG WDTPS = 32768 ; Watchdog Timer Postscale Select bits (1:32768)
; CONFIG3H CONFIG HFOFST = OFF ; HFINTOSC Fast Start-up bit (HFINTOSC starts clocking the CPU without waiting for the oscillator to stablize.) CONFIG MCLRE = OFF ; MCLR Pin Enable bit (RA3 input pin enabled; MCLR disabled)
; CONFIG4L CONFIG STVREN = OFF ; Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset) CONFIG LVP = OFF ; Single-Supply ICSP Enable bit (Single-Supply ICSP enabled) CONFIG BBSIZ = OFF ; Boot Block Size Select bit (1kW boot block size) CONFIG XINST = OFF ; Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode))
; CONFIG5L CONFIG CP0 = OFF ; Code Protection bit (Block 0 not code-protected) CONFIG CP1 = OFF ; Code Protection bit (Block 1 not code-protected)
; CONFIG5H CONFIG CPB = OFF ; Boot Block Code Protection bit (Boot block not code-protected) CONFIG CPD = OFF ; Data EEPROM Code Protection bit (Data EEPROM not code-protected)
; CONFIG6L CONFIG WRT0 = OFF ; Table Write Protection bit (Block 0 not write-protected) CONFIG WRT1 = OFF ; Table Write Protection bit (Block 1 not write-protected)
; CONFIG6H CONFIG WRTC = OFF ; Configuration Register Write Protection bit (Configuration registers not write-protected) CONFIG WRTB = OFF ; Boot Block Write Protection bit (Boot block not write-protected) CONFIG WRTD = OFF ; Data EEPROM Write Protection bit (Data EEPROM not write-protected)
; CONFIG7L CONFIG EBTR0 = OFF ; Table Read Protection bit (Block 0 not protected from table reads executed in other blocks) CONFIG EBTR1 = OFF ; Table Read Protection bit (Block 1 not protected from table reads executed in other blocks)
; CONFIG7H CONFIG EBTRB = OFF ; Boot Block Table Read Protection bit (Boot block not protected from table reads executed in other blocks)
Первое, что "бросилось в глаза": Когда вы делаете перезапись стартовых значений для сравнения по кнопке, подключенной к PORTB,6 - вместо записи в ADCON0 (выключение ADC), идёт обращение к регистру по адресу 00C2h (в вашем случае, проблема не в этом). Подозреваю что проблема у вас в другом: Вы сделали "подтяжку" кнопок к "+" внутренним Pull-up. Ток "подтяжки" там достаточно маленький (типовой 250µA) и, скорее всего, на длинных проводах вы "ловите помеху", которой достаточно для того, что бы "посчитать" что кнопка нажата (подавления "дребезга" у вас нет). Сделайте подтяжку RB6 и RB7 к "+" резисторами номиналом 1К. Так же, возможно, у вас проблемы с питанием (к примеру, не поставили конденсаторы по питанию или до них "километр провода")... Что касается самой программы - имея "на борту" таймеры, "лепить" программные задержки не вижу смысла.
я думаю не в нажатии кнопок проблема потому что организованно два цикла, один цикл проверяет нажата ли кнопка RB7 и если нажата то переходит в основной где происходят замеры и проверяется не нажата ли кнопка RB6. после нажатий на RB7 и RB6 выполняется задержка размером в секунду для исключения влияния дребезга. но если бы во время основного цикла RB6 ловила помеху то программа должна перейти в цикл обработки нажатия RB7,а не на метку START. я для точной уверенности и прописал после старта программы до выполнения этих двух циклов включение двух младших LCD они горят до нажатия RB7. так вот когда сбой происходит загораются две лампочки. питание пробовал от разных компьютерных блоков питания, от батареек. менял кондеры. все признаки происходящего сброса по питанию но происходит только во время замеров и отображения через портС. во всех других случаях проблем с питанием не наблюдается
Вы точно уверены что программатор реально прописывает Config-и? Проверьте: Если есть реакция на уровень на выводе MCLR (в вашей программе он отключен) - Config-и не прописываются.
Это уже читать pdf нужно и смотреть что, к чему и как подключено. Лично я, всегда делаю полный INIT контроллера при старте и даже думать не хочу что будет, если я не "пройдусь по всем регистрам" периферии. Чётких условий в программе для Reset-а у вас нет (за исключением неполного Init-а).
Огромное вам спасибо Albert_V! без вас не разобрался бы. искал причину где угодно только не здесь. И еще один вопрос с чем сравнивает АЦП уровень напряжения? в MPLABе с опорным 3.3 вольтами, в PROTEUSе с 5 вольтами, в реальности чип 4.5 вольта не измеряет уходит в сброс. а 3 вольта измеряет но по формуле рассчитываю получается что чип сравнивает с 5 вольтами. почему тогда 4.5 вольта отказывается измерять?
Конкретно в вашей программе, на данный момент, опорным является напряжение питания (Vdd). У вас есть возможность выбрать 3 варианта (регистр ADCON1).
Добавлено after 7 minutes 22 seconds: Про опорное, попробую объяснить "на двух пальцах": Если входное напряжение равно "0" - в идеале, с ADC вы получите 000h. Если входное равно (или превышает) опорное - максимальное значение (для 10-ти битного - 1023d).
напряжение питания у меня 5 вольт, 3 вольта измеряю и полученное бинарное значение перевожу по формуле 5/1023*бинарное значение=3 вольта. Так если чип сравнивает с 5 вольтами почему отказывается замерять 4.5 вольта? при измерении 4.5 вольта в сброс уходит, и программа начинается с начала
Он не может "отказаться измерять" (по крайней мере, за мою практику я ни разу с этим не сталкивался). Вы берёте только старший байт (не проверял) 10-битного числа, поэтому делить надо на 256. Так же, не забывайте, что выходное сопротивление источника напряжения (которого измеряете) должно быть как можно меньше. Грубо говоря, если последовательно со входом ADC вы поставили 100К - про измерения можно забыть. Надеюсь, входное на ADC не превышает напряжение питания? ----- P.S. Если вы говорите про симулирование - тут я не советчик. Протезом и пр. принципиально не пользуюсь.
так как только 8 бит я к бинарному результату прибавляю 2 нуля с права. 9 вольтовую батарейку делил 3 резисторами по 460 КОм каждый, прекрасно измеряет 3 вольта, а вот 4.5 не хочет, в сброс уходит, я тоже считаю что должен все лампочки зажечь.
по фото трудно будет что разобрать ) куча всего не подключенного не убрано с платы. не понятно следующее - судя по включенным лампочкам при измерении 3 вольт загораются почти все, отсюда следует что чип сравнивает с 3.3 вольта. а применяя формулу получается что с 5 вольтами.??????
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения