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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Смена функции (вход-выход) пина на лету


Смена функции (вход-выход) пина на лету

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

1

Возможна ли смена функции пина "на лету", во время выполнения программы? Например, сконфигурировать на вывод, вывести необходимые данные (мигнуть светодиодиком), затем сконфигурировать на ввод, чтобы опросить кнопку?

Отредактировано kokosh (2015-09-08 22:24:53)

0

2

да, и так делаю при экономии ног

http://savepic.su/6132644.jpg

Отредактировано Александр Д. (2015-09-08 23:05:57)

0

3

Кроме того, можно использовать АЦП, и потом переводить на порт и управлять. К примеру на тини13 делал ампер/вольт/термо метр для БП и выводил на ЖК HT1621. Или термометр на nRF24l01

0

4

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

Возможна ли смена функции пина "на лету", во время выполнения программы? Например, сконфигурировать на вывод, вывести необходимые данные (мигнуть светодиодиком), затем сконфигурировать на ввод, чтобы опросить кнопку?

Где-то в теле программы:

DDRx.y = 0  -   это вход

DDRx.y = 1  -   это выход

x - порт МК
y - вывод МК

0

5

Александр Д. написал(а):

да, и так делаю при экономии ног

Как это может выглядеть в исходнике

$map       ' Получаем карту распределения памяти компилятором Bascom
  $regfile = "m328pdef.dat"       'Документация Atmel - http://www.atmel.com/images/Atmel-8271- … mplete.pdf
  $crystal = 1000000
  $framesize = 32       ' Размер области используемой и необходимой для преобразований
  $hwstack = 40       ' Размер аппаратного стека
  $swstack = 16       ' Размер программного стека

  Вход_выход Alias Ddrb.0
  Опрос_кнопки Alias 0
  Мигание_светодиодом Alias 1
  Кнопка Alias Pinb.0 : Config Кнопка = Input
  Светодиод Alias Portb.0 : Reset Светодиод

'===============================================================================
  Главный_цикл:
'===============================================================================

  'В теле программы
   Вход_выход = Опрос_кнопки

   If Кнопка <> 0 Then
       Вход_выход = Мигание_светодиодом       'Что-то делаем
       Set Светодиод
       Waitms 200
       Reset Светодиод
       Вход_выход = Опрос_кнопки
     Else
       'Иначе делаем что-то другое
   End If

'===============================================================================
  Goto Главный_цикл
End
'===============================================================================

http://s3.uploads.ru/t/PmQnY.jpg http://s3.uploads.ru/t/OjJRH.jpg

Отредактировано sasha_1973 (2015-09-09 06:54:32)

0

6

Большое спасибо! У меня как раз тинька13 и кончились выводы.

0

7

хех, а я это для самотеста пайки/платы это использовал  :D

0

8

А я, а я, а я.... :)
Я так сделал 3 состояния вывода :) Условно, 2 светодиода. Горит либо один, либо другой, либо ни кто из них. Жаль вот при этом нельзя сделать чтобы оба горели. Ну да фиг с ними. Мне этого и не надо было.

Состояние менял Config'ом.

Отредактировано SIvan (2015-09-10 20:36:48)

0

9

можно сделать оба свечения, быстро меняя состояния (аля шим)

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Смена функции (вход-выход) пина на лету