PIC12 GPIO на вход

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
valerik88
Родился
Сообщения: 9
Зарегистрирован: Вс сен 15, 2013 07:33:45

PIC12 GPIO на вход

Сообщение valerik88 »

МК 12f683.
Не получается снять сигнал с некоторых ножек GPIO
Программа простецкая. Ждём сигнал с любой ножки, после этого подаём сигнал на все ножки сразу.

Код: Выделить всё

//12f683.h
#include <pic.h>;

__CONFIG(MCLRDIS & WDTDIS & INTIO);

void main() {
    TRISIO = 0b11111111;
    ANSEL = 0b0000111;

    while (!(GPIO0 || GPIO1 || GPIO2 || GPIO3|| GPIO4|| GPIO5)) {
        _delay(10);
    }

    TRISIO = 0;
    GPIO =  0b11111111;

    while (1) {
    }
}
При подаче сигнала на любую из первых трёх ножек, ничего не происходит.
Изображение

При подаче сигнала на любую из оставшихся трех ножек, всё работает, как ожидалось.
Изображение

Вопрос: Почему сигнал не снимается с первых трех ножек?

Поменял на ANSEL = 0; Заработала 3я ножка (GP2) первые две по прежнему не работают



Всё спасибо, разобрался!
Нужно было ещё компаратор отключить CMCON = 0x07
Реклама
Аватара пользователя
Flasher
Мудрый кот
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Re: PIC12 GPIO на вход

Сообщение Flasher »

The ANSEL register is used to configure the Input
mode of an I/O pin to analog. Setting the appropriate
ANSEL bit high will cause all digital reads on the pin to
be read as ‘0’ and allow analog functions on the pin to
operate correctly.
Note: The ANSEL and CMCON0 registers must
be initialized to configure an analog
channel as a digital input. Pins configured
as analog inputs will read ‘0’.
Реклама
iGraphicsS
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Ср фев 16, 2011 22:58:23

Re: PIC12 GPIO на вход

Сообщение iGraphicsS »

Вы не правильно моделируете схему!!!
В протеусе, даже разомкнутая кнопка имеет сопротивление, по этому схему подачи сигнала нужно изменить
Регистр ANSELХ определяет, какая "ножка" (если можно так сказать), будет работать как аналоговая или цифровая. Для работы как цифровая, необходимо установить (это значит "1") соответствующий биты в этом регистре.
Вход GP3 MCLR/Vpp не может быть настроен как выход, значит не "все на выход"!
Необходимо учесть параметры сигнала (выход с открытым коллектором, с подтяжкой, изолированный итп), и при необходимости выключить или включить подтягивающие резисторы. Если этого не сделать, то при отсутствии входного сигнала (просто голый провод или разомкнутое реле), на входе будет творить ахинея, и если мимо пробежал например кот))), схема ложно сработает. По этому применяют активный логический уровень "0" (для защиты от помех), и "подтяжку" к питанию. По этому у ножки пика у вас не синий и не красный квадратик, а серый, что говорит о неопределённом состоянии.
В вашем случае, необходимо подтянуть сигнальные линии к земле через резистор в 4,7-10 кОм для моделирования
Если вам надо, могу выложить код на асме.
Ответить

Вернуться в «PIC»