Здравствуйте!
Работаю на СИ , CodeVisionAVR. Базовые понатия есть. Подскажите можно ли вкл. два независимых цыкла в ATMEGA8?
Т.е. : при нажатии одной кнопки вкл. постоянное мигание светодиода и мигание на некоторое время.
elmot
Отправлено: 10 Августа, 2012 - 14:38:06
Гуру
Сообщений всего: 1141
Дата рег-ции: Дек. 2010
Что такое цыкл?
===============================
Цыган на цыпочках цыкнул на цыпленка.
Slava143
Отправлено: 10 Августа, 2012 - 16:52:37
Лейтенант
Сообщений всего: 34
Дата рег-ции: Июль 2012
[quote=elmot]Что такое цыкл?
===============================
Как можно запустить 2 бесконечных цыкла при нажатии на одну кнопку?
while(1)
{ тело цыкла }
anar
Отправлено: 10 Августа, 2012 - 18:04:39
Главнокомандующий
Сообщений всего: 441
Дата рег-ции: Июнь 2011
Пишется цикл.
cjAndrews
Отправлено: 10 Августа, 2012 - 21:28:17
Лейтенант
Сообщений всего: 25
Дата рег-ции: Авг. 2012
Перестаньте стебатьться! Как будто не знаете что такое цыкл и как он организуется в разных языках?
Это прерывания Slava143, в мега8 можно их сделать можно вроде 8 (не странно-ли?), еще это называют вытясняющей (корпоротивной) многозадачностью. Но это враьё
Это обычное знание асма и стэка, - удачи!
Predator
Отправлено: 10 Августа, 2012 - 21:32:57
Супермодератор
Сообщений всего: 1307
Дата рег-ции: Июль 2012
ну докопались...
я конечно тоже сторонник русскоязычного изьяснения, но по делу то тоже можно что-нибудь написать.
запустить 2 цикла не проблема, проблема между ними переключаться.
как вариант можно одним крутится постоянно, а исполнение другого периодически совершать по прерыванию от таймера, но тогда второй не должен быть бесконечным: таймер дернулся - один (несколько) проход по телу совершился.
cjAndrews
Отправлено: 10 Августа, 2012 - 21:57:28
Лейтенант
Сообщений всего: 25
Дата рег-ции: Авг. 2012
в авр обычно три задачи заложено. Одна основная и две по прерыванию от таймера (сейчас nest полезет ругаться, ведь еще еще вачдог и ризет)
Ответ: Можно, читайте асм для авр для своего мк. (Добавление)
основной цикл можно пустым сделать, всю многозадачность будут решать прерывания между собой,Вам решать
Нестандарт
Отправлено: 11 Августа, 2012 - 20:07:40
Рядовой
Сообщений всего: 6
Дата рег-ции: Авг. 2012
Два основных цикла одновременно работать не могут. Но если вам нужно одновременно запустить два процесса , то это можно (сильно зависит от того что это за процессы).
Если вам нужно мигать двумя светодиодами (двумя пинами) , но с разным периодом , то тут все просто . Делаете таймер , сводите его значения к милисекундам (секундам и т.д.) и уже , по значению таймера "дергаете" ногами МК.
Более сложные процессы можно производить по переменно , но с большой частотой их смены.
А вообще , все сильно зависит от того что вы делаете и для чего. (Добавление)
Цитата:
nest полезет ругаться
nestа здесь уже пол года как нет.
Predator
Отправлено: 12 Августа, 2012 - 18:57:12
Супермодератор
Сообщений всего: 1307
Дата рег-ции: Июль 2012
я тут озгами пораскинул:
с таймером вообще можно любое колличество процессов запустить, а по прерыванию запускать орбитра, который будет отдавать кому-нибудь управление (по очереди или еще как...)
Slava143
Отправлено: 12 Августа, 2012 - 20:05:07
Лейтенант
Сообщений всего: 34
Дата рег-ции: Июль 2012
Что то понял, а что не очень.Спс за Учение Русго Языка)
Идея такова:
Это типа охранки на 4 шлейфа. с шлейфами я разобрался и написал все с ЦИКЛАМИ for, очень громоздко но по другому не умею.
- есть кнопка при нажатии которой ставим под охрану(кнопку сделал)
- есть светодиод который показывает статус, под охраной или нет.(чето не получается)
- есть пищалка(отдельная схема) на которую при сработке одного из шлейфов подаем лог 0, а при 1 она молчит.(не получаеться)
Что подскажите?Или есть вопросы?
Нестандарт
Отправлено: 12 Августа, 2012 - 20:30:31
Рядовой
Сообщений всего: 6
Дата рег-ции: Авг. 2012
Вообще программа элементарная.
По нажатию кнопки пишем в переменную 1 (если до этого она была 0) или наоборот. Пишем 0 если до этого она была 1. Таким образом , по нажатию кнопки , будет происходить ивертация (или инвертирование ?) переменной.
Если переменная 1 - включаем светодиод и запускаем подпрограмму опроса шлейфов и включения/выключения пищалки.
Если переменная 0 - гасим все и опрашиваем только кнопку.
Для того чтобы пищалка (при срабатывании шлейфа) замолкала только после снятия с "охраны" можно ввести еще одну такую переменную.
По сигналу шлейфа писать туда 1 (пищалка пищит при значении переменной 1) , а по нажатию кнопки писать 0 (пищалка затыкается).
Всю эту конструкцию можно построить на одних if else.
На чистом СИ не пишу , так что исходник набросать не смогу.
Slava143
Отправлено: 14 Августа, 2012 - 00:12:51
Лейтенант
Сообщений всего: 34
Дата рег-ции: Июль 2012
Нууу что то получилось, но почему то микроконтроллер греется! Может я что то не то настроил? или это нормально?
nestandart
Отправлено: 14 Августа, 2012 - 03:17:57
Супер-модератор
Сообщений всего: 1490
Дата рег-ции: Сент. 2010
Вы дали напругу питание (или на один из портов) самого МК более 6 вольт.
Или (вероятнее) превысили максимальный ток пина МК (40мА) , подключив к нему мощную нагрузку.
Slava143
Отправлено: 14 Августа, 2012 - 23:48:58
Лейтенант
Сообщений всего: 34
Дата рег-ции: Июль 2012
Вот схема подключения
- когда шлейфы замкнутые то светодиоды не светятся и тогда микроконтроллер греется
- когда шлейфы разомкнутые то светодиоды светятся и мега8 не греется
- кнопка ставит под охрану Прикреплено изображение
nestandart
Отправлено: 15 Августа, 2012 - 08:09:29
Супер-модератор
Сообщений всего: 1490
Дата рег-ции: Сент. 2010
Что за датчки на шлейфах ? как собраны шлейфы ? какой сигнал с них идет ?
Или шлейфы , в данном случае , это просто кнопки ?
Возможно ваши входы сконфигурированы программно как выходы.
Вариантов много. Нужно мерить что идет со шлейфов.
Первая же ошибка - нет подтяжек на входах шлейфов.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.