Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: Электронный замок с управлением от таблеток iBUTTON

Пн сен 17, 2012 10:38:31

shads, а что у тебя за 8UL, вроде бы сдвиг с присваиванием обратно пишется просто abc <<= 8;
Последний раз редактировалось invisible86 Пн сен 17, 2012 10:42:50, всего редактировалось 1 раз.

Re: Электронный замок с управлением от таблеток iBUTTON

Пн сен 17, 2012 10:42:14

shads, а ты не знаешь как организовать проверку CRC для ds1990, мануал весь мозг вынес, а главное полином что то знакомое но не помню))

Re: Электронный замок с управлением от таблеток iBUTTON

Пн сен 17, 2012 11:22:02

invisible86 писал(а):shads, а что у тебя за 8UL, вроде бы сдвиг с присваиванием обратно пишется просто abc <<= 8;
Ха..... я тоже недавно, немало намучился, пока познал тонкости C, очень он гибкий, спасибо местным профи, прояснили что да как.....
В обчем обычная константа по умолчанию двух байтная.....
т.е. если я пишу abc<<=8 то у меня работа в переменной abc будет проводится только с 2-мя байтами.....
а если я пишу abd<<8UL то я даю знать компилятору, что константа 8 должна быть 4-х байтной (unsigned long) чтобы соответствовать 4-х байтной abc.....

invisible86 писал(а):shads, а ты не знаешь как организовать проверку CRC для ds1990, мануал весь мозг вынес, а главное полином что то знакомое но не помню))
Тоже собаку съел, подсказали тут, сейчас написал для себя такую процедуру для датчиков DS18B20, вроде работает, но это так, в протеусе, в реале пока не проверял. Думаю и в таблетках такой же вариант должен работать.
Спойлер
Код:
//----------
//ФУНКЦИЯ ПОДСЧЕТА КОНТРОЛЬНОЙ СУММЫ
//АРГУМЕНТ - байт участвующий в формировании контрольной суммы
//OneWireCheckSumm - глобальная переменная контрольной суммы

void CheckSumm(char data)
{
    for (char i=0; i<8; i++){
        char temp = data;
        temp ^= OneWireCheckSumm;
        if (temp & 0x01){
            OneWireCheckSumm ^= 0x18;
            temp = 0x80;
        }
        else
            temp 
= 0;
        OneWireCheckSumm >>= 1;
        OneWireCheckSumm |= temp;
        data >>= 1;
    }
}
 

Re: Электронный замок с управлением от таблеток iBUTTON

Вт сен 18, 2012 04:22:29

shads, не могу понять как она у тебя вычисляет CRC, ты не мог бы пояснить

Re: Электронный замок с управлением от таблеток iBUTTON

Вт сен 18, 2012 08:10:53

Перед началом приема\передачи обнуляеш глобальную переменную OneWireCheckSumm.

потом в цикле после приема\передачи каждого байта вызываеш процедуру CheckSumm (байт); передавая в значении байт.

после приема\передачи всей серии проверяеш OneWireCheckSumm, там должно быть 0
(если не 0 значит ошибка приема\ъпередачи).

Re: Электронный замок с управлением от таблеток iBUTTON

Вт сен 18, 2012 08:33:54

Статья "Интерфейс 1-Wire. Описание протокола, алгоритмы реализации, рекомендации по применению. Автор - ARV." http://radiokot.ru/articles/13/ . Есть примеры расчета CRC

Re: Электронный замок с управлением от таблеток iBUTTON

Ср сен 19, 2012 19:32:08

sads, я немного потерялся, осваивал протеус, интересная вещь, смоделировал работу клавиатуры, с ibutton пока не получается

Re: Электронный замок с управлением от таблеток iBUTTON

Ср сен 19, 2012 19:36:40

не нашел как в нем смоделировать ibutton ds1990, наверное в нем нет ее в библиотеке

Re: Электронный замок с управлением от таблеток iBUTTON

Ср сен 19, 2012 19:42:18

Есть она там.

Re: Электронный замок с управлением от таблеток iBUTTON

Пт сен 21, 2012 05:24:50

ага нашел

Re: Электронный замок с управлением от таблеток iBUTTON

Пт сен 21, 2012 05:34:12

с ibutton пока притормозил, появился другой вопрос про прерывания, почему светодиод на порту d мигает с частотой раз в секунду только при нажатой кнопке клавиатуры 3х4, что я сделал не так?
Вложения
Proteus.rar
(30.59 KiB) Скачиваний: 221
Ответить