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

Есть знатоки по программированию PIC12F675?


cennmax

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

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

@cennmax Да, возможно. Хотя из коментариев непонятно, что эта программа делает, а местами коментарии написаны человеком, явно не разобравшимся в даташите на PIC12F675 (по крайней мере насчёт калибровочной константы), и особо не вникавшим, что он делает, но этот файл i2c675.asm компилируется.
изображение.png

 

Вот только конкретного вопроса в вашем посте нет, а ссылку на "радиохлам.ру" вы вставили. Это просто такая хитрозамаскированная реклама сайта, что ли?
Ну да ладно, модератор разберётся. :D

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

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

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

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

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

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

  • 11 месяцев спустя...

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

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

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

Здравствуйте.Помогите отредактировать прошивку,нужно понизить минимальное напряжение на выходе,сейчас вроде 70% а нужно 50% от входного.

ДХО 2.jpg

DRL_pic12f675_ADJ.HEX

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

7 минут назад, Havskiy сказал:

Помогите отредактировать прошивку

указывай в каких ячейках и что на что поменять! :D

А мы - посмеемся с постановки вопроса .... 

7 минут назад, Havskiy сказал:

сейчас вроде 70%

а может 71,7%? Или все же 72,3? :) 

7 минут назад, Havskiy сказал:

отредактировать прошивку,нужно

не нужно .... нужно изменить текст программы .... а для этого нужны ИСХОДНИКИ с КОММЕНТАРИЯМИ, а 

 

7 минут назад, Havskiy сказал:

HEX 

можно смело засунуть в ....

и уже там - "редактировать" 

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

Всё что у меня есть это схема и прошивка,схема работает но нужно понизить,афтор написал что понижает до 70%.Я в этом ничего не понимаю что есть исходник и прочее поэтому ищу кто поможет а не поржать.

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

Так если ничего не понимаешь, не нужно указывать, что нужно сделать:
 

22 минуты назад, Havskiy сказал:

Помогите отредактировать прошивку,

Нужно написать, что есть схема. Есть исходная прошивка, но она не устраивает. Как быть?

И тогда будет нормальный ответ, что нужна новая прошивка. Можно попросить её написать вот здесь:
https://forum.cxem.net/index.php?/forum/15-вакансии-и-разовая-работа/

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

  • 3 недели спустя...

Доброго времени суток уважаемые знатоки и старожилы форума, прошу помощи  и подсказки в программировании pic12f675.  Решил начать с самого простого, с мигания светодиодом, и тут же возникли трудности. При проверке в симуляторе mplab x ide v3.45, компилятор mpasm,  в  окне SFRs в регистре GPIO,0 не прописывается единичка. 
Подскажите, что сделал не так?
 

    #include "p12F675.inc"

; CONFIG
; __config 0xF18C
 __CONFIG _FOSC_INTRCIO & _WDTE_ON & _PWRTE_ON & _MCLRE_OFF & _BOREN_OFF & _CP_OFF & _CPD_OFF

Reg_1       EQU         31h
Reg_2       EQU         32h
Reg_3       EQU         33h 
                
              org         0000h             ;начать выполнение программы с адреса 0000h
              goto        Start             ;переход на метку Start
           
;Основная программа                            

Start    movlw       b'00000111'       ;выключение компараторов
            movwf       CMCON
            clrf    ANSEL     ;сброс регистра 
            clrf    GPIO        ;сброс регистра 
    
            bsf         STATUS,RP0        ;выбрать 1-й банк    
            movlw       b'11111110'        ;настройка линий ввода\вывода      
            movwf       TRISIO              ; gp0 на выход, остальные на вход
            bcf         STATUS,RP0        ;выбрать 0-й банк

m1      nop 
          bsf        GPIO,0        ;  установка сигнала на ножке GP0 
          call        Pause       ; переход в подпрограмму пуза (с возвратом)
          bcf        GPIO,0       ; уст 0      "очистка" регистра
          call        Pause       ; переход в подпрограмму пуза (с возвратом)
          goto        m1          ; переход на метку (зацикливание)


    ;delay = 500000 machine cycles
Pause       movlw       .85
            movwf       Reg_1
            movlw       .138
            movwf       Reg_2
            movlw       .3
            movwf       Reg_3
wr        decfsz      Reg_1, F
            goto        wr
            decfsz      Reg_2, F
            goto        wr
            decfsz      Reg_3, F
            goto        wr
           
            return    

    END

 

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

В 26.02.2023 в 16:34, Allbubu сказал:

Подскажите, что сделал не так?
 

    #include "p12F675.inc"

 

Reg_1       EQU         31h
Reg_2       EQU         32h
Reg_3       EQU         33h 

                
 

"Не так" я выделил красным.

Вы не определили переменные. Определение через EQU определением не является.

С помощью EQU определяют константы (литералы).

Если MPLAB 8 и более ранние еще допускали такое безобразие, то MPLABX уже нет.

Переменные нужно определять через директиву udata.

group1	udata_shr

var1    	res .1
var2    	res .2
var3    	res .1
var4    	res .4

group1	udata 0x20

var5    	res .4
var6    	res .1
var7    	res .2
var8    	res .2

PS. group2  udata 0x20  естественно...

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

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

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

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

С помощью EQU определяют константы (литералы).

Если MPLAB 8 и более ранние еще допускали такое безобразие, то MPLABX уже нет.

Это шутка? Вы ничего не путаете?
листинг примера кода из папок MPLABX, секция VARIABLE DEFINITIONS:

Спойлер
;**********************************************************************
;   This file is a basic code template for assembly code generation   *
;   on the PIC12F675. 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 (Document DS33014).                     *
;                                                                     *
;   Refer to the respective PIC data sheet for additional             *
;   information on the instruction set.                               *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Filename:	    xxx.asm                                           *
;    Date:                                                            *
;    File Version:                                                    *
;                                                                     *
;    Author:                                                          *
;    Company:                                                         *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files Required: P12F675.INC                                      *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes:                                                           *
;                                                                     *
;**********************************************************************

	list      p=12f675           ; list directive to define processor
	#include <p12f675.inc>        ; processor specific variable definitions

	errorlevel  -302              ; suppress message 302 from list file

	__CONFIG   _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT 

; '__CONFIG' directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See data sheet for additional information on configuration word settings.




;***** VARIABLE DEFINITIONS
w_temp        EQU     0x20        ; variable used for context saving 
status_temp   EQU     0x21        ; variable used for context saving






;**********************************************************************
		ORG     0x000             ; processor reset vector
		goto    main              ; go to beginning of program
	

		ORG     0x004             ; interrupt vector location
		movwf   w_temp            ; save off current W register contents
		movf	STATUS,w          ; move status register into W register
		movwf	status_temp       ; save off contents of STATUS register


; isr code can go here or be located as a call subroutine elsewhere


		movf    status_temp,w     ; retrieve copy of STATUS register
		movwf	STATUS            ; restore pre-isr STATUS register contents
		swapf   w_temp,f
		swapf   w_temp,w          ; restore pre-isr W register contents
		retfie                    ; return from interrupt


; these first 4 instructions are not required if the internal oscillator is not used
main
		call    0x3FF             ; retrieve factory calibration value
		bsf     STATUS,RP0        ; set file register bank to 1 
		movwf   OSCCAL            ; update register with factory cal value 
		bcf     STATUS,RP0        ; set file register bank to 0


; remaining code goes here



; initialize eeprom locations

		ORG	0x2100
		DE	0x00, 0x01, 0x02, 0x03


		END                       ; directive 'end of program' 

 

?????

 

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

Этим примерам сто лет в обед.

И я ничего не путаю. Я это знаю. Патамушта имею кучу проектов на Микрочипе, включая проекты на PIC18.

Проект с переменными через equ соберется и будет сгенерирован нормальный hex. Но сами переменные в отладчике, включая симулятор, в окнах отладчика отображаться не будут и на курсор выпадающим значением не прореагируют...

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

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

так  ТС не про переменные, у него  значения порта не изменяется, а он описан в инклюде именно через  EQU или нет?

и версия мплаба  у ТС для работы с асм-файлами, а не через Сишные костыли, там да нужно через res описывать.

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

Версия МПЛАБа у него как раз для перемещаемого формата. Абсолютный формат МПЛАБХ не поддерживается. Но поддерживается MPASM и поэтому проект собирается.

Си тут вообще непричем. Никаких Сишных костылей там нет, если только не считать метакоманду #define, да и то при использовании расширения .ASM заглавными буквами.

Видимость SFR  средой поддерживается самой средой и линкером, а в инклюде только определены значения. Поэтому там EQU.

Ну и стоит перейти на крайнюю версию среды с поддержкой MPASM - MPLABX 5.35

Если SFR не отображаются, то проект собран не корректно.

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

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

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

Большое спасибо знатокам за отклик, но похоже проблема была в том, что регистр АNSEL находится во второй банке, а к нему не было корректного обращения. На просторах инета я нашел решение  подобной  задачи с использованием команды banksel. Видимо она автоматически обращается к банку где находится искомый регистр. Самое удивительное, что место  указания в тексте кода тоже имеет значение. В приведенном коде GP0 загорается именно после метки, я не знаю почему именно, но в таком положении код работает корректно. В остальных вариантах запись единички в регистр GP0 может вообще не производится или прописываться после  активации TRISIO. Логика пока не понятна, буду искать  и разбираться. Еще раз большое спасибо, впереди кнопки и таймер, так что далеко не уходите...

    #include "p12F675.inc"

; CONFIG
; __config 0xF18C
 __CONFIG _FOSC_INTRCIO & _WDTE_ON & _PWRTE_ON & _MCLRE_OFF & _BOREN_OFF & _CP_OFF & _CPD_OFF

Reg_1       EQU         31h
Reg_2       EQU         32h
Reg_3       EQU         33h 
                       ;присвоение названий линиям ввода-вывода

   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

              org         0000h             ;начать выполнение программы с адреса 0000h
              goto        Start             ;переход на метку Start
           
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Подпрограмма обработки прерываний

    org    0004h        ;начать выполнение подпрограммы с адреса 0004h
    
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Основная программа                            
             
Start    nop
    
    
    movlw       b'00000111'       ;выключение компараторов
        movwf       CMCON
        
        bsf         STATUS,RP0        ;выбрать 1-й банк    
        movlw       b'11111110'        ;настройка линий ввода\вывода      
        movwf       TRISIO                ; gp0 на выход, остальные на вход
        bcf         STATUS,RP0        ;выбрать 0-й банк
    
    banksel ANSEL
    movlw b'00000000'
        movwf ANSEL

    banksel GPIO
    movlw b'00000000'
        movwf GPIO
  
; установка сигналов на порту 
m1        clrf    ANSEL
            BSF        GPIO,0        ; уст 1  
            call        Pause       ; переход на метку (с возвратом)
            BCF        GPIO,0        ; уст 0     ; "очистка" порта
            call        Pause       ; переход на метку (с возвратом)
            goto        m1          ; переход на метку (зацикливание)


    ;delay = 500000 machine cycles
Pause       movlw       .85
            movwf       Reg_1
            movlw       .138
            movwf       Reg_2
            movlw       .3
            movwf       Reg_3
wr          decfsz      Reg_1, F
            goto        wr
            decfsz      Reg_2, F
            goto        wr
            decfsz      Reg_3, F
            goto        wr
           
            return    

    END

 

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

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

может все проще, и дело в  потерянной команде

list p=12f675 ; list directive to define processor


 

Нет, и без этой команды все SFR видны в окнах отладчика.

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

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

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

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

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

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

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

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

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

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

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

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

    • @vaegor У меня описанная вами неполадка не наблюдается. Но я на всякий случай в профилактических целях подправил немного программу. Проверяйте. Если текущее время при установке будильника будет сбиваться, то мне понадобится более точная информация. Насколько сбивается, и зависит ли отклонение от времени установки будильника.  Желательно сделать следующий опыт: войти в режим установки будильника и выждать некоторое время после установки будильника, например минуты 2. Затем вернуться в режим часов и посмотреть есть ли отклонение текущего времени.   FM_KOMBI_1.3.hex
    • Как это "ни слова"? Самый главный принцип - потенциал неинвертирующего входа является всего-навсего ОПОРНЫМ. Всё управление идёт по инвертирующему входу, охваченному ООС. Вот параметры этой самой цепи ООС и являются главными и единственными, требующими учёта и расчёта.
    • При 12-вольтовом питании можно и BD135/BD136. Можно и пары 137/138 и 139/140, они имеют большее допустимое коллекторное напряжение, а остальные параметры такие же.
    • Мне почему-то вспоминается фильм "Особенности национальной охоты"...
    • Попытка уменьшить проникновение помех от анодного питания, я так думаю... Пульсации с анода лампы первого каскада (по сути с делителя внутреннее сопротивление лампы / анодное сопротивление) попадают на сетку выходной лампы. Если такое же напряжение помехи подать в катод этой лампы, то можно её скомпенсировать. Кроме того, считается, что при переносе блокирующего катодного конденсатора в анодную часть переменный ток в выходном каскаде замыкается по более короткому пути. Причём можно уменьшить ёмкость этого конденсатора. Правда, знал ли об этих ньюансах составитель этой схемы, неизвестно...
    • He3haika, а вы видели его прибор? Я же писал модификаций полно и чтобы выкладывать здесь схему надо знать что у него. А он глубоко это засекретил. Ни фото ни описания на словах. Вот я уверен что у него ТРЕХЭТАЖНЫЙ галетник, а у вас на схеме один.  Ё-МАЁ, лишь бы что то ляпнуть? Питание на элементах чисто для измерения сопротивлений.
×
×
  • Создать...