реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> atMega16
neggatif
сообщение Apr 4 2011, 17:25
Сообщение #1





Группа: Новичок
Сообщений: 1
Регистрация: 4-04-11
Пользователь №: 64 125



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

Организовать подсчёт нажатий на кнопку SW3, подключённую к PB1, и
выдачу 4-битного результата в двоичном коде на выводы PB4, PB3, PB2, PB0
(светодиоды VD4-VD1).

Используется компилятор AVRstudio.
Буду благодарен, я сам чайник, но хочу разобраться на конкретном примере.
Go to the top of the page
 
+Quote Post
ibiza11
сообщение Apr 4 2011, 17:34
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 13-01-09
Пользователь №: 43 304



Ассемблер:
-вектора прерываний
-инициализация портов
-порты ввода/вывода
все примеры есть в даташите
-программный антидребезг пока не рассматриваю, сейчас лучше аппаратный (кондер на выводы кнопки)
cool.gif
а если серьезно, то тебе в обучалку какую-нибудь или в раздел для начинающих.
Go to the top of the page
 
+Quote Post
domowoj
сообщение Apr 4 2011, 17:45
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



Вам необходимо программно избавиться от дребезга
контактов кнопки.
Если на пальцах ТО
Допустим PB1 подтянут к плюсу питания резистором, а кнопка "садит"
PB1 на землю.
Вы постоянно опрашиваете(читаете) этот порт, сигнал = "1".
Как только появился "0", т.е. кнопка нажата, вы не сколько
раз подряд прочитать этот ноль,только в этом случае ноль - есть ноль.
Аналогично определяется и отжатие.


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
Xenia
сообщение Apr 4 2011, 18:11
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Пин PB1 на контроллере этого типа является по совместительству счетным входом 1-го таймера (Timer/Counter1 External Counter Input).
Отсюда следует самый простой алгоритм решения задачи: Timer1 программируется в режим счета внешних импульсов, а младшие 4 бита двоичного счетчика этого таймера оправляются в порт зажигать светодиоды.

Косвенным свидетельством того, что задача решается именно так, является использование для кнопки именно PB1, несмотря на то, что порядок пинов, зажигающих светодиоды при этом нарушается: PB4, PB3, PB2, PB0, где PB1 пропущен. Если бы задача решалась периодическим опросом пина с кнопкой, то не имело бы смысла устраивать чехарду с порядком пинов.

Поскольку автор топика утверждает, что он в этом деле чайник, то очевидно, что данная задача чисто учебная. В противном случае автор должен был бы знать причину, по которой ему приспичило использовать для кнопки именно PB1, но тогда бы он и сам знал, как эта задача решатся.
Go to the top of the page
 
+Quote Post
ibiza11
сообщение Apr 4 2011, 18:33
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 13-01-09
Пользователь №: 43 304



Согласен с Ксенией, задача наверняка учебная) да и название кнопки SW3 наводит на мысль, что уже есть схема)

Сообщение отредактировал ibiza11 - Apr 4 2011, 18:34
Go to the top of the page
 
+Quote Post
nk@
сообщение Apr 4 2011, 19:42
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 8-12-09
Пользователь №: 54 138



Как уже стало понятно, решений может быть много wacko.gif Особенно, разнообразия вносит реализация антидребезга (тут у каждого свой рояль в кустах sm.gif)
Вы хоть уточните, на чем программка должна быть (C, ASM) и какой алгоритм Вы хотите - простой цикл, с использованием таймера+прерываний итп.
Go to the top of the page
 
+Quote Post
Marto
сообщение Apr 4 2011, 20:09
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 103
Регистрация: 17-05-09
Из: Ижевск
Пользователь №: 49 190



на ассемблере бы написал: ресет - старт инит, берем регистр куда будем плюсовать значение -> считываем состояние - нажато -> инкремент (+1) в регистр, далее выводим на порт -> возвращаемся к опросу кнопки. антидребезг задержкой и все.

Ах да, писать в порт значение - через битмаски

Сообщение отредактировал Marto - Apr 4 2011, 20:10


--------------------
Шизоидный холерик
Go to the top of the page
 
+Quote Post
Xenia
сообщение Apr 4 2011, 21:10
Сообщение #8


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(ibiza11 @ Apr 4 2011, 22:33) *
Согласен с Ксенией, задача наверняка учебная) да и название кнопки SW3 наводит на мысль, что уже есть схема)

Конечно, учебная. Это - лабораторная работа sm.gif
И вот уже три форума (включая наш) во всю над нею корпят:
http://forum.cxem.net/index.php?showtopic=84107
http://www.cyberforum.ru/assembler/thread268284.html
Go to the top of the page
 
+Quote Post
domowoj
сообщение Apr 5 2011, 01:47
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



"Не суди, да не судим будешь"

Никто не собирается писАть ТС програмульку,
а объяснить, напавить, ...


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 7 2011, 23:06
Сообщение #10


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Xenia @ Apr 5 2011, 00:10) *
Конечно, учебная. Это - лабораторная работа sm.gif
И вот уже три форума (включая наш) во всю над нею корпят:
http://forum.cxem.net/index.php?showtopic=84107

Мда... к чему котится мир, студент может зайти на форум, найти добродушного дурачка добрячка, готового на двух языках радостно решить учебную задачку, - в результате лаба сдана, знаний 0....
При этом добрячку написавшему программу, можно и "спасибо" не говорить... эх sad.gif

Всё таки еще раз убеждаюсь Electronix самый адекватный форум, тут народ хоть понимает, что студентам решение лаб/курсовиков на блюдечке подносить нельзя, иначе завтра не будет специалистов.

Xenia a14.gif за проницательность! еще в первом посте разгядели не только, что задачка учебная, но и суть работы - изучение работы таймера.

Цитата(domowoj @ Apr 5 2011, 04:47) *
Никто не собирается писАть ТС програмульку,

Не поверите, таки нашлись уникумы по ссылкам выше... написали на двух языках... думаю и на четырех бы написали.
Идтить колотить! sm.gif
Go to the top of the page
 
+Quote Post
nk@
сообщение Apr 8 2011, 19:14
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 8-12-09
Пользователь №: 54 138



bb-offtopic.gif Раз уж пошли разоблачения, то вставлю свои 3 копейки.
Преподаватели, которые дали это задание, Вы читаете наш форум? Отзовитесь! Если нет, то вы безнадежно отстали от жизни. Грош вам цена. Немедленно на пенсию.
Уже достали ваши выпускники с красными(!) дипломами, которые не могут даже месячный испытательный срок выдержать. Похоже система образования, которая в прежние времена была одной из лучших в мире, погибла (рухнула, сдохла). Обидно. Радует то, что остались еще жаждущие знаний молодые люди, которые самостоятельно грызут орешек знаний. Жаль, что современный университетский планктон ничего им дать не может.
Сорри, за оффтоп.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01449 секунд с 7
ELECTRONIX ©2004-2016