SatinS, у так я и говорю разницы практически нет. даже по ICP1 можно это делать. Включаешь прерывание по нарастающему фронту и ждеш его (фронт). Как только он пришол прыгаем на прерывание, запоминаем состояние счетчика в пам_1, переключаем режим на спад сигнала. Как только спад, прыгаем на прерывание, счетчик в пам_2, пам_2 - пам_1 = пам_0, переключаемна нарастающий фронт.
Переключения необходимы для того что бы определить в какой из 2 периодов мы прыгнули в прерывание.
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
GP1, хуже, эмулятор механической части спидометра берёт импульсы с коробки автомата и крутит двигателем механический спидометр (не спрашивай зачем всё это)))
xkp, есть, в тактах нескольких, я думал надо супер-пупер точно)
SatinS писал(а):GP1, хуже, эмулятор механической части спидометра берёт импульсы с коробки автомата и крутит двигателем механический спидометр (не спрашивай зачем всё это)))
ну это просто жесть
давай так - тема про ASM поэтому либо в личку, либо создай тему, а то мы оба по горчишнику получим, а там что-нибудь придумаем
я выше там страницы 2 назад писал. когда мне надо было супер точно я взял мк с повышенной частотой тактирования до 20 мГц (tiny85). Пробовал кварц ставить больше 20 мГц, повесил осциллограф на кварц и увидел что генератор встроенный в мк начинает сбиваться. Пришлось оставить тактирование мк на 20 мГц. Но точности мне все равно не хватило и проект металлоискателя пришлось остановить, положить в долгий ящик, разобрать и забыть.
ЗЫ, но мы ведь и обсуждаем асм? хотя... мы обсуждаем структуру измерений...
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Запускаю отладку, дохожу до бесконечного цикла и руками выставляю бит RXC в UCSRA. Продолжаю отладку, прерывания не возникает, по-прежнему продолжается бесконечный цикл.
Где ошибка?
RETI
переместить в конец программы, после бесконечного цикла
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Не сработало.
Еще раз проверил флаги. Что интересно, флаг "I" устанавливается, но после нескольких циклов NOP снимается. Но даже при всех установленных (I в SREG, RXCIE в UCSRB и RXC в UCSRA) прерывание не работает.
Может быть проблема версии 6.2? Или в настройках нужно покопаться? Эмулирую пошагово (F11). Вроде, все делаю правильно.
Последний раз редактировалось bondyara Вт дек 02, 2014 22:06:10, всего редактировалось 1 раз.
xkp писал(а):.. Но точности мне все равно не хватило ...
если я ничего не путаю, то при 20МГц разрешающая способность счетчика будет 0,05 мкс, что при частоте в 1Гц погрешность измерения будет ОДНАДВАДЦАТИМИЛИОННАЯ, или 8 знаков после нуля
хочу напомнить, что запуская "Восток" с Ю.А.Гагариным пользовались расчетами с точностью 4(!!!) знака после запятой
bondyara
по существу вопроса не подскажу нет под рукой ни одного справочника
но, пока ты "изучаешь" прерывания очень рекомендую при входе в прерывание сохранять SREG, а перед выходом восстанавливать
очень поможет такая привычка избежать кучи граблей
В шестой студии есть косяк с прерываниями. Лечится в настройках самой студии. Где-то галку нужно поставить, а где - уже не помню. Как купил дракона - отлаживаю всё в железе.
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
xkp писал(а):.. Но точности мне все равно не хватило ...
если я ничего не путаю, то при 20МГц разрешающая способность счетчика будет 0,05 мкс, что при частоте в 1Гц погрешность измерения будет ОДНАДВАДЦАТИМИЛИОННАЯ, или 8 знаков после нуля
Товарищ отождествляет разрешающую способность с точностью. Да хоть Гигагерцами тактируй, а кварцевый ген. без термостабтлизации даст в лучшем случае 10^-5 /
Jack_A писал(а):
Товарищ отождествляет разрешающую способность с точностью. Да хоть Гигагерцами тактируй, а кварцевый ген. без термостабтлизации даст в лучшем случае 10^-5 /
допустим, хотя можно поспорить...
но, покажи мне ту область "бытовухи", где нужна точность 10е-5?
Доброго времени суток!
Нашел статью в которой автор дает имена битам в регистре. Я так понял
Цитирую: "Кроме всего описанного выше, отведём один из пользовательских регистров под флаги, позволяющие определить, какое действие мы в данный момент выполняем. Назовём этот регистр Flags. Флаги в нём будут такие: SEND_BIT - означает, что мы передаём бит, READ_BIT - означает, что мы принимаем бит, SEND_RESET - означает, что мы посылаем сигнал "Reset" и ждём сигнал "Presence", FREE_BUS - означает, что никаких действий на шине не производится и, наконец, SLAVE_IS - означает, что был получен сигнал "Presence"."
Ссылка на статью http://radiohlam.ru/program/1-wire_proc_avr.htm
Подскажите ! ЭТО КАК?
Главное-то akl не указал Как и ними потом работать.
Видимо, потому что это очевидно - sbrc FLAGS,SLAVE_IS / sbrs FLAGS,SEND_RESET / cbr FLAGS,(1<<READ_BIT) / sbr FLAGS,(1<<FLAGS_RESET). Важно не перепутать, где передается номер бита, а где битовая маска.
GP1 писал(а):чтобы не перепутать, лично я, обзываю биты примерно так:
COKPOWEHEU имел ввиду куда подставлять номер бита:READ_BIT, и куда битовую маску: (1<<READ_BIT)
В командах sbrc и sbrs используются номера битов, а в командах sbr и cbr битовые маски.
Кстати в мелких AVR есть регистры GPIORx, которые как раз очень удобны для хранения флагов, и для их сброса/установки нет такой путаницы, т.к. CBI/SBI тоже работает с битами как SBIC/SBIS, а не с масками.
СпойлерА еще можно (только осторожно) задействовать в качестве флагов другие незанятые регистры периферии.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)