Jump to content
Sign in to follow this  
REDs

Мк Pic16F628A Не Работает Кнопка

Recommended Posts

Здравствуйте. Написал простенькую программу для pic16f628a на компиляторе microC. Подключаю две кнопки и по их нажатию через UARTотправляется сообщение. Предварительно прогнал в протеосе, там все работает как надо, но на железе не работает. МК не воспринимает кнопки, попробовал прогнать еще три программки чисто на кнопку, все тоже самое, выходы работают, но кнопка игнорируется. Мультиметром все прозвонил и проверил напряжения, все в норме, при нажатии кнопки на ножку подается "0". Пробовал запускать и от внешнего кварца, и от внутреннего генератора, MCLR висит на питании, все как на схеме. Помогите пожалуйста разобраться в чем проблема.

Все варианты работают в протеосе. Но на железе не хотят. Возможно надо прописать что-то дополнительное чтобы МК воспринимал входящие данные?

post-192211-0-56505500-1463596107.png

post-192211-0-13734600-1463596108.png

post-192211-0-53461600-1463596108.png

post-192211-0-05277300-1463596109_thumb.png

post-192211-0-29746200-1463596110_thumb.png

Share this post


Link to post
Share on other sites

В листинге нужно писать коменты , из уважения к другим. Я на микро СИ не пишу , но на первый взгляд не вижу антидребезга.

Share this post


Link to post
Share on other sites

Антидребезг предусмотрен функцией Button(), в справке есть пример ее использования, обратите внимание на использование переменной oldstate (из примера).

Инициализировать UART надо перед основным циклом, незачем это делать в процедуре, которая должна вызываться неоднократно.

По железу: подтяжка входных портов к плюсу есть? Вижу, есть.

Edited by КЭС

Share this post


Link to post
Share on other sites

Высококачественные конденсаторы Panasonic для надежности вашей электроники!

Электролитические алюминиевые конденсаторы Panasonic отличаются повышенной надежностью, длительным сроком службы, низким импедансом и выдерживают большой ток пульсаций, в то время как семейства полимерных конденсаторов Panasonic SP-CAP, POSCAP, OS-CON и HYBRID характеризуют сверхнизкий ESR и увеличенная емкость, работа при высоких напряжениях и в расширенном температурном диапазоне. Приобретая продукцию Panasonic, вы гарантированно получаете самое передовое решение для ваших задач. Для облегчения вашего выбора, мы подготовили подборку полезных материалов.

Читать статьи

...выходы работают...

Если бы не это, то можно было бы предположить, что работает вачдог и его надо отключить. Кстати, как проверили, что выводы работают?

Не по теме:

post-151375-0-06128200-1463645370.png

И нафига здесь антидребезг?

post-151375-0-98419900-1463645396.png

Протеус он такой протеус.

Share this post


Link to post
Share on other sites

Читайте документацию (стр. 63-64) - по умолчанию PortA включен в режиме аналогового входа компаратора. Отключается компаратор установкой бит CM2-CM0 регистра CMCON в 1.

void main() {
CMCON = 0x07; //Отключаем компаратор
TRISA = 0x03; //RA0 и RA1 входы
...

Share this post


Link to post
Share on other sites
                     

Вебинар "Как создать BLE-устройство на базе новейшего беспроводного микроконтроллера STM32WB55"

27 ноября 2019 года компания КОМПЭЛ приглашает разработчиков, технических руководителей и энтузиастов беспроводной связи на вебинар, посвященный новинке 2019 года – мультипротокольному беспроводному микроконтроллеру STM32WB55, который позволяет создавать устройства на базе стандартов BLE 5.0; BLE Mesh; 802.15.4/ZigBee и Thread. На вебинаре мы покажем, как с помощью привычных инструментов STM32Cube и STM32CubeMX можно создать свое первое, надежно работающее BLE-приложение.

Зарегистрироваться на вебинар

Всем спасибо, да, дело было в компараторе

Странно что в хелпе МикроС об этом не упомянается

Share this post


Link to post
Share on other sites

Это относится не ко всем мк, поэтому даташит - наше все. На равных с хелпом рекомендую заглядывать в папку "..\Mikroelektronika\mikroC\Examples\" - там много интересного. Например:

/*
* Project name:
 adc_leds (LED blinking on GPIO with ADC)
* Copyright:
 (c) MikroElektronika, 2005-2008
* Description:
 This code demonstrates blinking of diodes connected on GPIO.
 ADC conversion value determinate which diodes go on and off.
* Test configuration:
 MCU:			 PIC12F675
 Dev.Board:	 EasyPIC5
 Oscillator:	 Internal, 04.000 MHz
 Ext. Modules: -
 SW:			 mikroC v8.0
* NOTES:
 None.
*/
unsigned temp;
void main() {
ANSEL = 4;					 // Configure AN2 pin as analog
GPIO = 0;						 // Initialize GPIO port
CMCON = 7;					 // Turn off comparators
TRISIO = 0;					 // Configure GPIO as output
TRISIO.GPIO2 = 1;				 // set pin GP2 as input
ADCON0.VCFG = 0;				 // Vdd as Vref
do {							 // beginning of a repeat loop
temp = Adc_Read(2);			 // Read AN2 channel
GPIO = temp >> 8;
} while (1);				 // endless loop (as this condition is always satisfied)
}//~

ПС. Код привел ради этих строк:

CMCON = 7; // Turn off comparators

TRISIO.GPIO2 = 1; // set pin GP2 as input

Edited by КЭС

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Similar Content

    • By Пентагрид
      Решил собрать источник питания с управлением через PIC16F628A (парой кнопок переключать нужные напряжения). Взял обычный импульсник на 15 В, из обратной связи выдрал TL431, оставил оптрон, его повесил на выход МК. Написал тестовую прошивку: задаётся Vref через VRCON, компаратор сравнивает и выдаёт на оптрон 1 или 0.
      Сделал два варианта прошивки: в одном проверка на срабатывание выполняется циклически, в другом - вызов прерывания при реакции компаратора. Оба варианта тестировал в Протеусе (потенциометр и светодиод), работают. На бредборде завёлся только первый (с нагрузкой и без). А с прерыванием не работает: при отсутствии нагрузки выдаёт нужное напряжение, но стоит только подключить нагрузку и даже если рукой коснуться - напряжение падает. С нагрузкой вообще не заводится.
      МК питаю отдельно (тлф. зарядка с домотанной вторичкой + 7805). Несколько раз прошёлся по прошивке, не нашёл за что зацепиться. Прошу совета.
      Схема
      В коде присутствуют рудименты для кнопок (пока не вводил).
       
      comp5nop.rar
    • By Пентагрид
      Здравствуйте, товарищи! Я только начал изучать программирование МК с ассемблера для пиков. Прошёл светодиодную мигалку и взялся за вывод текста с PIC16F628A на ЖКИ 1602А. Но не заладилось. Взял готовую  прошивку (сама она успешно запустилась), слегка подредактировал: задал соответствие DB0...DB7=RB0...RB7, вывел отдельные переменные address и symbol для адреса и символа ячейки на экране. Это выглядит следующим образом:
      MOVLW    0x00    ;вывод  единицы в первую ячейку
      MOVWF    address
      MOVLW    0b00110001
      MOVWF    symbol
      CALL    znak
       
      при этом  используются подпрограммы
      znak:
      MOVF    address,0        ;вывод адреса
      MOVWF    PORTB
      BCF    RS
      CALL    strob
      CALL    delay_39us
      MOVF    symbol,0        ;вывод символа
      MOVWF    PORTB
      BSF    RS
      CALL    strob
      CALL    delay_39us
      RETURN
      strob:
      BSF    E
      NOP        ;задержка 2 мкс
      NOP
      BCF    E
      RETURN
       
      Второй день до поздней ночи перепроверяю прошивку, надёжность и правильность на бредборде, RC-цепочку на MCLR. Скачанный проект работает, а моя программа - нет. Прошу помочь в поиске ошибки в коде.
      lcd-test.asm
    • Guest Ваня
      By Guest Ваня
      Помогите переделать программу трехфазного генератора pic16f628A на pic16f84A . есть hex и есть asm 
      pic16енкнек200гц.HEX
      pic16f628 200гц.asm
    • By maksa1986
      Добрый день. Собрал преобразователь по схеме Дмитрия Карелова. На холостом ходу все 3 фазы присутствуют. При подключении моторчика 36 вольт 200 герц 90 ватт, напряжение трех фаз просаживается до 2.5 вольт, транзисторы верхнего плеча трех фаз начинают нагреваться и соответственно моторчик не вращается. Кто что может сказать по этому поводу?

    • By UndBUFF
      Хочу реализовать передачу данных по блютуху. Возник такой вопрос:
      Как правильно подключать модуль блютух (HC-05) к МК (PIC16F628A)?
      У мк есть аппаратный UART. Данные от модуля, как я понял, тоже передаются по UART.
      Подключать надо так:
      RX(МК (7 нога)) - RX (Модуль (2 нога))
      TX(МК (8 нога)) - TX (Модуль (1 нога))
      или как на этой схеме:

      только вместо DB9 FEMALE подвести к RX и TX соответственно модуль. И если есть у кого-нибудь пример, поделитесь пожалуйста )
      Сильно не пинайте я только начинаю.
  • Сообщения

    • @kotenok А ты его попробуй применить :).
    • Подтвердите документально?
    • В таких системах используется такое свойство как гистезис, то есть после того как аккумулятор заряжен до определенного напряжения, зарядка останавливается пока напряжение не снизится до определенного уровня.  В вашей задаче ключевые факторы это режим работы, время заряда – время разряда, и запас ёмкости. Из этого рассчитывается ток заряда и напряжения состояний. Необходимость постоянного присутствия балансира и разновидность, тоже определяется этими факторами.  Также для данной химии аккумулятора нужен постоянный мониторинг температуры, как при заряде, так и под нагрузкой и определение полностью разряженного аккумулятора.  На самом деле всё проще, чем пугают философскими фразачками. Добавлю, что балансиры, производителями рассматриваются как отдельные компоненты. В балансирах тоже есть пороговые значения, балансировка идет не постоянно, а при необходимости, но сама логика, хоть и мало, но всё же  потребляет энергию. Можно ограничить, чтоб балансировка происходила только при зарядке.   Всё в одном, и под различные, индивидуальные запросы  делают на программируемых мк.  Чем определяется выбор данной химии аккумулятора ?  
    • Видео не о чём. Если нет реакции на кнопки - не доходит сигнал до МК: не пропай, брак. Балаболит - могут быть помехи от ШИМа дисплея. У меня тоже без оформления в корпус - молчала М2. Как "прижал" всё по месту - дисплей дал о себе знать.  Другой вопрос, не реагирует на увеличение СЕНСа - косяк во входных цепях, брак МК.  Так что, сначала, ищм непропаи и сверяйся номиналом деталей со схемой.
×
×
  • Create New...