Страница 229 из 304

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

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

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

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

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

Какое отношение имеет предделитель к внешнему прерыванию? Его можно настроить либо по фронту, либо по спаду. И когда этот фронт (спад) придет - программа уйдет в обработчик внешнего прерывания. При чем тут прескаллер? С какой частотой будут происходить фронты / спады, с такой и будет вызываться прерывание, никаких аппаратных делителей у внешних прерываний нет. Но что мешает поделить программно?
Накой тут int0? Может проще counter0=falling, prescale=512?
Если далее разрешить прерывание по счётчику, то и будет срабатывать прерывание через 0.5 Гц. Сам так делал.

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

Добавлено: Ср июн 03, 2015 14:07:08
edm2007
Не, раз речь идет именно о внешнем прерывании, то как я понял, имеется именно входной сигнал на INT0. И его нужно делить.
Shtepsel писал(а):есть внешнее прерывание с частотой 1024Гц
Shtepsel писал(а):Как можно аппаратно "поделить" внешнее прерывание на 512? Или 256 хотя бы?
Либо автор неправильно обзывает прерывания (хотя, конфигурирует-то он именно INT0). :tea:

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

Добавлено: Ср июн 03, 2015 14:19:18
Tankor
edm2007 писал(а):Не, раз речь идет именно о внешнем прерывании, то как я понял, имеется именно входной сигнал на INT0. И его нужно делить.
Shtepsel писал(а):есть внешнее прерывание с частотой 1024Гц
Shtepsel писал(а):Как можно аппаратно "поделить" внешнее прерывание на 512? Или 256 хотя бы?
Либо автор неправильно обзывает прерывания (хотя, конфигурирует-то он именно INT0). :tea: Если есть возможность, то необходимо перейти именно на вход таймера / счетчика. В ином случае - только программный делитель.
Автор возможно не знает или забыл, что на этой ноге и счётчик сидит.

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

Добавлено: Ср июн 03, 2015 14:21:52
edm2007
Это у какого контроллера вывод INT совмещен с выводом T?

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

Добавлено: Ср июн 03, 2015 14:35:54
Tankor
edm2007 писал(а):Это у какого контроллера вывод INT совмещен с выводом T?
Возможно не правильно выразился, я имел ввиду, что этот вход можно сконфиг. и как таймер/счётчик и как вход внешнего прерывания.

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

Добавлено: Ср июн 03, 2015 14:42:37
Shtepsel
Tankor,
Config Counter0 = Falling , Prescale = 512
On Counter0 Name_subroutine
вот на это компилятор ругается "Unknown config parameter [Counter0]" и "Unknown config parameter [Prescaler]"

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

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

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

Добавлено: Ср июн 03, 2015 15:04:37
Tankor
Shtepsel писал(а):Tankor,
Config Counter0 = Falling , Prescale = 512
On Counter0 Name_subroutine
вот на это компилятор ругается "Unknown config parameter [Counter0]" и "Unknown config parameter [Prescaler]"
Две страницы назад это уже обсуждали. стр 277

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

Добавлено: Ср июн 03, 2015 15:07:49
edm2007
Работа таймера в режиме подсчета внешних импульсов ничего не даст, у этого режима нет предделителя.

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

Добавлено: Ср июн 03, 2015 15:18:36
Tankor
edm2007 писал(а):Tankor, Если речь идет об аппаратном подсчете внешних импульсов средствами таймера, то выводы Т (Т0, Т1 и т.д.) нельзя переназначить, они жестко прикручены.
Я не спорю, Вы меня не поняли. Данные выводы имеют и другой функционал. Все зависит от конфигурации. Ну как ещё объяснить? Возьмите к примеру мегу 328. Вывод T0 у неё можно сконф. как внешнее прерывание PCINT20, Ясно выразился?

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

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

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

Добавлено: Ср июн 03, 2015 15:28:00
Tankor
edm2007 писал(а):Нет, это понятное дело, но я о другом: это нужен контроллер, у которого и T и INT0 находятся на одном выводе. Какой контроллер отвечает указанным требованиям? И какой контроллер у автора? :))
Есно, что никакой.

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

Добавлено: Ср июн 03, 2015 15:28:19
Shtepsel
Теперь ясно о чем. У меня Мега8, скорее всего, она такого не умеет.
Пока сделал программно подсчет.
Как-то можно узнать сколько проц потратит времени на выполнение подпрограммы прерывания? Или лепить бесконечный цикл и считать кол-во циклов за секунду в протеусе, например?

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

Добавлено: Ср июн 03, 2015 15:31:18
edm2007
Самое простое - Пошаговая отладка в PROTEUS для BASCOM. Это на АСМе можно запросто посчитать такты, а тут неведомо, во что код превращается...

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

Добавлено: Ср июн 03, 2015 15:36:35
Tankor
Shtepsel писал(а):Теперь ясно о чем. У меня Мега8, скорее всего, она такого не умеет.
Пока сделал программно подсчет.
Как-то можно узнать сколько проц потратит времени на выполнение подпрограммы прерывания? Или лепить бесконечный цикл и считать кол-во циклов за секунду в протеусе, например?
Я не спец, но примитив вижу такой: в начале программы обработки прерывания дергаю свободную ногу на осцил, а в конце подпрограммы дёргаю в обратную сторону. Всё, знаем период- знаем время.

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

Добавлено: Ср июн 03, 2015 15:39:16
edm2007
Ну а что, жизнеспособный вариант. При наличии осциллографа, разумеется. :tea:

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

Добавлено: Ср июн 03, 2015 15:48:02
Shtepsel
Думаю, что так вполне. Да ноги уже все заняты.
Как инвертировать битовую переменную? Или байтовую.

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

Добавлено: Ср июн 03, 2015 15:57:04
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 

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

Добавлено: Ср июн 03, 2015 16:08:51
fedyasolder
Shtepsel писал(а):Как-то можно узнать сколько проц потратит времени на выполнение подпрограммы прерывания? Или лепить бесконечный цикл и считать кол-во циклов за секунду в протеусе, например?
Я делаю так. Создаю таймер, по которому переходит в эту процедуру (можно и бесконечный do...loop). В самом начале процедуры выводим 1 на какой-либо свободный вывод. А в конце ноль туда же. В протеусе осциллографом смотрю ширину горба (единицу). Так я подбирал частоту прерываний для динамической индикации поскольку код у меня длинный.
пока писал Tankor все объяснил