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

Отвязать питание мк от выходного напряжения


Securety

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

Всем добрый день, добрался я наконец до кода прошивки мк, но пока слабо в этом разбираюсь. Суть описание проблемы такая, есть мк 12f629 у него по даташиту на 7-6 ноге встроен компаратор. Раньше у меня было питание 8-12в, а сейчас 3.7в соответственно мк отказывается работать потому-что выход питания с его ног заточен на 5в в коде. Сам мк работает от 2-5.5в но хотелось бы изменить привязку от 2.5в как это сделать где копать?

Прошивка привязана к выходному напряжению, которое жёстко привязано к напряжению питания контроллера, которое, по сути, является опорным. Замер напряжения делается компаратором ноги 6 и 7. Изменяя делитель можно установить любое напряжение срабатывания компаратора.

D2 контроллер pic12f629 / 7-6 ноги компаратор опорное напряжение привязано к напряжению питания контроллера зашитое в прошивку 2.71в на 60в срабатывает. Заряд с ноги 2 на транзистор VT1. Подстроечный резистор на паузу подкачки R6, делитель напряжения R6/R7/R5 в зависимости как подберем сопротивление верхнего и нижнего плеча для нужного заряда конденсатора 60в или 100в. Нога 5 разряд на катушку через ключ длительность импульсов от 1-30мс с шагом 1мс. 4 нога кнопка управления настройками длительности импульсов.

Описание: Как это работает: Красное свечение светодиода - рабочий режим Зеленое свечение светодиода - заряд Быстрое мигание красного-зеленого свечения - села батарея (сброс мк) Если зажать спуск, и включить схему, программа переход в режим программирования длительности, текущее значение длительности обнуляется, и каждое моргание красного светодиода это приращение длительности на шаг 1мс . При достижении конечного значения 30мс происходит кратковременное перемигивание светодиода красным-зеленым и все обнуляется и дальше по кругу. При отпускании спуска текущее значение длительности запоминается и схема переходит в рабочий режим.

Пояснение: Вывод :6 - это CIN-, :7 - CIN+ (входы компаратора).
По конфигурации компаратора в программе, на вход "+" компаратора подаётся напряжение =13/24*Vdd, а вход "-" переключают между выводами :6 и :7.
Как такового, опорного напряжения для компаратора нет, т.ч. именно выполняя программу, нет возможности отслеживать напряжение питания +5В.

при 60в 2,71В (если точнее, 2,708(3)В) - это то, с чем сравнивает компаратор при напряжении питания контроллера 5В.
Измените напряжение его питания - изменится и напряжение сравнения (текущую формулу выложил выше) и, соответственно, напряжение на X4.

По схеме, нижний предел АСС (Х4) жёстко задан соотношением номиналов (R6+R7)/R5, а верхний - подстроечником, в диапазоне от (R6+R7)/R5 до (R5+R6)/R7.

Питание менял в proteus ниже 4.8в отказывается работать. Есть в голове мысль, что я должен амплитуду выходов мк в 5в с ног в прошивке везде поменять на 2.5в. Также есть PWRTE — очередной таймер он включен.
При активации он будет сбрасывать МК до тех пор, пока питание не поднимется до нужного уровня. Думаю проблема в нём где он зашит? хорошо возможно я его откл. но хотелось бы понять где он в коде?

Сам код асм.

Скрытый текст

processor 12F629
#include <P12F629.INC>
__config 0x3F84
; _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF
; & _INTRC_OSC_NOCLKOUT
; __idlocs 0xFF, 0xFF, 0xFF, 0xFF

; EEPROM-Data
Org 0x2100
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ........

; RAM-Variable
LRAM_0x20 equ 0x20
LRAM_0x21 equ 0x21
LRAM_0x22 equ 0x22
LRAM_0x23 equ 0x23
LRAM_0x38 equ 0x38
LRAM_0x39 equ 0x39
LRAM_0x3A equ 0x3A

; Program

Org 0x0000

; Reset-Vector
GOTO LADR_0x0028
LADR_0x0001
CLRF LRAM_0x23
LADR_0x0002
MOVWF LRAM_0x22
LADR_0x0003
MOVLW 0xFF ; b'11111111' d'255'
; Interrupt-Vector
ADDWF LRAM_0x22,F
BTFSS STATUS,C
ADDWF LRAM_0x23,F
BTFSS STATUS,C
GOTO LADR_0x0023
MOVLW 0x03 ; b'00000011' d'003'
MOVWF LRAM_0x21
MOVLW 0xDF ; b'11011111' d'223'
CALL LADR_0x000F
GOTO LADR_0x0003
CLRF LRAM_0x21
LADR_0x000F
ADDLW 0xE8 ; b'11101000' d'232'
MOVWF LRAM_0x20
COMF LRAM_0x21,F
MOVLW 0xFC ; b'11111100' d'252'
BTFSS STATUS,C
GOTO LADR_0x0018
LADR_0x0015
ADDWF LRAM_0x20,F
BTFSC STATUS,C
GOTO LADR_0x0015
LADR_0x0018
ADDWF LRAM_0x20,F
CLRWDT
INCFSZ LRAM_0x21,F
GOTO LADR_0x0015
BTFSC LRAM_0x20,0
GOTO LADR_0x001E
LADR_0x001E
BTFSS LRAM_0x20,1
GOTO LADR_0x0022
NOP
GOTO LADR_0x0022
LADR_0x0022
RETURN
LADR_0x0023
BCF STATUS,IRP
BCF STATUS,RP1 ; !!Bank Register-Bank(2/3)-Select
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CLRWDT
RETURN
LADR_0x0028
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0xDB ; b'11011011' d'219'
MOVWF GPIO ; !!Bank!! GPIO - TRISIO
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x16 ; b'00010110' d'022'
MOVWF CMCON ; !!Bank!! CMCON - VRCON
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0xAD ; b'10101101' d'173'
MOVWF CMCON ; !!Bank!! CMCON - VRCON
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,5 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,5 ; !!Bank!! GPIO - TRISIO
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,2 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,2 ; !!Bank!! GPIO - TRISIO
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CLRF LRAM_0x38
CLRF LRAM_0x39
MOVLW 0x03 ; b'00000011' d'003'
MOVWF LRAM_0x23
MOVLW 0xE8 ; b'11101000' d'232'
CALL LADR_0x0002
CLRWDT
BTFSC GPIO,3 ; !!Bank!! GPIO - TRISIO
GOTO LADR_0x0045
CLRF LRAM_0x3A
GOTO LADR_0x0047
LADR_0x0045
CALL LADR_0x00CA
GOTO LADR_0x0092
LADR_0x0047
CLRWDT
BTFSC GPIO,3 ; !!Bank!! GPIO - TRISIO
GOTO LADR_0x0092
INCF LRAM_0x3A,F
CLRWDT
MOVLW 0x1F ; b'00011111' d'031'
SUBWF LRAM_0x3A,W
BTFSS STATUS,C
GOTO LADR_0x007E
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
MOVLW 0xC8 ; b'11001000' d'200'
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CALL LADR_0x0001
BSF GPIO,4 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
MOVLW 0xC8 ; b'11001000' d'200'
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CALL LADR_0x0001
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
MOVLW 0xC8 ; b'11001000' d'200'
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CALL LADR_0x0001
BSF GPIO,4 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
MOVLW 0xC8 ; b'11001000' d'200'
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CALL LADR_0x0001
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
MOVLW 0xC8 ; b'11001000' d'200'
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CALL LADR_0x0001
BSF GPIO,4 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
MOVLW 0xC8 ; b'11001000' d'200'
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CALL LADR_0x0001
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
BSF GPIO,4 ; !!Bank!! GPIO - TRISIO
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CLRF LRAM_0x3A
GOTO LADR_0x0047
LADR_0x007E
CALL LADR_0x00D2
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BSF GPIO,4 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x01 ; b'00000001' d'001'
MOVWF LRAM_0x23
MOVLW 0xF4 ; b'11110100' d'244'
CALL LADR_0x0002
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BSF GPIO,4 ; !!Bank!! GPIO - TRISIO
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x01 ; b'00000001' d'001'
MOVWF LRAM_0x23
MOVLW 0xF4 ; b'11110100' d'244'
CALL LADR_0x0002
GOTO LADR_0x0047
LADR_0x0092
MOVF LRAM_0x3A,W
MOVWF LRAM_0x38
CLRF LRAM_0x39
LADR_0x0095
BCF CMCON,3 ; !!Bank!! CMCON - VRCON
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
MOVLW 0x14 ; b'00010100' d'020'
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CALL LADR_0x0001
LADR_0x009F
CLRWDT
BTFSC CMCON,6 ; !!Bank!! CMCON - VRCON
GOTO LADR_0x00AC
BSF GPIO,5 ; !!Bank!! GPIO - TRISIO
NOP
NOP
NOP
NOP
NOP
BCF GPIO,5 ; !!Bank!! GPIO - TRISIO
NOP
NOP
GOTO LADR_0x009F
LADR_0x00AC
BSF CMCON,3 ; !!Bank!! CMCON - VRCON
BSF GPIO,4 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,4 ; !!Bank!! GPIO - TRISIO
MOVLW 0x14 ; b'00010100' d'020'
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CALL LADR_0x0001
LADR_0x00B3
CLRWDT
BTFSS CMCON,6 ; !!Bank!! CMCON - VRCON
GOTO LADR_0x0095
CLRWDT
BTFSC GPIO,3 ; !!Bank!! GPIO - TRISIO
GOTO LADR_0x00BA
CALL LADR_0x00BB
LADR_0x00BA
GOTO LADR_0x00B3
LADR_0x00BB
BSF GPIO,2 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,2 ; !!Bank!! GPIO - TRISIO
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVF LRAM_0x39,W
MOVWF LRAM_0x23
MOVF LRAM_0x38,W
CALL LADR_0x0002
BCF GPIO,2 ; !!Bank!! GPIO - TRISIO
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,2 ; !!Bank!! GPIO - TRISIO
MOVLW 0x14 ; b'00010100' d'020'
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CALL LADR_0x0001
RETURN
LADR_0x00CA
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x0A ; b'00001010' d'010'
MOVWF EEADR ; !!Bank!! Unimplemented - EEADR
BSF EECON1,0 ; !!Bank!! Unimplemented - EECON1
MOVF EEDATA,W ; !!Bank!! Unimplemented - EEDATA
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVWF LRAM_0x3A
RETURN
LADR_0x00D2
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x0A ; b'00001010' d'010'
MOVWF EEADR ; !!Bank!! Unimplemented - EEADR
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVF LRAM_0x3A,W
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVWF EEDATA ; !!Bank!! Unimplemented - EEDATA
BSF EECON1,2 ; !!Bank!! Unimplemented - EECON1
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x80 ; b'10000000' d'128'
MOVWF INTCON
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x55 ; b'01010101' d'085' "U"
MOVWF EECON2 ; !!Bank!! Unimplemented - EECON2
MOVLW 0xAA ; b'10101010' d'170'
MOVWF EECON2 ; !!Bank!! Unimplemented - EECON2
BSF EECON1,1 ; !!Bank!! Unimplemented - EECON1
BCF EECON1,2 ; !!Bank!! Unimplemented - EECON1
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
LADR_0x00E5
CLRWDT
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF STATUS,DC
BTFSC EECON1,1 ; !!Bank!! Unimplemented - EECON1
BSF STATUS,DC
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BTFSC STATUS,DC
GOTO LADR_0x00E5
RETURN
LADR_0x00EE
SLEEP
GOTO LADR_0x00EE

End

 

DipTrace принципиальная схема конструктора.jpg

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

К сожалению родного варианта с описание нет. Но пришел к выводу!

 

Также есть PWRTE — очередной таймер он включен в прошивке.
При активации он будет сбрасывать МК до тех пор, пока питание не поднимется до нужного уровня. Думаю проблема в нём где он зашит? хорошо возможно я его откл. но хотелось бы понять где он в коде и как его менять?

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

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

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

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

хотелось бы понять где он в коде...

То есть, код не ваш... Не проще ли сделать питание, как было? Цена вопроса - DC-DC преобразователь из 3,7 в 5,0 за десяток центов...

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

9 минут назад, Securety сказал:

Также есть PWRTE — очередной таймер он включен в прошивке.

 

9 минут назад, Securety сказал:

Думаю проблема в нём где он зашит? хорошо возможно я его откл. но хотелось бы понять где он в коде и как его менять?

вот здесь

__config 0x3F84
; _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF
; & _INTRC_OSC_NOCLKOUT
; __idlocs 0xFF, 0xFF, 0xFF, 0xFF

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

Нет конечно... У меня он есть с 2.7в - 5.в , просто места мало по-этому вместо него проще стабилизатор на 2.5в поставить. Все коды у многих взяты с интернета ведь весь мир не может быть моим так и здесь). Команды pic я читал примерно по коду я вижу что происходит примерно но разбираюсь,  плохо если править что-то. По-этому спрашиваю тыкните носом где это место.

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

10 минут назад, Alex сказал:

Он не в коде, он в битах конфигурации.

Конфигурацию я на off сделаю. Просто я сомневаюсь что в коде прошивке не заточенно на диапазон 4.8-5.5 в ниже по питанию не работает нечего.

 

 

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

5 минут назад, Securety сказал:

4.8-5.5 в ниже по питанию не работает нечего

Вот чего все сразу за прошивку хватаются? Вы проверили, что полевики, чьи названия старательно затёрты на вашей схеме, открываются при низком напряжении? Скорее всего, у них тупо напряжение открывания 4 - 4,5В. :)

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

26 минут назад, Securety сказал:

плохо если править что-то. По-этому спрашиваю тыкните носом где это место.

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

"Я не знаю какой там коэффициент, я просто паять умею. "

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

По-этому и Lexter переделываю незачем им дергать полевики лог. Драйверы для этого есть) пусть работает себе мк от низкого напряжения.

 

Alex skripach - вроде верно правы откл. Тестирую пока... просто я удивился откуда таймер знает что работать надо с 4.8 в а не ниже хз)

Так и знал что откл его где-то засада будет, если не трогать кнопку не зажимать то нормально все работает заряжает. Только нажимаешь ошибку даёт похоже привязка есть к

–PWRTE

бит разрешения работы таймера включения питания PWRT

0 – будет производиться выдержка при включении питания

1 – выдержки производиться не будет

Бит разрешения работы таймера включения питания –PWRTE. После включения МК требуется некоторое время для стабилизации частоты кварцевого генератора и стабилизации напряжения. С помощью таймера включения осуществляется задержка на время 72мс (типовое время). В примерах таймер включен.

http://mculab.ru/datasheet/pic/pic16_3.pdf  будем читать похожий текст.

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

Все нормально сейчас все работает немного нужно было еще в proteus поиграться. Сейчас никакой разницы нет от 2.6в работает также номинал резисторов отстается неизменный.

Всем спасибо, остался только у меня еще один вопрос! как можно изменять шим в данный момент частота 71'428.57...Hz (14µS) длительность t=6мкс.

У меня просто smd дросселей полно на разный ток и индуктивность, удобно было бы менять подстраиваться, под нужные параметры dc-dc выходной ток и тд..

Кусок кода:

LADR_0x009F
    CLRWDT
    BTFSC CMCON,6        ; !!Bank!! CMCON - VRCON
    GOTO LADR_0x00AC
    BSF GPIO,5           ; !!Bank!! GPIO - TRISIO
    NOP
    NOP
    NOP
    NOP
    NOP
    BCF GPIO,5           ; !!Bank!! GPIO - TRISIO
    NOP
    NOP
    GOTO LADR_0x009F

Выход из шим возможен только по срабатыванию компаратора.

Для просчёта частоты, достаточно прочитать pdf на контроллер (в частности, раздел INSTRUCTION SET SUMMARY) и включить калькулятор (можно "виндусячий") с функцией "1/х" (для пересчёта времени в частоту).

смотрел всякие проги PICTimerCalculator PIC_Delay 1.8  так и недошло как правильно его или увеличить или уменьшить.

69 страница:

https://static.chipdip.ru/lib/057/DOC000057097.pdf

73 страница

http://www.microchip.ru/files/d-sheets-rus/PIC12F629_675.pdf

Сколько не читал какой-то лес дремучий для меня это показалось :huh:

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

8 часов назад, Securety сказал:

остался только у меня еще один вопрос! как можно изменять шим в данный момент частота 71'428.57...Hz (14µS) длительность t=6мкс.

LADR_0x009F
    CLRWDT ;  +1мкс
    BTFSC CMCON,6        ;  +2мкс
   
GOTO LADR_0x00AC ;
    BSF GPIO,5           ;+1мкс , итого 8мкс ; в конце команды GPIO5=1
    NOP           ;  1мкс
    NOP           ; +1мкс
    NOP          ; +1мкс
    NOP          ; +1мкс
    NOP          ; +1мкс
    BCF GPIO,5           ;  +1мкс , итого 6мкс ;
в конце команды GPIO5=0
    NOP ;  +1мкс
    NOP ;  +1мкс
    GOTO LADR_0x009F ;  +2мкс

ЗЫ вы уже больше года ковыряете это г... , за время можно было с нуля выучить программирование, сменить/взять  камень и написать нормальный код

 

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

Да -  это правда люблю я ковырять долго и разбираться.

Просто я схему всю переделал по-этому пока с этим камнем обкатаю всё глюки и тд.

А так конечно посматриваю в сторону avr.

IMXO - за разжовывание спасибо щас понятно.

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

вопрос не в платформе , а в том что конкретно этот камень не подходит для этой задачи. из 8ми лапых подходит pic12f683 с аппаратным ШИМ, АЦП и таймерами для опроса кнопок или более новые типа 12ф1840

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

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

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

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

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

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

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

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

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

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

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

    • ИМХО, только с24, с25, с12 имеет смысл проверить/заменить.
    • Я сам найду, вы мне название напишите пожалуйста.
    • Добрый вечер..)) Нет в моем случае лучше найти готовый для моего Цифровой осциллограф Instrustar ISDS205A 2 канала х 20 МГц..
    • А как же вы квазар спаяли? Или ЛУТом не владеете? Можно даже маркером все прорисовать. А за осцил боятся не стоит, ему на вход будет приходить допустимое напряжение (указано в хар-ках осциллографа).
    • Релюхи не причём. При неисправности релюх симптомы были бы другие. И ИБП даже не клацает когда переходит в  "аварию".   Да. Аккум новый. Более того - 2 новых пробовал. И без АКБ тоже. Не влияет. Да мелкие особо не вздуваются ж. Хотя С21 под подозрением..   Спасибо. Буду иметь ввиду.
    • #include <Wire.h> #include <Oregon_TM.h> #include <BME280I2C.h> //////////////////////////////////////////////////////////////////////////////////////////////////////////// //Скетч для устройства, передающего данные датчика BME280 в формате Oregon Scientific THGN132N //Принципиальная схема прилагается. //Для работы необходима библиотека https://github.com/finitespace/BME280/ //Устройство работает от 3-ех пальчиковых батареек, для экономии электричества заливать скетч нужно через ISP //////////////////////////////////////////////////////////////////////////////////////////////////////////// //Также возможна передача данных в формате - THP (температура, влажность, давление, напряжение батареи) //Пример с приёмником поддерживает расшифоовку THP //////////////////////////////////////////////////////////////////////////////////////////////////////////// # define THGN_SEND 1 // Передавать ли данные в формате THGN132 # define THP_SEND 0 // Передавать ли данные в формате THP # define DEVICE_LOG 1 //Писать ли лог В Serial # define DONE_PIN 15 // вывод сигнала об окончании работы на таймер # define BME_WAIT 10 // Сколько мс ожидать датчик BME # define BATTERY_THR 3.5 // Порог напряжения для выставляения флага разряда батарейки (THGN) ///////////////////////////////////////////////////////////////////////////////////////////////// //Ниблы датчика THP //Во всех полях младшие ниблы идут вперёд!!! // 1-2 - тип (55) // 3 - канал (0-7) // 4-6 - (температура от -100С) * 10. Т.е. +25.1С = 1251 = 4E3h // 7-9 - Влажность *10 Т.е. 25.1% = 251 = 0FBh // 10-12 - (давление от 500ммртст) * 10. Т.е. 765мм = 2650 = A5Ah // 13-15 - данные с АЦП (A0) // 16-17 - CheckSUM // 18-19 - CRC8 (poly 0x07 start 0x00) ///////////////////////////////////////////////////////////////////////////////////////////////// Oregon_TM transmitter(4); BME280I2C bme; bool bme_present = false; float bme_temp(NAN), bme_hum(NAN), bme_pres(NAN); ///////////////////////////////////////////////////////////////////////////////////////////////// void setup() { digitalWrite(DONE_PIN, LOW); pinMode(DONE_PIN, OUTPUT); #ifdef DEVICE_LOG Serial.begin(115200); Serial.println("Waiting for BMEsensor..."); #endif //Обмен данными с BME////////////////////////////////// Wire.begin(); while(!bme.begin()) { if (millis() > BME_WAIT) break; } if (!bme.begin()) { #ifdef DEVICE_LOG Serial.println("No BME sensor found"); #endif bme_present = false; } else { switch(bme.chipModel()) { case BME280::ChipModel_BME280: bme_present = true; bme.read(bme_pres, bme_temp, bme_hum); #ifdef DEVICE_LOG Serial.println("Found BME280 sensor! Success."); Serial.print("Temperature = "); Serial.print(bme_temp, 1); Serial.println("C"); Serial.print("Humidity = "); Serial.print(bme_hum, 1); Serial.println("%"); Serial.print("Pressure = "); Serial.print(bme_pres * 0.75, 1); Serial.println("mmHg"); #endif break; default: #ifdef DEVICE_LOG Serial.println("Found UNKNOWN sensor! Error!"); #endif bme_present = false; } } //Напряжения батареи/////////////////////////////////////////// word battvotage = (word)(((float)(1.1 * 16368) / Vbg()) * 100); #ifdef DEVICE_LOG Serial.print("Battery voltage = "); Serial.println(battvotage,HEX); #endif //Подготовка и отправка данных THGN////////////////////////////////////// transmitter.protocol == 2; if (THGN_SEND) { transmitter.setType(THGN132); transmitter.setChannel(3); transmitter.setBatteryFlag(battvotage < BATTERY_THR); if (bme_present) { if (bme_hum > 98) bme_hum = 98; if (bme_hum < 2) bme_hum = 2; if (bme_temp > 70) bme_temp = 70; if (bme_temp < -50) bme_temp = -50; transmitter.setTemperature(bme_temp); transmitter.setHumidity(bme_hum); transmitter.setComfort(bme_temp, bme_hum); } else { transmitter.setTemperature(-49.9); transmitter.setHumidity(2); transmitter.setComfort(-49.9, 2); } transmitter.SendPacket(); } // Если отправляются оба формата пакетов, межу ними надо выдержать паузу if (THP_SEND && THGN_SEND) delay(100); //Подготовка и отправка данных THP////////////////////////////////////// if (THP_SEND) { transmitter.setType(THP); transmitter.setChannelTHP(1); transmitter.setBatteryTHP( battvotage); if (bme_present) { transmitter.setTemperatureTHP(bme_temp); transmitter.setHumidityTHP(bme_hum); transmitter.setPressureTHP(bme_pres * 0.75); // перевод Pa в mmHg } else { transmitter.setErrorTHP(); } transmitter.SendPacket(); } #ifdef DEVICE_LOG Serial.println(); Serial.print(millis()); Serial.println("ms"); Serial.println(); #endif //Команда на отключение питания digitalWrite(DONE_PIN, HIGH); } ///////////////////////////////////////////////////////////////////////////////////////////////// void loop(){} ///////////////////////////////////////////////////////////////////////////////////////////////// int Vbg() { ADMUX = (1<<REFS0)|(0<<REFS1)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1)|(0<<MUX0); long buffersamp=0; for (int n=0x0; n<=0xff; n++ ) { ADCSRA = 0xc7; while (bit_is_set(ADCSRA,ADSC)); buffersamp += ADC; } buffersamp >>=4; //16368 full scale 14bit ADCSRA &= ~(1 << ADEN); // отключаем АЦП return buffersamp; } Вот код программы. Пробовал по разному и от 5в запитывал и всю систему от 3,3 в. Причем голая ардуинка с таймером работает в нормальном режиме некоторое время, но потом все равно слетает и начинает питать мк постоянно( Причем это происходит всегда через разный промежуток времени.
  • Похожий контент

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