Страница 1 из 1

Электронный ключ

Добавлено: Пт июн 14, 2013 10:12:57
прохожий
Приветствую. Помогите пожалуйста! Нужна прошивка на мк atmega16 которая будет открывать на sd определенный файл, копировать в буфер одну строку инф. примерно в 20 байт. Затем сравнивать скопированное значение с заложенным в программе и если оно совпадает просто пустить ток на одну из ножек. О статусе проходящей операции должен извещать светодиод (нет сд в слоте, допустим, - не горит. Ошибка чтения - моргает. все успешно выполнено - горит постоянно).


~~~~~~~~~~~~~~~~~~~~~~
unsigned char buf[150]; //буфер для UART
static FRESULT f_err_code; //FRESULT для функций модуля
static FATFS FATFS_Obj; //структура - логический раздел
FIL fil_obj; //структура файла, с которым работаем
char var[30]=""; //буфер, сюда мы поместим то, что считаем из файла.
UINT ByteRead = 0;

int main(void)
{
uart0_init(); //настраиваем UART.
sendStr("*************Чтение из файла*************"); //отправляю через UART строку на терминал.

BYTE status = disk_initialize(0); //инициализируем карточку
sprintf((char*)buf,"initialize return: %X",status); //возвратит 0 в случае успеха
sendStr(buf);

f_err_code = f_mount(0, &FATFS_Obj); //монтируем логический раздел
sprintf((char*)buf,"f_mount return: %X",f_err_code); //возвратит FR_OK=0 в случае успеха
sendStr(buf);

f_err_code = f_open(&fil_obj, "foo.txt", FA_READ); //пытаемся открыть файл
sprintf((char*)buf,"f_open return: %X",f_err_code); //возвратит FR_OK=0 в случае успеха, FR_NO_FILE=4, если файл не существует...(остальные значения см. в ff.h)
sendStr(buf);

f_err_code = f_read(&fil_obj,var,20,&ByteRead); //пытаемся читать 20 байтов с начала файла в переменную var
sprintf((char*)buf,"f_read return: %X, byte read: %d",f_err_code,ByteRead); //возвратит FR_OK=0 в случае успеха, также выводим сколько байтов удалось считать
sendStr(buf);

sprintf((char*)buf,"var: %s",var);
sendStr(buf);TX_NEWLINE; //выводим в терминал значение буфера

f_close(&fil_obj); //закрываем файл
}

Вот такой код нашел в интернете. Можно ли его как-то подкорректировать что бы вместо терминала был светодиод. И в конце if "var == значение" то все гуд.

Re: Электронный ключ

Добавлено: Пт июн 14, 2013 21:24:09
vitalik_1984
Это что же такое получается? Карта памяти будет использоваться как ключ? не слишком дорого?
Есть прекрасные примеры использования микросхемы i-button от Dallas.

Re: Электронный ключ

Добавлено: Сб июн 15, 2013 08:31:15
ibiza11
vitalik_1984, сколько стоит Ваш ibutton? вот флешка 4Gb - 129 рублей
прохожий писал(а):Можно ли его как-то подкорректировать что бы вместо терминала был светодиод.
Конечно можно! Или Вы просите нас его подкорректировать?

Re: Электронный ключ

Добавлено: Сб июн 15, 2013 09:06:51
vitalik_1984
вообще около 70рублей вместе с прошивкой, наверняка можно в китае купить дешевле.
А использовать 4 гб флеш для 20 байт это как то нерационально. тем более эти i-button еще и удобный держатель имеют.
Позже:
вот 100 штук по 16 рублей