Описание: прога для кровати-качалки |
Поиск в теме | Версия для печати |
ОЛЕГ |
Отправлено: 12 Марта, 2009 - 11:08:31
|
Супермодератор
Сообщений всего: 1732
Дата рег-ции: Нояб. 2008
|
Мосфет я по Вашему, VCOM, совету взял IRLR024N. Висит на проводочках, чуть тепленький.
Я все уже объединил. Сегодня плату на лазернике печатать поеду. Так что, думаю, к выходным робозыбка будет готова.
Нарисовалась следующая проблема- забыл на ночь отключить питание. Приблуда всю ночь вслушивалась в тишину. А сейчас в микрофон гаркнул- активатор только один раз сработал, а по программе должен был 10. Перепрошил- все снова работает как положено. Думаю, что глюк в программе:
while (t < 10)
{ // Бесконечный цикл
if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D
t ++; // если 0, тогда значение t увеличиваем на 1
else
t = 0; // в противном случае t будет обнулен, сколько бы он ни был
_delay_ms(20); // ждем
}
Такой мегаконструкцией я измеряю длительность импульса.
Подарите мне, пожалуйста, кусочек кода, чтобы это таймером, по-джедайски, делать?
(Добавление)
Отбой, разобрался.
Ввиду того, что у меня все пока сделано на соплях, я не сделал подтягивающий резистор к RESET. Если отключить программатор (откуда идет "+" на RESET), МК каждый раз перезагружается, когда срабатывает активатор. Поэтому активатор и дергает только один раз. Подпайка резистора решила проблему. |
|
|
ОЛЕГ |
Отправлено: 13 Марта, 2009 - 02:18:02
|
Супермодератор
Сообщений всего: 1732
Дата рег-ции: Нояб. 2008
|
Белый Волк, спасибо, что уделили время, но, видать, я не джедай.
Я четыре часа сидел разбирался и самое большое что у меня получилось- это мигать светодиодиком с помощью Вашего кода.
Помогите мне, пожалуйста, разобраться.
Куда мне вставить строчку
(!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D
чтобы при условии продолжительности "0", скажем, 200мс, начинала выполняться вот такая последовательность, причем еще я не понял, как ограничить ее по времени (5 минут, скажем):
PORTC |= _BV(PC1); // подаем питание
_delay_ms(200); // ждем
PORTC &= ~_BV(PC1); // выключаем питание
_delay_ms(200); // ждем
Просто понимаете, та программа, которую написал я- она мне интуитивно понятна, поскольку я же ее и придумал. А здесь, вероятно, применяются какие-то прописные истины, которые нужно просто запомнить. Потому я и не въезжаю, как это работает.
Спасибо. |
|
|
|
Поиск в теме | Версия для печати |
Страниц (3): « 1 [2] 3 » |
« Программирование микроконтроллеров » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|
|
|