Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Внешнее прерывание... вопрос


Внешнее прерывание... вопрос

Сообщений 1 страница 8 из 8

1

МК - восьмая мега. На 2 пине порта D висит внешнее прерывание по нарастанию фронта.
Когда я пробую это прерывание в виде кратковременного замыкания этого пина на +питания, оно успешно срабатывает. Но когда я подключаю к нему выход логической микросхемы - происходит просадка напряжения высокого уровня (лог.1) до 2,5 вольт. Например, если на выходе микросхемы низкий уровень, а импульс в виде логической 1, то он просаживается до 2,5 вольт и прерывания не происходит. Даже если у микросхемы высокий уровень, а импульс в виде логического 0, то этот высокий уровень МК всё равно просаживает до 2,5 вольт. Что я не так делаю?

Пин конфигурировал и так

Config Portd.2 = Input

И так

Config Pind.2 = Input

Разницы никакой.

0

2

Обычная, КР1533ЛЕ1. Попробую через транзистор.

0

3

Предлагаю попробовать включать (милли)амперметр между выводом МК и кнопкой на плюс питания. И между МК и ЛЕ1.

Отредактировано SIvan (2015-10-04 12:24:11)

0

4

Подтяните вход к питанию внутренним резистором:
Portd.2 = 1

0

5

Ток на пине МК замеряю.

А при подтягивании порта его нужно сконфигурировать, как выход, отправить туда 1, а затем сконфигурировать, как вход?

0

6

beginer написал(а):

Ток на пине МК замеряю.

А при подтягивании порта его нужно сконфигурировать, как выход, отправить туда 1, а затем сконфигурировать, как вход?

Нет достаточно:
Config Portd.2 = Input
Portd.2 = 1

0

7

Кажется, я нашёл проблему.

У меня к порту D подключен дисплей - 4 линии данных и три сигнальных (E,RW и RS):

$lib "lcd4busy.lbx"
Const _lcdport = Portd
Const _lcdddr = Ddrd
Const _lcdin = Pind
Const _lcd_e = 1
Const _lcd_rw = 0
Const _lcd_rs = 3

Итого у порта задействованы 7 из 8 пинов (0,1,3,4,5,6,7). Так как второй пин порта D не задействован, я решил повесить на него прерывание. Но, вероятно, драйвер дисплея всё равно выставляет на этом втором пине почему-то ноль.

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

Заменил драйвер дисплея на стандартный, и всё заработало как надо!

Как бы в библиотеке lcd4busy исправить, чтобы она не трогала свободный пин порта? И вообще, возможно ли это...

Отредактировано beginer (2015-10-15 19:10:29)

0

8

С lcd4busy_anypin.lbx на 8-ой меге не компилируется с ошибкой

.EQU not found, probably using function that are not supported by the selected chip [_LCDDB7PIN]

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Внешнее прерывание... вопрос