Заместо WDCE и WDE компилятор из инклудового файла возьмёт цифры (числа), соответствующие порядковым номерам этих бит в регистре (WDTCR).
Единицы сдвинутся на соотв. позиции и логически сложатся, а на месте остальных бит будут нули?
Да, чисто для удобства отладки. Надо записал туда 1, не нужно вспоминать номер бита или по новой набирать комбинацию "(1<< )"
Gudd-Head писал(а):
Можно задавать свои номера битам через .EQU? Вынести их в отдельный файл (например, для управления периферией) и подключать через .include?
Ну собсно, я пока писал, сам и разобрался. Не стал уж удалять текст — жалко
Только мне казалось что можно как в Сях когда надо кучу единиц и пару нулей записать через
Да я уж прогнал в студии.
А как-то через инверсию или ИСКЛ.ИЛИ можно малой кровью дать понять компилятору, что надо кучу единичек записать с помощью нескольких нулей?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ну например так
LDI R16,(1<<Bit1)|(1<<Bit2)
COM R16
Записанные номера битов обернутся нулями. Хотя конкретная реализация в любом случае зависит от того, что нужно сделать.
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
Да, способов масса, и все хороши!
Между тем, есть ещё вопрос по работе с датчиком температуры 18В20.
Принципы отправки и приёма информации по шине мне в принципе понятны, вот непонятно как именно с этим датчиком работать. Даташит большой, инфа в нём структурирована плохо, поэтому самостоятельно разобраться не получилось.
Итак, проц стартует... Нужна ли датчику начальная инициализация (допустим как, например, дисплею 44780)? Если нужна, то что ему слать и в какой последовательности?
И второй вопрос: какая должна быть последовательность команд для простого считывания температуры? (датчик один)
Спасибо заранее!
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
Seriyvolk писал(а):... Нужна ли датчику начальная инициализация... какая должна быть последовательность команд для простого считывания температуры? (датчик один)
Сброс датчика низким уровнем на шине на время >480мкс -> отпускание линии -> через 60 мкс опрос низкого уровня от датчика при его наличии -> если низкого уровня нет, то нет и датчика; если есть, то дождаться когда датчик отпустит линию -> выдать команду SKIP ROM (0xCC) -> выдать команду начала измерения температуры Convert T (0x44); при паразитном питании подключить линию к питанию и выдержать паузу; при постоянном питании окончание преобразования можно контролировать появлением 1 на шине -> сбросить датчик -> выдать команду SKIP ROM (0xCC) -> выдать команду чтения памяти (0xBE) -> прочитав 2 байта температуры сбросить датчик. Обмен ведётся байтами младшими битами вперёд.
Спасибо всем! Насколько мне понятно - никакой предварительной инициализации датчику не нужно.
Сначала ресет-скип ром-запустить конверт темп, потом подождать и ресет-скип ром- считать темп. Так будет правильно? ploop, а с чем у тебя в коде связано формирование такой точной задержки в 1uS? Только с тем, что из неё формируются все остальные? Датчику ведь даже между битами не нужны такие точные интервалы, там вродя от 1 до 12 uS окно
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
Seriyvolk писал(а):Датчику ведь даже между битами не нужны такие точные интервалы, там вродя от 1 до 12 uS окно
Не помню уже, но вроде при передаче бита. Да и код работы с ним не весь мой, сам алгоритм слизан у ARV
Во всяком случае датчик замечательно работает 2 года на 30-метровой лапше рядом с силовыми проводами
Всем привет опять! Уж простите, что так плотно данную тему оккупировал , но иных вариантов нет И за второй пост тож простите, но если я поправлю предыдущий - его никто не почитает...
Бросьте в меня идеей пожалуйста, если не сложно... В общем, ща мучаюсь как бы правильней организовать алгоритм опроса кнопок с дальнейшим альтернативным действием по удержанию.
К примеру хочется, чтобы при нажатии на "+" сначала плюсовалась одна секунда, потом секунды начинали тикать в плюс всё быстрее и быстрее. Аналогично и с минусом.
Есть таймер, который тикает каждую секунду, думаю можно его для этого приспособить. У самого идеи кончились, надеюсь на помощь более опытных товарищей...
Алгоритм опроса кнопок выглядит так:
Спойлер