BASCOM AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Shtepsel писал(а):есть внешнее прерывание с частотой 1024Гц, а мне надо, чтобы код прерывался с частотой 0,5Гц. Как можно аппаратно "поделить" внешнее прерывание на 512? Или 256 хотя бы?
такую строку bascom "съедает"
Config Int0 = Falling , Prescale = 512
но не работает.


Здравствуйте.

Какое отношение имеет предделитель к внешнему прерыванию? Его можно настроить либо по фронту, либо по спаду. И когда этот фронт (спад) придет - программа уйдет в обработчик внешнего прерывания. При чем тут прескаллер? С какой частотой будут происходить фронты / спады, с такой и будет вызываться прерывание, никаких аппаратных делителей у внешних прерываний нет. Но что мешает поделить программно?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Tankor
Встал на лапы
Сообщения: 139
Зарегистрирован: Вт май 03, 2011 10:13:12
Откуда: Россия, Татарстан

Re: BASCOM AVR в вопросах и ответах

Сообщение Tankor »

edm2007 писал(а):
Shtepsel писал(а):есть внешнее прерывание с частотой 1024Гц, а мне надо, чтобы код прерывался с частотой 0,5Гц. Как можно аппаратно "поделить" внешнее прерывание на 512? Или 256 хотя бы?
такую строку bascom "съедает"
Config Int0 = Falling , Prescale = 512
но не работает.


Здравствуйте.

Какое отношение имеет предделитель к внешнему прерыванию? Его можно настроить либо по фронту, либо по спаду. И когда этот фронт (спад) придет - программа уйдет в обработчик внешнего прерывания. При чем тут прескаллер? С какой частотой будут происходить фронты / спады, с такой и будет вызываться прерывание, никаких аппаратных делителей у внешних прерываний нет. Но что мешает поделить программно?

Накой тут int0? Может проще counter0=falling, prescale=512?
Если далее разрешить прерывание по счётчику, то и будет срабатывать прерывание через 0.5 Гц. Сам так делал.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Не, раз речь идет именно о внешнем прерывании, то как я понял, имеется именно входной сигнал на INT0. И его нужно делить.

Shtepsel писал(а):есть внешнее прерывание с частотой 1024Гц

Shtepsel писал(а):Как можно аппаратно "поделить" внешнее прерывание на 512? Или 256 хотя бы?


Либо автор неправильно обзывает прерывания (хотя, конфигурирует-то он именно INT0). :tea:
Последний раз редактировалось edm2007 Ср июн 03, 2015 15:10:37, всего редактировалось 1 раз.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Tankor
Встал на лапы
Сообщения: 139
Зарегистрирован: Вт май 03, 2011 10:13:12
Откуда: Россия, Татарстан

Re: BASCOM AVR в вопросах и ответах

Сообщение Tankor »

edm2007 писал(а):Не, раз речь идет именно о внешнем прерывании, то как я понял, имеется именно входной сигнал на INT0. И его нужно делить.

Shtepsel писал(а):есть внешнее прерывание с частотой 1024Гц

Shtepsel писал(а):Как можно аппаратно "поделить" внешнее прерывание на 512? Или 256 хотя бы?


Либо автор неправильно обзывает прерывания (хотя, конфигурирует-то он именно INT0). :tea: Если есть возможность, то необходимо перейти именно на вход таймера / счетчика. В ином случае - только программный делитель.

Автор возможно не знает или забыл, что на этой ноге и счётчик сидит.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Это у какого контроллера вывод INT совмещен с выводом T?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Tankor
Встал на лапы
Сообщения: 139
Зарегистрирован: Вт май 03, 2011 10:13:12
Откуда: Россия, Татарстан

Re: BASCOM AVR в вопросах и ответах

Сообщение Tankor »

edm2007 писал(а):Это у какого контроллера вывод INT совмещен с выводом T?

Возможно не правильно выразился, я имел ввиду, что этот вход можно сконфиг. и как таймер/счётчик и как вход внешнего прерывания.
Shtepsel
Встал на лапы
Сообщения: 110
Зарегистрирован: Сб сен 03, 2011 13:12:09
Откуда: ОдЕсса

Re: BASCOM AVR в вопросах и ответах

Сообщение Shtepsel »

Tankor,
Config Counter0 = Falling , Prescale = 512
On Counter0 Name_subroutine
вот на это компилятор ругается "Unknown config parameter [Counter0]" и "Unknown config parameter [Prescaler]"
Хорошему коту и в декабре март.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Tankor, Если речь идет об аппаратном подсчете внешних импульсов средствами таймера, то выводы Т (Т0, Т1 и т.д.) нельзя переназначить, они жестко прикручены.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Tankor
Встал на лапы
Сообщения: 139
Зарегистрирован: Вт май 03, 2011 10:13:12
Откуда: Россия, Татарстан

Re: BASCOM AVR в вопросах и ответах

Сообщение Tankor »

Shtepsel писал(а):Tankor,
Config Counter0 = Falling , Prescale = 512
On Counter0 Name_subroutine
вот на это компилятор ругается "Unknown config parameter [Counter0]" и "Unknown config parameter [Prescaler]"

Две страницы назад это уже обсуждали. стр 277
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Работа таймера в режиме подсчета внешних импульсов ничего не даст, у этого режима нет предделителя.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Tankor
Встал на лапы
Сообщения: 139
Зарегистрирован: Вт май 03, 2011 10:13:12
Откуда: Россия, Татарстан

Re: BASCOM AVR в вопросах и ответах

Сообщение Tankor »

edm2007 писал(а):Tankor, Если речь идет об аппаратном подсчете внешних импульсов средствами таймера, то выводы Т (Т0, Т1 и т.д.) нельзя переназначить, они жестко прикручены.

Я не спорю, Вы меня не поняли. Данные выводы имеют и другой функционал. Все зависит от конфигурации. Ну как ещё объяснить? Возьмите к примеру мегу 328. Вывод T0 у неё можно сконф. как внешнее прерывание PCINT20, Ясно выразился?
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Нет, это понятное дело, но я о другом: это нужен контроллер, у которого и T и INT0 находятся на одном выводе. Какой контроллер отвечает указанным требованиям? И какой контроллер у автора? :))
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Tankor
Встал на лапы
Сообщения: 139
Зарегистрирован: Вт май 03, 2011 10:13:12
Откуда: Россия, Татарстан

Re: BASCOM AVR в вопросах и ответах

Сообщение Tankor »

edm2007 писал(а):Нет, это понятное дело, но я о другом: это нужен контроллер, у которого и T и INT0 находятся на одном выводе. Какой контроллер отвечает указанным требованиям? И какой контроллер у автора? :))

Есно, что никакой.
Последний раз редактировалось Tankor Ср июн 03, 2015 15:28:19, всего редактировалось 1 раз.
Shtepsel
Встал на лапы
Сообщения: 110
Зарегистрирован: Сб сен 03, 2011 13:12:09
Откуда: ОдЕсса

Re: BASCOM AVR в вопросах и ответах

Сообщение Shtepsel »

Теперь ясно о чем. У меня Мега8, скорее всего, она такого не умеет.
Пока сделал программно подсчет.
Как-то можно узнать сколько проц потратит времени на выполнение подпрограммы прерывания? Или лепить бесконечный цикл и считать кол-во циклов за секунду в протеусе, например?
Хорошему коту и в декабре март.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Самое простое - Пошаговая отладка в PROTEUS для BASCOM. Это на АСМе можно запросто посчитать такты, а тут неведомо, во что код превращается...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Tankor
Встал на лапы
Сообщения: 139
Зарегистрирован: Вт май 03, 2011 10:13:12
Откуда: Россия, Татарстан

Re: BASCOM AVR в вопросах и ответах

Сообщение Tankor »

Shtepsel писал(а):Теперь ясно о чем. У меня Мега8, скорее всего, она такого не умеет.
Пока сделал программно подсчет.
Как-то можно узнать сколько проц потратит времени на выполнение подпрограммы прерывания? Или лепить бесконечный цикл и считать кол-во циклов за секунду в протеусе, например?

Я не спец, но примитив вижу такой: в начале программы обработки прерывания дергаю свободную ногу на осцил, а в конце подпрограммы дёргаю в обратную сторону. Всё, знаем период- знаем время.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Ну а что, жизнеспособный вариант. При наличии осциллографа, разумеется. :tea:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Shtepsel
Встал на лапы
Сообщения: 110
Зарегистрирован: Сб сен 03, 2011 13:12:09
Откуда: ОдЕсса

Re: BASCOM AVR в вопросах и ответах

Сообщение Shtepsel »

Думаю, что так вполне. Да ноги уже все заняты.
Как инвертировать битовую переменную? Или байтовую.
Хорошему коту и в декабре март.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Ну если все ноги заняты, то тогда только в протеусе по брекпоинтам в пошаговой отладке.

Shtepsel писал(а):Как инвертировать битовую переменную? Или байтовую.


Код: Выделить всё

Dim A As Byte

A = &B00110011   ' A = 00110011

A = Not A           ' A = 11001100


Вообще логические операции - это киты цифровой электроники. Их основа. И знать их нужно.

Если необходимо инвертировать только выбранные биты в байтовой переменной, то нужно исключающее ИЛИ по маске:

Код: Выделить всё

A = &B10110111                          

A = A Xor &B11001001   ' инвертируем по маске биты 7 6 3 и 0. A = 01111110
Последний раз редактировалось edm2007 Ср июн 03, 2015 16:11:16, всего редактировалось 1 раз.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
fedyasolder
Поставщик валерьянки для Кота
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

Re: BASCOM AVR в вопросах и ответах

Сообщение fedyasolder »

Shtepsel писал(а):Как-то можно узнать сколько проц потратит времени на выполнение подпрограммы прерывания? Или лепить бесконечный цикл и считать кол-во циклов за секунду в протеусе, например?

Я делаю так. Создаю таймер, по которому переходит в эту процедуру (можно и бесконечный do...loop). В самом начале процедуры выводим 1 на какой-либо свободный вывод. А в конце ноль туда же. В протеусе осциллографом смотрю ширину горба (единицу). Так я подбирал частоту прерываний для динамической индикации поскольку код у меня длинный.
пока писал Tankor все объяснил
электропримат паяю даже лёжа...
Ответить

Вернуться в «AVR»