сигнализатор наличия материала

Обсуждаем цифровые устройства...
Ответить
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Пт фев 18, 2011 17:53:20
Откуда: Мариуполь

Сообщение fill31 »

Добрый вечер всем!
На предприятии попросили сделать прибор наличия материала в бункере.
Решил собрать сее устройство на tiny 2313, так как этот контроллер самый распространённый
в программировании я новичёк.
Принцип работы такой
Кода на PD0 приходит 1 то на PC4 будет 1 а на PB5 будет 0.
и наоборот Когда на PD0 будет 0 то на PC4 будет 0 а на PB5 будет 1.\
Схему прилагаю
Вложения
clip_image002.jpg
(10.17 КБ) 344 скачивания
ЛУЧШЕ ГНАТЬ ЧЕМ БЫТЬ ГОНИМЫМ!!!
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Пт фев 18, 2011 17:53:20
Откуда: Мариуполь

Сообщение fill31 »

Пишу в Code vision 4
если можна то с коментариями к коду,
за ранее спасибо
ЛУЧШЕ ГНАТЬ ЧЕМ БЫТЬ ГОНИМЫМ!!!
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Пт фев 18, 2011 17:53:20
Откуда: Мариуполь

Сообщение 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;

};

}
}
ЛУЧШЕ ГНАТЬ ЧЕМ БЫТЬ ГОНИМЫМ!!!
orinoko

Сообщение orinoko »

Но зачем для такой задачи целый МК ? Вот не понимаю. Тут достаточно одного элемента НЕ, ну двух (одним сформировать сигнал с оптрона) - всё равно в одном корпусе их шесть.
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Пт фев 18, 2011 17:53:20
Откуда: Мариуполь

Сообщение fill31 »

это проверочная модель. Смысл в чём:
Я хочу посмотреть как контроллер будет работать с щуповым датчиком, если всё ок то можно их будет нацеплять на все порты
ЛУЧШЕ ГНАТЬ ЧЕМ БЫТЬ ГОНИМЫМ!!!
Реклама
orinoko

Сообщение orinoko »

И всё равно при такой логике работы целесообразнее использовать цифровые микросхемы, даже если предположить, что каналов будет десяток.Надёжность схем на жёсткой логике всегда выше, чем на МК.
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Пт фев 18, 2011 17:53:20
Откуда: Мариуполь

Сообщение fill31 »

В принципе наверно лучше сделать на логике.

А сам код правильно написан?
ЛУЧШЕ ГНАТЬ ЧЕМ БЫТЬ ГОНИМЫМ!!!
orinoko

Сообщение orinoko »

fill31 писал(а):В принципе наверно лучше сделать на логике.

А сам код правильно написан?
Похоже что да. Но я не сишник, пишу на асме.
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Пт фев 18, 2011 17:53:20
Откуда: Мариуполь

Сообщение fill31 »

А то чёто не работает
ЛУЧШЕ ГНАТЬ ЧЕМ БЫТЬ ГОНИМЫМ!!!
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Пт фев 18, 2011 17:53:20
Откуда: Мариуполь

Сообщение fill31 »

Ребята ,помогите дописать прогу,реально замучался
ЛУЧШЕ ГНАТЬ ЧЕМ БЫТЬ ГОНИМЫМ!!!
Мучитель микросхем
Аватара пользователя
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти

Сообщение DimanVIP »

А что там может не работать?

Опишите конкретнее.
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
Контактная информация:
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Пт фев 18, 2011 17:53:20
Откуда: Мариуполь

Сообщение 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);

};
}
ЛУЧШЕ ГНАТЬ ЧЕМ БЫТЬ ГОНИМЫМ!!!
Мучитель микросхем
Аватара пользователя
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти

Сообщение 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;
  }
}
}
Этот код работает. Разве что для суровой реальности осталось анти дребезг добавить. И не забыть подтянуть необходимым образом входа (лучше внешними резюками).
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
Контактная информация:
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Пт фев 18, 2011 17:53:20
Откуда: Мариуполь

Сообщение fill31 »

ага! понял, скорее это из за подтягивающих резисторов,



ПАСИБО
ЛУЧШЕ ГНАТЬ ЧЕМ БЫТЬ ГОНИМЫМ!!!
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Пт фев 18, 2011 17:53:20
Откуда: Мариуполь

Сообщение fill31 »

почемуто при отпускании кнопки не срабатывает обратно
ЛУЧШЕ ГНАТЬ ЧЕМ БЫТЬ ГОНИМЫМ!!!
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Пт фев 18, 2011 17:53:20
Откуда: Мариуполь

Сообщение fill31 »

как прописать что бы функция возвращала предыдущее состояние когда отсутствует единица на входе
ЛУЧШЕ ГНАТЬ ЧЕМ БЫТЬ ГОНИМЫМ!!!
Мучитель микросхем
Аватара пользователя
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти

Сообщение DimanVIP »

Все правильно, дело в резисторах.
Соберите модель так:
Изображение

При нажатии на кнопку, ножка МК оказывается подключенной к земле (лог 0).
При отпускании кнопки, ножка через подтягивающий резистор подключается к плюсу (лог 1).
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
Контактная информация:
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Пт фев 18, 2011 17:53:20
Откуда: Мариуполь

Сообщение fill31 »

сёдня залил в железо, всё ок! видать протэус так эмулирует
ЛУЧШЕ ГНАТЬ ЧЕМ БЫТЬ ГОНИМЫМ!!!
Мучитель микросхем
Аватара пользователя
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти

Сообщение DimanVIP »

Такие банальные, простые вещи в Протосе эмулируются отлично.
Что собственно, у меня и происходило.

Пройдите для начала хоть какой-нибудь курс по МК. Хотя бы ЭТОТ.
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
Контактная информация:
Ответить

Вернуться в «Цифровая техника»