управление

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
олежек
Открыл глаза
Сообщения: 52
Зарегистрирован: Пн фев 15, 2010 11:25:30

управление

Сообщение олежек »

ну как вы уже знаете я полный профан в програмировании мк
особенно в написании программ
ну попробую вдруг подскажут
значит такая задача

мк атини 2313 (их у меня много)
надо сделать так чтобы при попадании на один из потров(любой) минуса
на другом порте появлялась 1 на 15 секунд
и даже при пропадании минуса единичка не пропадала
пишу в баскоме
прошиваю в атмеле

спасибо заранее
лучше сделать без правки фьюзов
15 секунд время произвольное, примерное
Реклама
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: управление

Сообщение Meteor »

Что есть "минус"?
Со всем остальным проще - моностабильный элемент описываете.
Я бы пошел по такому пути:
переменная (регистр) в которой указывается состояние 0-не было подачи сиганла, 1 - была подача сигнала.
затем N переменных под каждый бит порта (портов) в которых указываем время работы именно ээтого бита порта.
Ну далее тупое сравнение и выключение по превышению порога.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Реклама
олежек
Открыл глаза
Сообщения: 52
Зарегистрирован: Пн фев 15, 2010 11:25:30

Re: управление

Сообщение олежек »

нормально
жаль только я в этом ничего не понял
мне прошше когда это будет выглядеть в виде программы
минус-это кратковременное попадание минуса на порт
ну я не знаю как еше сказать

я думал через ресет сделать
но не получается
потому что минус(естественно через резистор 4.7 ком) может попадать несколько раз
но надо чтобы за время выполнения программы 15 секунд
мк больше не реагировал на порт на который попадает минус
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: управление

Сообщение Engineer_Keen »

Какой такой минус? Может все-таки логический ноль, минус на МК подавать не стоит...
В главном цикле проверяете порт, если там вдруг появился ваш "минус" включаете "1" в другом порте, делаете задержку 15 сек и выключаете "1". В чем сложность то?
Реклама
Эиком - электронные компоненты и радиодетали
олежек
Открыл глаза
Сообщения: 52
Зарегистрирован: Пн фев 15, 2010 11:25:30

Re: управление

Сообщение олежек »

сложность в том что я не знаю как это написать на программном языке
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: управление

Сообщение otest »

олежек писал(а):сложность в том что я не знаю как это написать на программном языке
а как это понимать ?
пишу в баскоме
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: управление

Сообщение Kavka »

сложность в том что я не знаю как это написать на программном языке
:shock:
Если время "так себе, примерно 15 сек.", да и с микроконтроллерами и программированием, мягко говоря, "не очень", тогда может на ТТЛ/КМОП-рассыпухе или одновибраторах сделать...

ЗЫ: Помогают тут обычно советом, код за вас писать никто не будет. :)
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
олежек
Открыл глаза
Сообщения: 52
Зарегистрирован: Пн фев 15, 2010 11:25:30

Re: управление

Сообщение олежек »

$regfile = «atini 2313.dat» 'говорим компилятору что у нас мега8
$crystal = 8000000
Config Portb.1 = Output ' конфигурируем порт B.1 как выход
Config Portd.1 = Input ' конфигурируем порт B.1 как вход
Do ' начало бесконечного цикла
Set Portb.0 'подключаем Portb.1 к положительному выводу источника питания
Waitms 500 'ждем пол секунды
Reset Portb.0 'подключаем Portb.1 к отрицательному выводу источника питания
Loop


как сюда кнопку подключить? и включить внутренний резистор
пожалуйста
Аватара пользователя
-==MAXCELERON==-
Встал на лапы
Сообщения: 96
Зарегистрирован: Сб авг 15, 2009 07:31:56
Откуда: г. Кемерово

Re: управление

Сообщение -==MAXCELERON==- »

незнаю как в баскоме, а в winavr будет так:

Код: Выделить всё

#include <avr/interrupt.h>
#include <util/delay.h>
#define F_CPU 8000000UL     



int main(void){     //Главная функция
DDRC = 0xff;   делаем весь порт С - выходом
PORTD = 0xff;  подаем на порт D подтяжку

while(1){             зацикливаем
                          проверяем порт D
if (PORTD != 0xff){      если хоть на одном из выводов порта D появится 0
PORTC = 0xff;            то подаем на все выводы порта C - 1
_delay_ms (15000);       ждем 15000 мсек
PORTC = 0x00;            обнуляем порт С
}
                        и опять заново проверяем, что там у нас с портом D
}
}  //********************************************** Конец главной функции
Вот так все просто :dont_know:
олежек
Открыл глаза
Сообщения: 52
Зарегистрирован: Пн фев 15, 2010 11:25:30

Re: управление

Сообщение олежек »

ну все правильно
толко вместо порта с порт в
и как бы это в васкоме
я не умею в winavr компилировать
Аватара пользователя
РадиоЛоматель
Мудрый кот
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)
Контактная информация:

Re: управление

Сообщение РадиоЛоматель »

-==MAXCELERON==- писал(а):незнаю как в баскоме, а в winavr будет так:
Я, конечно, не знаю всех требований автора, но так делать не стоит, потому что если импульс прийдет во время задржки 15 секунд, на него никто не обратит внимание. К тому же, если он будет крайне коротким (примерно с команду перехода длительностью) он тоже будет пропущен. Значительно лучше сделать через прерывания и таймеры, но понятно, что это сложновато для автора.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
олежек
Открыл глаза
Сообщения: 52
Зарегистрирован: Пн фев 15, 2010 11:25:30

Re: управление

Сообщение олежек »

именно так и надо
чтобы при включении порта вывода вход игнорировался полностью
пока не пройдет 15 сек
потом снова проверяет порт входа

все правильно только как мне в васкоме написать
олежек
Открыл глаза
Сообщения: 52
Зарегистрирован: Пн фев 15, 2010 11:25:30

Re: управление

Сообщение олежек »

чего то у меня ошибки пишет по 1,2 и 7 строке

пытаюсь откомпилировать и зашить через авр студия 4
Аватара пользователя
-==MAXCELERON==-
Встал на лапы
Сообщения: 96
Зарегистрирован: Сб авг 15, 2009 07:31:56
Откуда: г. Кемерово

Re: управление

Сообщение -==MAXCELERON==- »

олежек писал(а):чего то у меня ошибки пишет по 1,2 и 7 строке

пытаюсь откомпилировать и зашить через авр студия 4
8) хммммм, так в avrstudio и хидеры другие и в другом месте лежат :idea:
Аватара пользователя
-==MAXCELERON==-
Встал на лапы
Сообщения: 96
Зарегистрирован: Сб авг 15, 2009 07:31:56
Откуда: г. Кемерово

Re: управление

Сообщение -==MAXCELERON==- »

олежек писал(а): я не умею в winavr компилировать
чего там не уметь tools / make all
олежек
Открыл глаза
Сообщения: 52
Зарегистрирован: Пн фев 15, 2010 11:25:30

Re: управление

Сообщение олежек »

ну правильно
только hex не выходит
а програматор не подключается к вин авр
надо паять 6 проводков и через ком порт шить
програматор у меня пишет в авр студии hex файлы
програматор скт 500 через усб порт
Аватара пользователя
-==MAXCELERON==-
Встал на лапы
Сообщения: 96
Зарегистрирован: Сб авг 15, 2009 07:31:56
Откуда: г. Кемерово

Re: управление

Сообщение -==MAXCELERON==- »

олежек писал(а):ну правильно
только hex не выходит
все там выходит
если что вот hex
Вложения
Архив ZIP - WinRAR.zip
(262 байт) 188 скачиваний
олежек
Открыл глаза
Сообщения: 52
Зарегистрирован: Пн фев 15, 2010 11:25:30

Re: управление

Сообщение олежек »

$regfile = «atini 2313.dat» 'говорим компилятору что у нас мега8
$crystal = 8000000
Config Portb.1 = Output ' конфигурируем порт B.1 как выход
Config Portd.1 = Input ' конфигурируем порт B.1 как выход
Do
If Portd.1 = 0 Then ' УСЛОВИЕ - если на 2-й ножке порта С низкий логический уровень то...
Set Portb.1 'подключаем Portb.1 к положительному выводу источника питания
Waitms 500 'ждем пол секунды
Reset Portb.1
Else ' в противном случае...
Portb.0 = 0 ' устанавливаем на ножке 0 порта В низкий логический уровень (светодиод не горит)
End If'конец условия
Loop
End ' начало бесконечного цикла


вот так получится или нет?
на коментарии внимания не обрашайте
олежек
Открыл глаза
Сообщения: 52
Зарегистрирован: Пн фев 15, 2010 11:25:30

Re: управление

Сообщение олежек »

-==MAXCELERON==- писал(а):
олежек писал(а):ну правильно
только hex не выходит
все там выходит
если что вот hex
спасибо за файл
только время еше не подобрано
а с hex мне уже вообше ничего не сделать
олежек
Открыл глаза
Сообщения: 52
Зарегистрирован: Пн фев 15, 2010 11:25:30

Re: управление

Сообщение олежек »

$regfile = «atini 2313.dat» 'говорим компилятору что у нас мега8
$crystal = 8000000
Config Portb.1 = Output ' конфигурируем порт B.1 как выход
Config Portd.1 = Input ' конфигурируем порт B.1 как выход
Do
If Portd.1 = 0 Then ' УСЛОВИЕ - если на 2-й ножке порта С низкий логический уровень то...
Portb.1=1 'подключаем Portb.1 к положительному выводу источника питания
Waitms 500 'ждем пол секунды
Portb.1=0
Else ' в противном случае...
Portb.0 = 0 ' устанавливаем на ножке 0 порта В низкий логический уровень (светодиод не горит)
End If'конец условия
Loop
End ' начало бесконечного цикла

вот так не получилось
светодиод горит постоянно
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»