подскажите как провернуть такое. допустим происходит чтение ds18b20. в это время наступает прерывание в котором читаются кнопки. допустим кнопка нажата, как сделать так чтоб при выходе из этого прерывания, прекращалась текущая процедура чтения ds18b20 и выполнялся код который идет после чтения?
мне это нужно для того чтоб реакция на нажатие кнопки была незамедлительна, а не ждать пока отработает чтение датчика.
to ValBag: никто не запретит вам создать union с вашим битовым полем, для которого так же будет выделены битовые поля для доступа к каждому биту... только нафига весь этот огород?!
to neon-f: во-первых, чтение датчика занимает примерно 16 миллисекунд - это ж какая у вас реакция, что нажатие кнопки при этом так задерживается?! человек должен быть резче, чем детский утренний понос, чтобы заметить запаздывание реакции на нажатую кнопку в 16-20 миллисекунд!!! тем более, что для кнопки надо дребезг подавлять - а это минимум 10 миллисекунд. во-вторых, почему бы не продолжать спокойно дочитывание информации из датчика, отработав прерывание от кнопки (если уж так нетерпится)? почему надо обязательно завершать процедуру чтения? наконец, в-третьих, чтение инфы из датчика ведется явно в цикле - почему бы в этом цикле не проверять дополнительно какой-то флаг, который устанавливается в обработке вашей супер-резкой кнопки? если флаг установлен - return и точка.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
не, не так. есть прерывание обслуживающее динамическую индикацию. также внутри этого прерывания производится чтение кнопок(их у меня 12 шт(про антидребезг не забыл)) и переменной bytton присваиваю значение состояния кнопок. потом по выходу из прерывания происходит какое то действие в зависимости от того какая кнопка нажата. так вот, если кнопка нажата когда началось чтение датчика(а он опрашивается раз в 5сек) то по выходу из прерывания произходит дочитывание датчика, а уж потом проверяется значение bytton и производится определенное действие. а чтение ведь почти секунду длиться, и следовательно периодически я получаю неприятные "затыки" реакции кнопок.
а чтение ведь почти секунду длиться, и следовательно периодически я получаю неприятные "затыки" реакции кнопок.
Чтение длится несколько десятков миллисекунд. Секунда нужна датчику для преобразования температуры. Но, не обязательно же заставлять МК тупо простаивать эту секунду, можно в это время занять его другим, более важным делом. А датчик опрашивать когда-нибудь там в цикле, готов он отдать температуру или нет.
Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс июн 20, 2010 23:27:38
Мудрый кот
Карма: 1
Рейтинг сообщений: 7
Зарегистрирован: Ср апр 23, 2008 17:44:56 Сообщений: 1708 Откуда: Россия, г. Нижний Новгород
Рейтинг сообщения:0
neon-f писал(а):
я только за, научите как.
пишем в CVAVR? научится можно глянув в хелп к этому компилятору и используя низкоуровневые команды работы с датчиком заодно и размер *.hex уменьшится немножко
_________________ абажаю мой KIA CEED Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
После подачи команды на преобразование температуры (0x44), периодически отсылайте датчику команду чтения данных (0xBE), как только датчик перестанет отвечать нулём - можно делать сброс и читать температуру. Разумеется, т.к. датчику приходится просаживать линию в ноль, паразитное питание - невозможно.
AI_Disable sema так это надо библиотеку править??? или что? я пока только вершки си осилил, а остальное для меня темный лес. если не тяжело, может кусок готового кода, или пример дадите, который я смогу в свою СИ программу вставить.
this function returns the number of devices connected to the 1 Wire bus. If no devices were detected then it returns 0. The byte cmd represents the Search ROM (F0h), Alarm Search (ECh) for the DS1820/DS18S20, or other similar commands, sent to the 1 Wire device.
только что скопипастил из хелпа к CVAVR 2*** перевести описание функций элементарно
_________________ абажаю мой KIA CEED Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Ну на счёт сторожевого таймера понятно, просто както не очень удобно, Думал может есть какая функция на Си или вставка на асме. Неужели ничего такого нет.
_________________ Ты думаешь ты думал как ты думаешь? (с)
вообще-то об WinAVR есть совсем отдельная тема... но пока модераторы не видят, подскажу:
Цитата:
Примечания: полная реализация всех возможностей форматирования требует больших затрат программной памяти. С целью минимизации ресурсов существует 3 варианта реализации функции vfprintf(), выбираемых компоновщиком во время сборки проекта: - обычная (по умолчанию) – реализует все виды преобразований, кроме предназначенных для чисел с плавающей точкой; - усеченная – реализует только базовые преобразования форматов целых чисел и строк, кроме того, может применяться только префикс # (см. Спецификация строки формата для функций форматированного вывода); - полная – реализующая полную спецификацию форматов.
Усеченная версия выбирается следующими параметрами компилятора: -Wl,-u,vfprintf -lprintf_min Полная версия выбирается следующими параметрами компилятора: -Wl,-u,vfprintf -lprintf_flt -lm
то есть добавьте нужные параметры в свойства вашего проекта (в AVR Studio открываете свойства проекта и переходите на закладку Custom Options, там в параметрах линкера вводите нужную строчку) и добавьте соответствующую библиотеку для компоновки... кстати, по вашей ссылке это и написано поздно увидел
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
... там в параметрах линкера вводите нужную строчку) и добавьте соответствующую библиотеку для компоновки... кстати, по вашей ссылке это и написано поздно увидел
Вот поэтому и пишу, что не работает Я уже все облазил, при билде вылазит
Т.е. вроде нормально, параметры заданы, библиотеки тоже подключил - ан нет, не работает... Уже даже все файлы в папке поудалял, кроме проэктного и .с, думаю, пусть заново все пересоздаст - не хотит выводить ФЛОАТ В чем может быть загогулина? Уже 3-й день простейшую прогу сделать не могу. В int все считать не получится, там три не очень простые формулы с делением и умножением...
_________________ ...Им бы пить и жрать в три горла день и ночь, Будь ты трижды гений - им нельзя помочь... \\Ария\\Игра с огнем
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения