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

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


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

Здравствуйте. Написал простенькую программу для 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Не по теме:

post-151375-0-06128200-1463645370.png

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

post-151375-0-98419900-1463645396.png

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

Я не раздаю удочки. Я продаю рыбу.

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

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

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

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

Это относится не ко всем мк, поэтому даташит - наше все. На равных с хелпом рекомендую заглядывать в папку "..\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

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

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

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

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

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

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

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

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

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

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

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