Страница 1 из 1
сигнализатор наличия материала
Добавлено: Вт авг 16, 2011 19:27:55
fill31
Добрый вечер всем!
На предприятии попросили сделать прибор наличия материала в бункере.
Решил собрать сее устройство на tiny 2313, так как этот контроллер самый распространённый
в программировании я новичёк.
Принцип работы такой
Кода на PD0 приходит 1 то на PC4 будет 1 а на PB5 будет 0.
и наоборот Когда на PD0 будет 0 то на PC4 будет 0 а на PB5 будет 1.\
Схему прилагаю
Re: сигнализатор наличия материала
Добавлено: Вт авг 16, 2011 19:30:41
fill31
Пишу в Code vision 4
если можна то с коментариями к коду,
за ранее спасибо
Re: сигнализатор наличия материала
Добавлено: Вт авг 16, 2011 19:54:46
fill31
Я понимаю что не правильно, но подскажите где косяки
void main (void)
{
PORTD=0x00;
DDRD=0x00;
PORTC=0xFF;
DDRC=0xFF;
PORTB=0xFF;
DDRC=0xFF;
while (1)
{
if (PIND==1)
{
PORTC.4=1;
PORTB.5=0;
}
else
{
PORTC.4=0;
PORTB.5=1;
};
}
}
Re: сигнализатор наличия материала
Добавлено: Вт авг 16, 2011 20:10:26
orinoko
Но зачем для такой задачи целый МК ? Вот не понимаю. Тут достаточно одного элемента НЕ, ну двух (одним сформировать сигнал с оптрона) - всё равно в одном корпусе их шесть.
Re: сигнализатор наличия материала
Добавлено: Вт авг 16, 2011 20:15:11
fill31
это проверочная модель. Смысл в чём:
Я хочу посмотреть как контроллер будет работать с щуповым датчиком, если всё ок то можно их будет нацеплять на все порты
Re: сигнализатор наличия материала
Добавлено: Ср авг 17, 2011 08:32:01
orinoko
И всё равно при такой логике работы целесообразнее использовать цифровые микросхемы, даже если предположить, что каналов будет десяток.Надёжность схем на жёсткой логике всегда выше, чем на МК.
Re: сигнализатор наличия материала
Добавлено: Ср авг 17, 2011 09:50:38
fill31
В принципе наверно лучше сделать на логике.
А сам код правильно написан?
Re: сигнализатор наличия материала
Добавлено: Ср авг 17, 2011 12:38:10
orinoko
fill31 писал(а):В принципе наверно лучше сделать на логике.
А сам код правильно написан?
Похоже что да. Но я не сишник, пишу на асме.
Re: сигнализатор наличия материала
Добавлено: Ср авг 17, 2011 12:41:57
fill31
А то чёто не работает
Re: сигнализатор наличия материала
Добавлено: Ср авг 17, 2011 15:13:51
fill31
Ребята ,помогите дописать прогу,реально замучался
Re: сигнализатор наличия материала
Добавлено: Ср авг 17, 2011 16:26:46
DimanVIP
А что там может не работать?
Опишите конкретнее.
Re: сигнализатор наличия материала
Добавлено: Ср авг 17, 2011 16:33:16
fill31
Да вот моделирую в протеусе ,а оно не так как нада работает. нажимаю кнопку раз оно срабатывает,отпускаю кнопку оно сотаётся без изменений. нажимаю ещё раз оно меняется. как сделать что бы при отпуске кнопки оно срабатывало?
вот код
//сушка новая
#include <tiny2313.h>
#include <delay.h>
void main(void) {
DDRD=0b00000000;
PORTD=0b00000001;
DDRB=0b11111111;
PORTB=0b00100000;
while(1)
{
while (PIND.0==0){}
delay_us(200);
if (PINB.4==1)
{ PORTB.4=0;PORTB.5=1;}
{ PORTB.4=1;PORTB.5=0;}
delay_us(200);
};
}
Re: сигнализатор наличия материала
Добавлено: Ср авг 17, 2011 17:35:57
DimanVIP
Код: Выделить всё
#include <tiny2313.h>
void main(void)
{
// Input/Output Ports initialization
// Port A initialization
// Func2=Out Func1=Out Func0=Out
// State2=0 State1=0 State0=0
PORTA=0x00;
DDRA=0x07;
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;
// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=P State5=P State4=P State3=P State2=P State1=P State0=P
PORTD=0x7F;
DDRD=0x00;
while (1){
if (PIND.0 == 1){
PORTB.4 = 1;
PORTB.5 = 0;
}
else{
PORTB.4 = 0;
PORTB.5 = 1;
}
}
}
Этот код работает. Разве что для суровой реальности осталось анти дребезг добавить. И не забыть подтянуть необходимым образом входа (лучше внешними резюками).
Re: сигнализатор наличия материала
Добавлено: Ср авг 17, 2011 18:21:35
fill31
ага! понял, скорее это из за подтягивающих резисторов,
ПАСИБО
Re: сигнализатор наличия материала
Добавлено: Ср авг 17, 2011 21:07:08
fill31
почемуто при отпускании кнопки не срабатывает обратно
Re: сигнализатор наличия материала
Добавлено: Ср авг 17, 2011 21:10:22
fill31
как прописать что бы функция возвращала предыдущее состояние когда отсутствует единица на входе
Re: сигнализатор наличия материала
Добавлено: Ср авг 17, 2011 22:30:19
DimanVIP
Все правильно, дело в резисторах.
Соберите модель так:
При нажатии на кнопку, ножка МК оказывается подключенной к земле (лог 0).
При отпускании кнопки, ножка через подтягивающий резистор подключается к плюсу (лог 1).
Re: сигнализатор наличия материала
Добавлено: Чт авг 18, 2011 21:33:11
fill31
сёдня залил в железо, всё ок! видать протэус так эмулирует
Re: сигнализатор наличия материала
Добавлено: Чт авг 18, 2011 22:12:14
DimanVIP
Такие банальные, простые вещи в Протосе эмулируются отлично.
Что собственно, у меня и происходило.
Пройдите для начала хоть какой-нибудь курс по МК. Хотя бы
ЭТОТ.