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

 
 
 
Reply to this topicStart new topic
> Вопрос по прерываниям.
ps1x
сообщение Mar 19 2006, 14:07
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Как реализовать одновременную работу индикатора (16 светодиодов для отображения времени в двоичном виде, т.е. 6 диодов на секунды, 6 на минуты и 4 на часы), кнопок и собствено подсчет времени. При этом я не втыкаю как управлять ключами на транзисторах. На сколько я понял -
нужно сделать прерывание по таймеру(быстрому, чтобы не было мерцания) и в прерывании включить первые 6 диодов, а затем вторые, т.е. если допустим светодиоды подключены к порту B а ключи к ногам 0 и 1 порта C то:

interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
PORTC.0=1;//включаем первые 6 диодов (секунды)
PORTB=sec;//собсно записываем на выход значение секунд.
delay_ms(100);//ждем чтобы они немного посветили
PORTC.0=0;//выключаем первые 6 диодов (секунды)
PORTC.1=1;//включаем вторые 6 диодов (минуты)
PORTB=min;//собсно записываем на выход значение минут.
delay_ms(100);//ждем чтобы они немного посветили
PORTC.1=0;//выключаем вторые 6 диодов (минуты)
}

- но в протеусе это не работает (((

а еще одно прерывание, делаем для подсчета времени, прерывание выполняется каждую секунду.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 19 2006, 14:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Откуда такая схема ? Бред полный. Включение транзисторов совершенно безумное, работать не будет. Даже если бы они включены были правильно, причем тут PC0, если линия управления на PC5 для секунд ?
Попробуйте что-нибудь вроде такого...
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 19 2006, 14:22
Сообщение #3


кекс
******

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



Хм... Да что и говорить схема серьезная. советую почитать теорию http://www.ssau.ru/books/electronic_keys/

ну и вдобавок что касается непосредственно AVR - имея практически полностью свободный порт D вы жертвуете пином Reset от которого зависить ISP программирование. После чего можно бежать покупать параллельный программатор или бежать покупать новый чип..
Go to the top of the page
 
+Quote Post
ps1x
сообщение Mar 19 2006, 14:35
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата
После чего можно бежать покупать параллельный программатор или бежать покупать новый чип..

- можно с этого места поподробнее?
Насколько я понял из Вашего высказывания если пин reset занят выводом то с чипом что-то произойдет, после чего, восстановить его можно только паралельным программатором?

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

и еще, как всеже организовать совместую работу:
1 подсчет времени
2 вывод на индикатор
3 настройка времени кнопками

???
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 19 2006, 14:45
Сообщение #5


кекс
******

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



Цитата(ps1x @ Mar 19 2006, 16:35) *
Цитата
После чего можно бежать покупать параллельный программатор или бежать покупать новый чип..

- можно с этого места поподробнее?
Насколько я понял из Вашего высказывания если пин reset занят выводом то с чипом что-то произойдет, после чего, восстановить его можно только паралельным программатором?

Чип переводится в режим программирования при подаче низкого уровня на пин Reset, после чего с некоторой задержкой требуется подать команду перевода в режим программирования по SPI (MISO/MOSI/SCK). Если Вы будете использовать пин Reset для своих нужд как обычный пин порта, то Reset будет отключен, и следовательно в режим программирования можно будет войти только c помощью высоковольтного программатора, а насколько мне известно mega8 поддреживает только параллельный высоковольный программатор.
Цитата
А есть у вас ссылка на похожее устройство, в котором используются ключи для смены активного сегмента?
DASM уже нарисовал..

Цитата
и еще, как всеже организовать совместую работу:
1 подсчет времени
2 вывод на индикатор
3 настройка времени кнопками

Подсчет времени - по прерыванию таймера.
Обновление индикатора (у вас индикатор динамический) по прерыванию от другого таймера.
Реакцию на кнопки - в основном цикле программы.
Go to the top of the page
 
+Quote Post
ps1x
сообщение Mar 19 2006, 15:44
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Всем спасибо за ответы.

А какие параметры задавать для таймера, вызывающего прерывание на индикацию? Т.е. какую частоту ему указывать? Или если знаете где можно прочитать про таймеры и прерывания в AVR (желательно на русском и поподробнее)?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:26
Рейтинг@Mail.ru


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