avrman писал(а):Может это и просто, но без примеров не разобраться, особенно мне. Если не трудно покажите на примере как сделать так, чтобы при превышении напряжения на прямом выводе компаратора относительно инверсного, мк давал признаки жизни, скажем менял уровень на одной из своих ног.
Если напряжение на неинвертирующем входе больше чем на инвертирующем - светодиод зажигается.
'**********[Процедуры обработки прерываний]**********
Comparator:
Portb.2 = 1 Waitms 500 Portb.2 = 0
Return
В данном случае светодиод будет мигать каждый раз когда напряжение на входе AIN0 становится больше или меньше чем на AIN1. Разумеется, можно настроить прерывание на что-то одно (rising/falling).
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
а как настроить компаратор на захват текущего значения таймера? например надо так: в обработчике прерывания компаратора нужно определить в какой момент произошло срабатывание и выполнять соответствующий код:
Товарищи коты, будьте так добры подсказать мне такой вопрос - как после АЦП преобразования значение напряжения выводилось на дисплей с дробной частью. Код дёрнул с обучалки с одного сайта, убрал заставку, да вместо численного значения АЦП по формуле рассчитал значение напруги (нужно в качестве обучения).Теперь показывает целое значение. Исходник прилагаю.
xaker-man писал(а):Помогите ещё вот с чем, можно ли как-нибудь сделать так: waitus N - где N переменная? Просто так не работает, а когда руками вписано значение все ок.
вопрос уже поднимался: читайте инструкцию, где сказано о невозможности использования переменной в задержках
xaker-man писал(а):Помогите ещё вот с чем, можно ли как-нибудь сделать так: waitus N - где N переменная? Просто так не работает, а когда руками вписано значение все ок.
К сожалению, переменная N в данной макрокоманде не может быть использована(см.описание макрокоманды WAITUS в help'е). Но выход достаточно прост: в "шапке" записываем: Const N1 = 1 'или 2,3 и т.д. - N1 задана как постоянная с заданным и неизменяемым значением Dim N As Word ' N задана как переменная с размерностью WORD - 0...65535
N=10 'В программе записываем цикл: WHILE N>0 'пока переменная больше ноля WAITUS N1 'на каждом витке цикла - задержка N1 микросекунд DECR N 'уменьшение N на единицу WEND 'выход из цикла при N=10 в данном случае.
Итого - общая задержка = N х N1 микросекунд (в данном случае - 10N1).
Но автор компилятора Марк Альбертс предупреждает при этом, что задержка WAITUS не является прецизионной (см.описание макрокоманды WAITUS в help'е).Чем выше частота процессора, тем точнее результат.В принципе, вместо N1 можно вписать любое число от 1 - задержка будет кратной ему. Естественно, что при задержке больше 1000 мкс лучше использовать WAITMS.
Последний раз редактировалось user2007 Пт дек 24, 2010 13:19:57, всего редактировалось 2 раза.
Вот подкинули мне индикатор-SPC 16010D (на плате вытравленно EC1601D) Подключил я его и всё заработало, но- Командой LCD пишит только 8 символов, что-бы перейти на следующие 8 нужно делать ловерлайн. В Баскоме я ни как не смогу это обойти? Получается Shiftlcd мне уже не применить!
Все делают ошибки, только мудрецы - новые, а дураки - старые.
0. Устанавливаешь на входе -RESET (10) уровень 1, на входах CLK (11), LOAD (12) и -OE (13) уровень 0.
1. Устанавливаешь нужный уровень на входе DATA (14) 2. Подаешь на CLK уровень 1. При этом сдвиговый регистр делает один сдвиг 3. Подаешь на CLK уровень 0. Пункты 1-3 повторяешь 8 раз.
4. Подаешь на LOAD уровень 1. При этом содержимое сдвигового регистра переписывается в параллельный регистр
5. Подаешь на LOAD уровень 0
Всё Если 595-ых будет несколько, выход D7' предыдущего регистра соединяется со входом DATA (14) следующего. -RESET, CLK, LOAD и -OE запараллеливаются.
aleksandr-zh, с самой 74HC595 уже разобрался. Теперь осталось как все реализовать в баскоме Но пинок в сторону SHIFTOUT, пример твоего кода и справочник Кулиша многое разъяснил
Секретный кот писал(а):Попробуйте с Config Lcd поиграться (16*1/16*1a).
не помогло. В Баскоме в симуляторе при 16*1a вообще LCD в две строки выскакивает. Наверное индикатор какой-то хитрый, ибо и протеусе и в симуляторе без ловерлайн работает нормально. Ещё заметил что при пустом индикаторе и и сильной контрастности только 8 квадратиков темнеют .
Все делают ошибки, только мудрецы - новые, а дураки - старые.