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

crazz

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

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

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

Доброго времени суток! Ковыряюсь с пик 16ф690 и не получается оживить входы porc,0 и  portc,1, уже вроде и аналоговый вход отключил и компоратор отключил, а вход так и не работает..., последующие порты порта С работают... В чем проблема?  

LIST      p=16F690
           #include  <P16F690.inc> 
           __CONFIG  (_MCLRE_OFF & _CP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT)

status        EQU        03h
porta        EQU        05h
trisa        EQU        05h
portb        EQU        06h
trisb        EQU        06h
portc        EQU        07h
trisc        EQU        07h

        org        0
         bcf        status,RP0  ; BANK 0
        bcf        status,RP1
        clrf        porta
        clrf        portb
        clrf        portc
        bcf        status,RP0  ; BANK 2
        bsf        status,RP1
        clrf        ANSEL
        clrf        ANSELH
        clrf        CM1CON0
        clrf        CM2CON0
        bcf        status,RP1    ; BANK 1
        bsf        status,RP0
        movlw        b'00001111'
        movwf        trisa
        movlw        b'01100000'
        movwf        trisb
        movlw        b'11011111'
        movwf        trisc
        bcf        status,RP0
        bcf        status,RP1
        movlw        b'11111000'
        movwf        OPTION_REG
        bcf        status,RP1  ; BANK 0
        bcf        status,RP0
        movlw        b'10101100'
        movwf        T1CON
        bcf        status,RP1  ; BANK 0
        bcf        status,RP0
        
dm3        btfss        portc,0        
        goto        dm3
        bsf        portb,4
        goto        dm3
r        goto        r
        end

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

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

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

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

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

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

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

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

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

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

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

тогда выходные порты лучше включать через аккумулятор? (molw==movwf)?

Я вообще сперва думал что проблема где то кроится в выборе банков памяти, уже и расписал то их по простому  bcf   status,RP0  bcf   status,RP1, а она (программа) не работает, с четыремя банками я столкнулся первый раз,  думал что в этом вся загвоздка.. спасибо за "направление", будем пробовать изменять программу, но уже не сегодня.

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

2 часа назад, MegaVoltFS сказал:

вроде и аналоговый вход отключил

Не верю! "Вроде" не канает. Смотри даташит.

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

Так ку или не ку ?!

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

Еbit 0 ADON: A/D Enable bit
1 = A/D converter module is enabled
0 = A/D converter is shut off and consumes no operating current щё раз не верю. Регистр под адресом 1F нулевой бит

Чевойто моторчик у  форума  стал совсем противозачаточный . 

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

Так ку или не ку ?!

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

11 час назад, koms45 сказал:

Регистр под адресом 1F нулевой бит

по дефолту ADCON0 = 0x00 . ! и включение/отключение АЦП на подключение аналоговых входов не влияет , за это отвечает регистр ANSEL & ANSELH , они у товарища обнулены.

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

Нашел причину, все, оказывается работало! Все как обычно - "недобдел")) Программу я тестил на готовой плате устройства, устройство это работает от декодера DTMF на м/с 8870, сам декодер это китайский уже запаянный модуль. Вся проблема оказалась в том что напряжения выходов Q1-Q4 составляют 3,6 в, а напряжения выхода ST всего 2,3 в... А программа ждет именно сигнал ST, чтоб идти дальше, а это напряжение не соответствует лог. 1. Собрал на макетке, для проверки порта, с той программой что привел выше - все работает - ставлю в плату - ни чего не работает... Замеряю напряжение на декодере на  Q1,Q2 оно 3,6в, снова контроллер ставлю в макетку, на вход даю сигнал  единицы напряжением 3,6 - все работает... ставлю снова в плату - ничего не работает... уже немножко начал офигевать - что за хрень??? , а потом решил померить напряжения на выводе ST, а оно 2,3в, снова контроллер ставлю в макетку, подаю 2,3 - и фиг - ни чего не работает... А я то померив напряжения на Q1,Q2 подумал что оно на всех выходах такое же... Всем спасибо!

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

Доброго времени суток! Рано радовался, снова ни чего не работает))) Вобщем какая то фигня - если работают  ноги portc,0 и portc,1 (они на вход) то не работает TMR1 (  счетчик работает, но вроде как будто сбивается предделитель на 1:1, хотя по настройкам стоит 1:4, сидит на внутреннем такте) А если сделать чтоб работал таймер1, то порты portc,0 и portc,1 не работают на вход, остальные работают, отключаются только эти два порта!  Куда копать? Компараторы отключены...

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

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

Доброго времени суток! Добрался я до ЖК 1602. Информацию на него выводить получилось, все работает. Вопрос - как из регистра с трехзначным числом сделать три регистра с однозначным, ну т.е. сделать регистры с количеством сотен, десятков и единиц. Хочу вывести АЦП на экран. Так то можно конечно из регистра АЦП вычитать единицу и эту еденицу накидывать в регистр едениц и как будет в регистре едениц 10, то накинем одну еденицу в регистр десяток и так далее пока регистр АЦП не дойдёт до нуля, но это как то долго. Есть ли способ это сделать проще? Заранее спасибо! Делаю на Асме.

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

11 минуту назад, MegaVoltFS сказал:

какой командой на 10 делить

Используйте обычное деление / и операцию вычисления остатка %

x = 345;

sotni = x / 100;   равно 3, количество сотен кладём в регистр сотен
x = x % 100;    равно 45, остаток от деления на 100
des = x / 10;   равно 4, количество десятков кладём в регистр десятков
edin = x % 10;  равно 5, остаток от деления на 10 и равно количеству единиц.

 

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

Это то я понял, как "математически" найти значения, но теперь не понятно как на ассамблере делить на 100, на 10, какой командой это делается? На два то можно разделить командой сдвига вправо, а на 10 или тем более 100, не повторять же эту команду по 5, по 50 раз... Пока организовал все на вычитании, сложении, сравнении, ну как изначально я писал в вопросе. Так то все работает, но хотелось бы это все организовать более правильно...

Чет я сейчас посмотрел, в пик 16 то и нет команд умножения деления, так что эти операции нужно переводить в сложения вычитания.... Значит надо не делить на 100, а вычитать по 100. И не делить на 10, а вычитать по 10....

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

Не нужно делить на 100, 1000, ... Нужно всего-лишь деление на 10 с остатком.
Делите число на 10, остаток складываете в регистры результата. И так пока число не будет нулевым (ну, или пока не будет нужного количества цифер). Всё просто.

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

Команд деления в пик16 нет, можно только путём пятикратного сдвига разделить на десять, а остаток высчитывать... Вот только результат будет неправильным при числах менее 10..

Завтра ещё попробую..

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

Изобретаете велосипед. погуглите код для PIC-ов который называется BIN2BCD, когда-то я такой находил и успешно применял. Они похожи на код укуренного программиста(т.е. вы их работу гарантированно не поймёте), но на самом деле разрабатывались математиками и есть в разных вариантах - с оптимизацией по размеру кода, по скорости его работы и по размерности цифр.

Официальные библиотечные процедуры - так и работают, сначала вычитает сотни пока число не станет меньше 100, потом десятки а остаток окажется единицами.

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

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

2 часа назад, MegaVoltFS сказал:

можно только путём пятикратного сдвига разделить на десять

Что-то у Вас с математикой не то... 5 делений на 2 будет деление на 32 (2^5) :)
Ищите готовые примеры, их есть в тырнете.

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • У меня больше всего вопросов вызвала необычная схема обеспечения отрицательного питания. Автор этой обстоятельной заметки пишет: For this supply to work correctly, the transformer must have a secondary voltage of at least 18V RMS.  Почему? Что будет не так с отрицательным питанием, если напряжение на трансформаторе будет меньше 18В?   https://tinyurl.com/23mlwxtt - я в простейшей эмуляции ставлю 12В пикового напряжения для трансформатора и на стабилитроне все как положено: -5.6В.
    • Согласен, очень криво объяснил. Это работа трёх вольтовой линии, просто на диод шотки сдвоенный, на один анод приходит сигнал напрямую с трансформатора, а на второй через дроссель. Вольт/деление 5 вольт в клетке, тайминг по моему 10 МС. Третья фотография это сигнал на катодах уровень земли ровно по центру экрана. Но все линии по итогу в порядке 3.3 в, 5, в, 12 в и -12 в. Нагрузить все линии не могу сразу ,так как тут же выгорают транзисторы (имеется нагрузка 250 ватт по 10 ампер на каждую линию за исключением-12в), поэтому нагружаю 3.3 вольтовую линию на 10 ампер,  подключаю переменный резистор 50 ватт на 15 ом на 5 вольтовую линию и постепенно довожу до той той картины с перекосом (это гдето  50 ватт общее). По поводу микросхемы, вверху имеется скрин где между импульсами проскакивает мини импульс, если так можно сказать, он проскакивает и на одной  и на второй ноге (7,8). Микросхема не tl 494, а lw4933/abx942.1/c9421646. Далее они приходят на базы транзисторов 945g  коллекторы этих транзисторов соединены с  выводами трансформатора. Просто схема типовая, легче мне кажется просто привести фото самого блока, для тех кто разбирается будет гораздо информативне.  Диод шотки по 12 вольтовой линии был подгоревший, заменил на донора. Приводить скрины не буду что бы не захламлять тему. В итоге, пока все так же, при достижении определенной нагрузки суммарно где-то 50 ватт, появляется этот "выброс и перекос". По этому имеются мысли на два варианта, это микросхема , этот мини импульс между периодами, на низкой нагрузке особо не влияет, но при достижении определенной приводит с самовозбуждению входной цепи и непроизвольному открытию транзистора нижнего плеча. Либо дело в "горячей части", плавающий дефект в обвязке силовых ключей.  Спасибо за ответ.
    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
    • А что нить из ассортимента активных щупов производства СССР..))
  • Похожий контент

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