кодовый замок

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 17
Зарегистрирован: Вт ноя 12, 2013 00:02:24

Сообщение camecadze333 »

собрал схему кодового замка . не могу никак понять в чем дело проблема в тои что схема не работает либо из за прошивки либо из за фьюзов . источник тут http://radioparty.ru/device-avr/49-codzamok-attiny2313
как шьется мк ? разжуйте пожалуйста просто начинающий .
Реклама
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Ср апр 24, 2013 22:27:51

Сообщение andrikll »

Для помощи Вам нужна следующая инфо: Как называется ваш программатор, прошивка модернизировалась или используется как есть? В описании к устройству указывается что прошивка и файл данных записываются отдельно (скачать файлы не смог, или выложите здесь или укажите прямую ссылку)
Какие ошибки возникают при прошивке (если возникают)?
Реклама
Родился
Сообщения: 17
Зарегистрирован: Вт ноя 12, 2013 00:02:24

Сообщение camecadze333 »

Последовательный программатор построенный на буферной мкросхеме 74hc244 прошивка не модернизировалась такая и есть которая есть на сайте . Проблемма с том что кнопки все реагируют на нажатие . Т.е. светодиод показывает что кнопки нажимаются . Только они и делают что только нажимаются больше ни чего не происходит .пароль не запоминает управляющего сигнала на транзистор нету магнит не работает кнопка открыть закрыть двери не работают
Родился
Сообщения: 17
Зарегистрирован: Вт ноя 12, 2013 00:02:24

Сообщение camecadze333 »

здесь прошивки которые прилагаются на сайте
49 (1).rar
прошивка и печатка на замок
(10.13 КБ) 118 скачиваний
Реклама
Эиком - электронные компоненты и радиодетали
Потрогал лапой паяльник
Сообщения: 342
Зарегистрирован: Чт июн 30, 2011 10:10:23
Откуда: лютая Россия

Сообщение WaL97 »

Решил попробовать что-то на практике сделать. И что-то как-то я заступорился.
Пишу кодовый замок.
В моей теории мы заполняем массив 4 цифрами с клавиатуры, затем сверяем его с "эталоном", и, если все совпадает, открываем дверь. Но оно открывает дверь, если ввести любые четыре символа.
ткните пожалуйста носом :cry:
Спойлер

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

#include <90s2313.h>
#include <delay.h>



void main(void)
{
 
DDRB=0x00;
DDRD=0xF8;
PORTB=0xFF;
PORTD=0x07; 
while (1)
{
int pas[]={2,3,4,5}; //правильный пароль
int npas[4];       //введеный пароль
int i=0;

while(i<4)  {

if(PINB.0==0)    //если PB0 на массу, то выполняем {это}
{
npas[i]=0;
i=i+1;
delay_ms(50);
};

if(PINB.1==0)     //если PB1 на массу, то выполняем {это}
{
npas[i]=1;
i=i+1;
delay_ms(50);
};

if(PINB.2==0)     //если PB2 на массу, то выполняем {это}
{
npas[i]=2;
i=i+1;
delay_ms(50);
};

if(PINB.3==0)     //если PB3 на массу, то выполняем {это}
{
npas[i]=3;
i=i+1;
delay_ms(50);
};

if(PINB.4==0)     //если PB4 на массу, то выполняем {это}
{
npas[i]=4;
i=i+1;
delay_ms(50);
};

if(PINB.5==0)     //если PB5 на массу, то выполняем {это}
{
npas[i]=5;
i=i+1;
delay_ms(50);
};

if(PINB.6==0)     //если PB6 на массу, то выполняем {это}
{
npas[i]=6;
i=i+1;
delay_ms(50);
};

if(PINB.7==0)     //если PB7 на массу, то выполняем {это}
{
npas[i]=7;
i=i+1;
delay_ms(50);
};

if(PIND.0==0)     //если PD0 на массу, то выполняем {это}
{
npas[i]=8;
i=i+1;
delay_ms(50);
};

if(PIND.1==0)     //если PD1 на массу, то выполняем {это}
{
npas[i]=9;
i=i+1;
delay_ms(50);
};


};


if ((npas[0]=pas[0])&&(npas[1]=pas[1])&&(npas[2]=pas[2])&&(npas[3]=pas[3]))
{
PORTD.3=1;
delay_ms(100);  };
       


 
 
};
}
[b]— Да не боись, всего двенадцать вольт… и восемьсот ампер.[/b]
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Сообщение alex_ »

Вот смотри здесь правильно
PIND.0==0
здесь нет
npas[0]=pas[0]
Сообразил в чём дело? :roll:
Кстати сказать 90s2313 уже не выпускают зачем на неё писать прошивку, сейчас идут Tiny2313
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

WaL97 писал(а):В моей теории мы заполняем массив 4 цифрами с клавиатуры, затем сверяем его с "эталоном", и, если все совпадает..
.. а на практике все будет иначе :) , например:
1) что будет если одновременно нажать 2 и более кнопок ?
2) ..по-хорошему опрашивать кнопки лучше всего в прерывании по таймеру, иначе весь ресурс МК сведется к работе delay_ms()
3) в С не нужно путать "=" - присваивание и сравнение "=="
Потрогал лапой паяльник
Сообщения: 342
Зарегистрирован: Чт июн 30, 2011 10:10:23
Откуда: лютая Россия

Сообщение WaL97 »

3) в С не нужно путать "=" - присваивание и сравнение "=="
Тьфу, вот я балбес. :)) Постоянно то запятую потеряю, то еще что. Спасибо
Но, надеюсь, что со временем научусь, не зря же на программиста учиться начал :)
Кстати сказать 90s2313 уже не выпускают зачем на неё писать прошивку, сейчас идут Tiny2313
Просто первые у меня есть. Да и такую простую программу несложно переделать на тиньку будет.
.. а на практике все будет иначе :) , например:
1) что будет если одновременно нажать 2 и более кнопок ?
2) ..по-хорошему опрашивать кнопки лучше всего в прерывании по таймеру, иначе весь ресурс МК сведется к работе delay_ms()
А я делаю сейчас его не для практических целей, а чтоб научиться :)
Как мне кажется, на этом устройстве программу можно улучшать и усложнять практически бесконечно.
[b]— Да не боись, всего двенадцать вольт… и восемьсот ампер.[/b]
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

WaL97 писал(а):.. на этом устройстве программу можно улучшать и усложнять практически бесконечно.
.. усложнение и правильная работа, не одно и то же )
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Сообщение pokk »

WaL97 писал(а): В моей теории мы заполняем массив 4 цифрами с клавиатуры, затем сверяем его с "эталоном", и, если все совпадает, открываем дверь.
Проверку ведённых значений с "эталоном" очень хорошо делается на конечных автоматах + можно добавить другие условия (к примеру время нажатия кнопки) Выглядит это примерно следующим образом:

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

unsigned char mass_code[5];
switch(code_mode){
	case 0:{
		if(mass_code[0]=='1'){ //  Если первый ведённый символ 1 то переходим в следуюшее состояние  
		//тут можно наставить ещё кучу разных условий 
			code_mode=1;
			break;
		}
		code_mode=0;	// Иначе выдаём  введённый код неверен.    	
		break;
	}
	case 1:{
		if(mass_code[1]=='2'){  // Второй введённый символ 2 ?Если да проверяем третий символ если нет то код неверен
			code_mode=2;		
			break;			
		}
		code_mode=0;				
		break;
	}
	case 2:{
		if(mass_code[2]=='3'){
			code_mode=3;		
			break;			
		}
		code_mode=0;				
		break;
	}
	case 3:{
		if(mass_code[3]=='4'){
                         //--------------------->>>>>>> Введённый код правильный 
			code_mode=0;		
			break;			
		}
		code_mode=0;				
		break;
	}	
}
Сигнал о введённом "правильном" коде поступит только тогда когда все комбинации совпадут.
Что устраняет ложное срабатывания.
Потрогал лапой паяльник
Сообщения: 342
Зарегистрирован: Чт июн 30, 2011 10:10:23
Откуда: лютая Россия

Сообщение WaL97 »

pokk писал(а):
WaL97 писал(а): В моей теории мы заполняем массив 4 цифрами с клавиатуры, затем сверяем его с "эталоном", и, если все совпадает, открываем дверь.
Проверку ведённых значений с "эталоном" очень хорошо делается на конечных автоматах + можно добавить другие условия (к примеру время нажатия кнопки) Выглядит это примерно следующим образом:

Сигнал о введённом "правильном" коде поступит только тогда когда все комбинации совпадут.
Что устраняет ложное срабатывания.
Да, подобное решение я видел где-то, в будущем и такое попробую.
[b]— Да не боись, всего двенадцать вольт… и восемьсот ампер.[/b]
Контактная информация:
Ответить

Вернуться в «AVR»