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

crazz

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

Про цепочку я уже писал. Пост №1974. Ничего не дало.

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

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

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

Есть смутное подозрение, что автор вопроса оставил дефолтный конфиг. От того частота осциллятора не соответствует коду и возникают несанкционированные подвисания. То есть код В ЛЮБОМ СЛУЧАЕ работает как попало.

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

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

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

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

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

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

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

Интересное подозрение.... что то мне подсказывает, что это вполне может быть!

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

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

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

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

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

__config b'11 0001 1010 1100'

бит 13-12 - биты калибровки сброса по снижению питания (11) - верхний предел

Ставил нижний предел - не помагало.

бит 11-9 - зарезервированно

бит 8 - защита памяти данных отключена

бит 7 - защита памяти программ отключена

бит 6 - запрещен сброс по снижению питания

бит 5 - MCLR работает как MCLR

бит 4 - PWRTE включен

бит 3 - WDT разрешен

бит 2-0 - внутренний осцилятор

Калибровочная константа была прочитана и записана на бумажку. Была затерта несколько раз, но записана обратно с бумажки. :yes:

Сейчас переписал программу динамической индикации. Есть подозрение, что проблема в программе. До этого этот же микроконтроллер стоял в другом устройстве и все работало как надо.

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

Переписал программу индикации. Вроде пока все работает.

Это новая:

indication
	    bcf		 INTCON,7	    ;Disables all interrupts
;1111111111111111111111111111111111111111111111111111111111111111111111111111
	    movf	    stn,w
	    call	    table
	    movwf	   PortC
;-----------------------------------------------------------------------------
	    bcf		 PortA,5
	    btfsc	   push_button,0
	    bsf		 PortA,5
;-----------------------------------------------------------------------------
	    bcf		 PortA,0
;-----------------------------------------------------------------------------
	    btfsc	   push_button,0
	    goto	    lbl_1
;del zero
	    bsf		 status,0
	    movlw	   .1
	    subwf	   stn,w
	    btfss	   status,0
	    bsf		 PortA,0
;-----------------------------------------------------------------------------
lbl_1
	    call	    delay
	    bsf		 PortA,0
;1111111111111111111111111111111111111111111111111111111111111111111111111111
;2222222222222222222222222222222222222222222222222222222222222222222222222222
	    movf	    dstk,w
	    call	    table
	    movwf	   PortC
;-----------------------------------------------------------------------------
	    bcf		 PortA,5
	    btfss	   push_button,0
	    bsf		 PortA,5
;-----------------------------------------------------------------------------
	    bcf		 PortA,1
	    call	    delay
	    bsf		 PortA,1
;2222222222222222222222222222222222222222222222222222222222222222222222222222
;3333333333333333333333333333333333333333333333333333333333333333333333333333
	    movf	    edn,w
	    call	    table
	    movwf	   PortC
	    bcf		 PortA,2
	    bcf		 PortA,5
	    call	    delay
	    bsf		 PortA,2
;3333333333333333333333333333333333333333333333333333333333333333333333333333
	    bsf		 INTCON,7	    ;Enables all unmasked interrupts
	    return				  ;end of cycle of indication

Это старая:

indication
	    bcf		 INTCON,7	    ;Disables all interrupts
;----------------------------------------------------------------------------
	    clrf	    PortA		   ;cycle of indication
	    clrf	    PortC
	    movf	    stn,w
	    call	    table
	    movwf	   PortC
	    movlw	   b'00000110'
;-----------------------------------------------------------------------------
	    btfsc	   push_button,0
	    movlw	   b'00100110'	    ;inclusion of a point
;-----------------------------------------------------------------------------
	    movwf	   PortA
	    call	    delay

	    clrf	    PortA
	    clrf	    PortC
	    movf	    dstk,w
	    call	    table
	    movwf	   PortC
	    movlw	   b'00000101'
;-----------------------------------------------------------------------------
	    btfss	   push_button,0
;-----------------------------------------------------------------------------
	    movlw	   b'00100101'	    ;inclusion of a point
	    movwf	   PortA
	    call	    delay

	    clrf	    PortA
	    clrf	    PortC
	    movf	    edn,w
	    call	    table
	    movwf	   PortC
	    movlw	   b'00000011'
	    movwf	   PortA
	    call	    delay

	    bsf		 INTCON,7	    ;Enables all unmasked interrupts
	    return				  ;end of cycle of indication

Отличие во включении разрядов индикатора. В первом случае обнуляется только один бит и включается соответствующий разряд индикатора с общим катодом. Во втором случае всему порту присваивается нужное значение, где 0 - разряд включен, 1 - разряд выключен. Там еще есть включение точки. Она у меня переключается из младшего в старший разряд при нажатии на кнопку.

Почему pic стартовал через раз не пойму. Боюсь эта проблема еще напомнит о себе

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

Вот в этой статье очень хорошо показан "звон", да и советы там тоже неплохие.

Интегральные стабилизаторы типа 7805 очень чувствительны к импендансу источника и нагрузки, поэтому блокировочные конденсаторы на входе и выходе обязательны, независимо от электролитов. На выходе электролит стабилизатору только МЕШАЕТ.

Учение - изучение правил. Опыт - изучение исключений.

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

Ничего не помогает. Может быть проблема в программе? Посмотрите пожалуйста.

include <p16f676.inc>
	    list p=16f676
	    __config b'11000110101100' ;bits config
;=============================================================================
;special reg
;=============================================================================
T1CON		   equ		 10h
PCL			 equ		 02h
OPTION_REG	  equ		 81h	 ; bank1
STATUS		  equ		 03h
PORTA		   equ		 05h
PORTC		   equ		 07h
TRISA		   equ		 85h
TRISC		   equ		 87h
INTCON		  equ		 0Bh
PIE1		    equ		 8Ch
PIR1		    equ		 0Ch
ADCON0		  equ		 1Fh	 ;ADC reg
ADCON1		  equ		 9Fh	 ;ADC reg
ANSEL		   equ		 91h	 ;ADC reg
ADRESH		  equ		 1Eh	 ;ADC reg (bank 0)
ADRESL		  equ		 9Eh	 ;ADC reg (bank 1)
CMCON		   equ		 19h
TMR1H		   equ		 0Fh
TMR1L		   equ		 0Eh
WPUA		    equ		 95h	 ;bank1
IOCA		    equ		 96h	 ;bank1
OSCCAL		  equ		 90h	 ;bank1
;=============================================================================
;general purpose registers
;=============================================================================
countL		  equ		 .32
countH		  equ		 .33
tempL		   equ		 .34
tempH		   equ		 .35
tempL_mean	  equ		 .36		 ;reg for save context
tempH_mean	  equ		 .37		 ;reg for save context
stn			 equ		 .38
dstk		    equ		 .39
edn			 equ		 .40
regbcdL		 equ		 .41
regbcdH		 equ		 .42
regbcdLH	    equ		 .43
button_flag	 equ		 .44
push_button	 equ		 .45
cntbutL		 equ		 .46
t_status	    equ		 .47
t_work		  equ		 .48
count_addit	 equ		 .49
;=============================================================================
f			   equ		  1
w			   equ		  0
;=============================================================================
		    org		 0000h
		    goto	    init
;=============================================================================
;interrupt vector
		    org		 0004h            //Вектор прерывания
		    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                        //определяю что вызвало прерывание
	    clrwdt                // разрешено два прерывания: АЦП и таймера1
	    movwf	   t_work		   ;save context
	    swapf	   STATUS,w
	    movwf	   t_status
;-----------------------------------------------------------------------------
	    btfsc	   PIR1,0
	    call	    tmr1_int
;-----------------------------------------------------------------------------
	    btfsc	   PIR1,6
	    call	    ADC_int
;-----------------------------------------------------------------------------
	    swapf	   t_status,w	   ;extract context
	    movwf	   STATUS
	    swapf	   t_work,f
	    swapf	   t_work,w
	    retfie

Далее идет подпрограмма инициализации, где прописана настройка устройств и присвоение портам предварительного значения (индикации нет) и безусловный переход (goto) в главный цикл, где происходит вызов прграммы индикации, вызов прграммы АЦП с уходом в сон и выходом по завершению преобразования, вызов прграммы опроса кнопки.

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

И причём тут программа, если :

Когда питал от блока питания проблем не было. Когда включил через стабилизатор в устройство, стартовать стал через раз.

?

Делайте нормальное питание и не будет проблем.

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

тем более что ковыряться в чужом коде дело весьма неблагодарное. И наивно ждать обратного

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

Проверить программа ли это, достаточно сделать самую простую программу - мигалку светодиодом. И если у вас на схеме есть какие-то еще потребители которые управляются контроллером и приводят к изменению потребления тока - их коммутировать тоже с частотой 2-3гц, такая программа слишком проста чтобы наделать ошибок и в то же время может выявить слабые места в разводке.

Кстати, отлаживать такие схемы без осциллографа довольно трудно - приходится постоянно гадать. Надо срочно обзавестись каким-никаким а осциллографом, желательно цифровым чтобы можно было рассматривать одиночные события.

Учение - изучение правил. Опыт - изучение исключений.

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

Вот я и сижу гадаю. Я бы лучше для начала приобрел хороший программатор с возможностью отладки, только это дороговато для меня, хотя есть желание сделать его самому, но опять проблема - некогда. А уж осциллограф тем более штука недешевая.

Сейчас прошиваю extrapic в связке с PICPgm Programmer. Пробовал IC-prog и затер константу у одного из пиков по незнанию (вписал дефолтную), у второго хотя-бы сохранил, сейчас его и использую.

В моей конструкции с затертой константой он вообще отказывается работать, а вот в этой работает и никаких проблем с запуском. Питание и стабилизатор, кстати, тот же.

http://alex-exe.ru/r...pic16f676-7seg/

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

Да, но разводка совсем другая. Попробуй все-таки реализовать мигалку на контроллере в рамках твоей нерабочей схемы чтобы проверить догадку. Это ведь несложно?

И сделай хотябы логический пробник, раз осциллографа нет. Если сделать конструкцию на компараторе с переменным порогом и счетчиком чтобы ловить короткие импульсы, то можно запросто отлавливать и проблемы по питанию.

Осциллограф можно взять Б/У-шный, за бесценок.

Учение - изучение правил. Опыт - изучение исключений.

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

У меня все потребители управляемые контроллером - это дешифратор к176ид3 и опер lm317. Они в панельках, вытащил из панелек - проблема не исчезла. Сейчас поставил конденсатор после стабилизатора, он даёт плавное нарастание напряжения, пусть пока так поработает. Позже буду посвободнее обязательно займусь.

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

Тогда бы микроконтроллер вообще не работал как надо и wtd его постоянно бы сбрасывал. Да и программа у меня очень простая и комманду call использую не часто. Нет, точно не из-за стека. Остаётся еще один простой способ все выяснить, это написать прогу без режима сна. Есть у меня подозрение, что это собственный генератор АЦП не запускается как надо, микроконтроллер уходит в сон (останавливает свой генератор) и ждет когда ему поступит комманда прерывания от АЦП, а она не поступает, он так и спит)

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

Ещё раз повторюсь. Сделай программу-мигалку в 10 строк, убедись что она работает прежде чем искать проблему в своей программе! исключи сначала железную проблему.

Ведь это несложно!

Учение - изучение правил. Опыт - изучение исключений.

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

Да и программа у меня очень простая и комманду call использую не часто. Нет, точно не из-за стека.
я только по обрывкам кода насчитал не менее пять переходов, не удивлюсь если в полном коде их больше...

ЗЫ согласен с Alexeyslav тест определит где трабл

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

Доброго времени суток уважаемые форумчане.Собственно вопрос: в силу своих возможностей написал програмку мигания светодиодов, поигрался в симуляторе МПлаба и результат оказался обнадеживающим, после того как залил хекс в микруху оказалось показалось, светодиоды не моргают а безперебойно горят, плясания с бубном решения не принесли.И еще, микруха не хотела работать пока не коснулся ее пальцем, проясните пожалуйста.

  LIST  p=pic16f73 
  __CONFIG 03FF1h   ;wdt выключен?
STATUS  equ  03h
PORTB  equ  06h
TRISB  equ  06h
my1   equ  20h  ;;;;;;;;;;;;;;;;;;;;;;;;;
my2   equ  21h  ;для организации задержки
my3   equ  22h  ;;;;;;;;;;;;;;;;;;;;;;;;;
FL_pr  equ  23h  ;флаг состояния порта
  org  0
Start  bsf  STATUS, 5 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  clrf TRISB  ;неинтересная подготовительная фигня
  bcf  STATUS, 5 ;
  clrf PORTB  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
v_odin  movlw 0x01  ;устанавливаем лог.ур. 1
  movwf FL_pr  ;флаг проверки
  movlw 0x55  ;
  movwf PORTB  ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
n   movlw 0x64 ;
  movwf my1  ;
  movlw 0xFF ;1-64
  movwf my2  ;2-FF
  movlw 0xFF ;3-FF
  movwf my3  ;
   ;
cicl  decfsz my1, 1 ;
  goto cicl2 ;
  movlw 0x64 ;
  movwf my1  ;
  goto proverka;
   ;
cicl2  decfsz my2, 1 ;
  goto cicl3 ;
  movlw 0xFF ;
  movwf my2  ;
  goto cicl ;
   ;
cicl3  decfsz my3, 1 ;
  goto cicl3 ;
  movlw 0xFF ;
  movwf my3  ;
  goto cicl2 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
proverka btfsc FL_pr, 0 ;;проверяем лог.ур. порта
  goto v_nol  ;устанавить низ.лог.ур.
  goto v_odin  ;установить выс.лог.ур.
v_nol  movlw 0x00 ;устанавливаем лог.ур. 0
  movwf FL_pr ;флаг проверки
  movlw 0x00 ;
  movwf PORTB ;
  goto n   ;на новый круг цикла
  end

МПлаб v8.92, мик-р 16F73, прошивал через P 150, питание от ноутбука(от б\п такой же результат),питание подал на MCLR и Vdd, минус на два вывода Vss, резистор 10 Ом

Bezymjannyj-12.pngBezymjannyj-1.pngIMG_0417.jpg

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

какая хрень у вас написана....

1. подключите инклюдный файл!!! и замените магические цифры в конфиге на осмысленные названия битов

2. названия и расположение всех РСН(регистров специального назначения) также находятся в инклюде и в коде не описываются...

3. делать из байта булеву переменную и общатся с ней как с байтом идиотизм...

описывается :

FLAG equ 0x23 ; расположение регистра флагов

UrPr equ 0 ; название и номер бита

или

#define UrPr 0

установка в лог1

bsf FLAG,UrPr

установка в лог0

bcf FLAG,UrPr

проверка на лог 1

btfss FLAG,UrPr

4. шапка-образец оформления кода лежит в папках мплаба по пути:c:\Program Files\Microchip\MPASM Suite\Template\Code\16F73TEMP.ASM

5. неинтересная подготовительная фигня состоит состоит больше чем из установки двух регистров...

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

Подскажите по массивам в Picbasic pro

Не могу найти информации нигде.

Вообщем у меня есть два столбца или строчек значений.

Получаю значение с АЦП в переменную temval от 0 до 255 например 56

дальше нужно в первом столбце строчке найти значение 56 и увидеть что напротив него, тоесть с тем же порядковым номером стоит число 10 к примеру. и это число записать в другую переменную. Как это сделать?

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

http://www.yandex.ru...массивы в basic И сразу же, по первой ссылке, есть упоминание про двумерные массивы.

И вот ещё, в том же поиске ссылка, конкретно про двумерные массивы - http://festival.1sep...rticles/587539/

Странно, что Вы этого не смогли проделать сами.

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

Какие еще двумерные массивы? Тут же одномерный нужен! к тому же, массив-константа...

Учение - изучение правил. Опыт - изучение исключений.

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

Помогите разобраться с регистрами АЦП PIC 16F819

Вот к примеру я хочу врубить АЦП

Пишу ADCON0=0b11000101;

bit7-6 - тут вроде все понятно выбираем частоту АЦП

bit5-3 - тут тоже все понятно выбираем канал

bit2 - тут не понятно, выбрать можно в процессе или не в процессе что это?

bit0 тоже не понятно что это?

далее пишу

ADCON1=0b00000010;

bit7 - не очень понятно но подозреваю что это выбор места куда будет результат АЦП записываться. Если 0 то в ADRESL будут записаны нули и значение будет в ADRESH верно?

bit6 - не понятно что это какой то ADCS2

bit3-0 - это не очень понятно но как я понимаю какие то вариации с портами и питанием. у меня выбрано 0010

А где задается битность?

Что еще нужно настроить чтобы получать в переменную значение АЦП?

post-147349-0-62882500-1442686117_thumb.jpg

post-147349-0-84517500-1442686151_thumb.jpg

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

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

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

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

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

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

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

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

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

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

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

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