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

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

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

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



Блок управления для Запорожца

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

1

Здравствуйте!
У меня не получается сделать прерывание и по фронту и по спаду прерывание INT0 (atmega325). Portd.0-выход подтверждения зажигания,Portd.1 -вход INT0.
Требуется:
1.При первом включении-инициализировать дисплей, посмотреть концевики, и в зависимости от состояния концевиков-рисунок на дисплей.(это сделано)
2.Посмотреть по входу Int0(зажигание). Если =0 то медленно погасить подсветку дисплея, и уснуть.
3. Проснуться при фронте на INT0(зажигание включено) и продолжить. Но....
Есть одно НО. Если началось движение механизма нужно блокировать отключение замка зажигания.

On Int0 Ignision
Config Int0 = Change                                       
Enable Interrupts
Enable Int0
Portd.0 = 0

---

Ignision:
  Disable Interrupts
  Disable Int0
-----------------код--------
  Enable Interrupts
Enable Int0
Return

0

2

А инициализация порта на вход есть?
Сигнал смотрели, точно дергается нога?

0

3

да есть,  Config Portd.0 = Output
по rising работает

Отредактировано Каримов (2013-09-12 17:36:14)

0

4

сбрасывать бит прерывания нужно "Gifr"

0

5

в вашем МК он похоже по другому называется

0

6

В примерах его не трогают.

0

7

как раз в рабочих примерах нашел, вот похоже ваш случай:

Код:
Eifr.intf0 = 1
Enable Int0
Return

http://members.home.nl/bzijlstra/softwa … z610wi.htm

0

8

А можно сделать так?
По входу portd.1 (он же INT0) считать bit. Если =0 то .............
Если =1 (то есть замок зажигания включен) portd.0 =1(подпорка зажигания) и идти выполнять движение механизма. Если при этом выполнении зажигание уходит в ноль-движение механизма НЕ ПРЕКРАЩАТЬ. И после окончания движения-уйти в сон.
И как это можно?

0

9

Если у вас нет критических временных рамок и мощности МК хватает, то можно так.
Прерывание используется для: моментального срабатывания, измерений, событий происходящих параллельно с основной задачи...

0

10

Времянных критериев нет. Надо заставить проц уснуть когда мне надо, и разбудить при фронте на INT0
Можете набросать?

0

11

Нет ибо:

- не знаю всей задачи и нюансов (вообще не понятно зачем использовать такой большой МК для примитивной функции ключа);
- нет такого железа на руках (а пальцем в небо писать как-то..);
- лень;
- на халяву за всех коды не пишу;
- стараюсь помогать по мере труда самого оппонента.

:D

0

12

буду пробывать

Здравствуйте. Сделал я все таки без "спящего" режима. Получилось просто:
Управляемая Енка на 5 вольт. При поступлении на ее управляющий вход "зажигания"-подается Питание на МК, и он через вывод порта+диоды подпрягает этот вход Енки. И в это же время "зажигание" поступает на входной порт МК(для проверки замка зажигания).
Вот и получается: Если включить, а затем выключить зажигание -то схема останется включенной до НУЖНОГО МНЕ или МЕХАНИЗМА нужного момента.

Отредактировано Каримов (2013-09-22 12:24:08)

0

13

я бы, честно говоря, с учётом потребляемого тока мегой вообще плюнул на её отключение... у меня в дроволёте(ТАЗ-2112) мозги, магнитола, сигнашка, комбинация приборов и прочая фигня жрут столько, сколько из бедной меги со всех 4х портов не вытянуть ))

Отредактировано phantom36 (2013-09-23 23:54:48)

0