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

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

Добавлено: Чт июл 06, 2017 20:38:37
Ivanoff-iv
я зашел, думал тут АСМ, а тут БАСМ, :oops: посмотри как таймер настроен на 272 стр. этого же форума 5е сообщение снизу (от КОТика) сразу под заголовком "настройка шим" настраивется таймер (правда 0й) попробуй по аналогии

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

Добавлено: Чт июл 06, 2017 20:49:34
edm2007
Как пример, для AT2313:

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

Config Timer1 = Timer , Prescale = 256 , Clear Timer = 1    ' 1/8000000 = 0,125мкс * 256 * 31250 = 1 cек
Compare1a = &H7A12                                          ' конфигурация регистра сравнения, для отсчета 1 секунды
On Oc1a 1_sec                                               ' вектор прерывания совпадения Т1

Enable Interrupts                                           ' разрешаем прерывания
Enable Oc1a                                                  ' по совпадению в том числе

'-----------------------------------------------------------------------------------------------------------

Do

Loop

'-----------------------------------------------------------------------------------------------------------

1_sec:                                                      ' обработка прерывания отсчета 1 секунды

...

Return

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

Добавлено: Пт июл 07, 2017 07:15:02
Gordon Shumway
[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3140129#p3140129"]Как настроить прерывание по таймеру чтобы счетчик считал секунды ? Камень ATMEGA32 , внутренний кварц 8 МГц.[/uquote]

Зачем же такие сложности творить ? В Баскоме на эту тему уже за нас все придумали. Называется Асинхронный режим работы таймера.

Достаточно двух строк

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

Config Clock = Soft
enable interrupts
и кварца 32768гц (часовой) на ногах TOSC, и у вас готовые секунды в реальном времени, причем отсчет не зависит от самой программы.

После этих строк у вас появляются автоматически сконфигугрированными переменные _sec, _min, _hour, и автоматом начинает считаться время.
Если вам нужны только секунды, то используете только _sec (именно так, с подчеркиванием).
То есть ваша основная программа работает на вашей внутренней частоте 8мгц, а таймер, считающий секунды, от кварца 32768.

Пример:

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

$regfile = "m32def.dat"
$crystal = 8000000

config clock = soft
enable interrupts

do

'ваша программа с анализом переменной _sec
'что-то типа 
if _sec = 0 then моргнуть светодиодом

loop
Дополнительно ничего под этот режим конфигурировать не нужно, в Баскоме уже все за нас сделали.

Отмечу, что с этим асинхронным режимом отлично работает режим сна powersave. В это режиме мк просыпается раз в секунду чтобы прибавить ее и снова засыпает.
Пример:

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

$regfile = "m32def.dat"
$crystal = 8000000

config clock = soft
enable interrupts

do

'ваша программа с анализом переменной _sec
'что-то типа 
if _sec = 0 then моргнуть светодиодом

powersave

loop

Как-то так... :)

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

Добавлено: Пт июл 07, 2017 07:24:42
IDok
Gordon Shumway а эти переменные считаются как? ну т.е. sec идет от 1 до 60 потом прибавляется min (от 1 до 60) и так по кругу?

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

Добавлено: Пт июл 07, 2017 07:30:46
Gordon Shumway
[uquote="IDok",url="/forum/viewtopic.php?p=3140331#p3140331"]Gordon Shumway а эти переменные считаются как?[/uquote]

Как в часах, ничего проверять не нужно. То есть изначально все по нулям, секунды до 59 - прибавляется минута, секунды в ноль. Минуты до 59 - прибавляется час, минуты в ноль.
23:59:59 - 00:00:00

Проверять эти переменные нужно только когда вы вручную задаете их, например, в самодельных часах. Нажата кнопка - секунды увеличиваются. И тут нужно вставить проверку чтобы больше 59 не увеличились.

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

Добавлено: Пт июл 07, 2017 09:01:16
edm2007
Ну как настраивать таймер тоже знать нужно. Например, в AT2313 нет асинхронного режима у таймеров. :))

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

Добавлено: Пт июл 07, 2017 09:13:02
Gordon Shumway
[uquote="edm2007",url="/forum/viewtopic.php?p=3140371#p3140371"]Ну как настраивать таймер тоже знать нужно. Например, в AT2313 нет асинхронного режима у таймеров. :))[/uquote]

Ну, это да ! Ваше решение как всегда просто, лаконично, универсально, и обычно сразу работает. :)
У автора вопроса вроде Мега32 была, там есть этот режим, а я как раз на эту же тему развлекаюсь в данный момент. :)))

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

Добавлено: Пт июл 07, 2017 11:29:44
edm2007
Gordon Shumway писал(а):а я как раз на эту же тему развлекаюсь в данный момент
А, это без вопросов тогда. :beer: Асинхронный таймер - шикарная штука, согласен. Да еще и в баскоме реализованы хардварно все эти переменные. Самое оно для начинающего. :solder:

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

Добавлено: Пт июл 07, 2017 14:12:32
Gordon Shumway
[uquote="edm2007",url="/forum/viewtopic.php?p=3140483#p3140483"]Асинхронный таймер - шикарная штука, согласен. Да еще и в баскоме реализованы хардварно все эти переменные.[/uquote]

А еще независимость от основной программы: что бы там не делалось в основной программе или в основном цикле - секунда щелкнет всегда и вовремя. Да и Powersave радует - обычные таймерные прерывания только из Idle могут разбудить мк, а в Idle мк кушает сильно больше. У меня получилось в Powersave сделать ток 0,025мА. И в асинхронном режиме таймер отлично "щелкает".

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

Добавлено: Пт июл 07, 2017 14:22:52
edm2007
Да, в режиме powersave можно разбудиться только асинхронно. И выбор невелик - асинхронный таймер, прерывание по низкому уровню, сторожевой пес да хард ресет. И в этом плане асинхронный таймер это просто находка, уснуть и просыпаться раз в секунду на батарейном питании - дорогого стоит. Это здорово экономит батарейные ресурсы.

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

Добавлено: Пт июл 07, 2017 14:36:05
Gordon Shumway
[uquote="edm2007",url="/forum/viewtopic.php?p=3140559#p3140559"]И в этом плане асинхронный таймер это просто находка, уснуть и просыпаться раз в секунду на батарейном питании - дорогого стоит. Это здорово экономит батарейные ресурсы.[/uquote]

Это точно ! У меня сейчас проходит обкатку "Мегатермо-3", сделал именно на асинхроне. 0,15мА, но там же еще и дисплей, который показывает даже во сне. И там я еще дальше пошел в плане сбережения питания. 0,15мА для CR2032 в круглосуточном девайсе - это все-таки многовато. Но значительно лучше, чем было в двух первых Мегатермо.
Испытания пройдут - выложу. Тут уже просто интересно было чего можно достичь c хитрым питанием. :)))

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

Добавлено: Ср июл 12, 2017 12:13:08
OLEGKARAS
Добрый день.
Вот исходник взятый из интернета, в нем уже используется память EEPROM , как мне в этом исходнике использовать память для записи еще своих уставок ?

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

Добавлено: Ср июл 12, 2017 14:05:21
vem566
Берете и дописываете свои уставки. Свободная EEPROM еще есть.

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

Добавлено: Ср июл 12, 2017 14:22:37
OLEGKARAS
Вот посмотрите , файл 12202_32 , в нем строчка 123 чтение из памяти , 561 запись в память , но почему то в эту ячейку или не записывается или не читается , хотя если эти строки поместить в новый файл все пишется и читается.

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

Добавлено: Ср июл 12, 2017 15:04:43
vem566
Если я не пропустил, то описание переменных в EEPROM начинаются с 61 строки. Все переменные в этой строке занимают 11 байт, с 0 по 10. Следующая переменная EEPROM I_set, в строке 65 типа Word и занимает 2 байта с 11 по 12-ый.
В строке 123 считывается значение в переменную U_min не из 11-ой ячейки, а с 11-го байта. Длина её тоже 2 байта, как и у переменной I_set. Так что считывается как раз I_set в переменную U_min.
Не проще считывать имя переменной из памяти, а не мучиться с адресами? Для работы с прямой адресацией памяти нужен опыт и отличное понимание что, где и в какой момент работы программы находится в памяти.

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

Добавлено: Ср июл 12, 2017 17:06:49
OLEGKARAS
Как все сложно в этом баском , если считывать имя переменной из памяти проще то покажите как это делается , мне лично все равно каким образом работать с памятью , главное что бы это было по проще и работало.

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

Добавлено: Ср июл 12, 2017 17:09:14
edm2007
OLEGKARAS писал(а):Как все сложно в этом баском
Так пишите на том, на чем проще. Делов-то. Конечно сложно, тут Вам не Ассемблер какой-нибудь, тут бейсик знать нужно. :tea:

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

Добавлено: Ср июл 12, 2017 17:11:16
OLEGKARAS
Дело в том что исходник этот уже написан в баском , а на том чем проще я такое не напишу.

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

Добавлено: Ср июл 12, 2017 17:34:20
vem566
Напишите в строчке 67

Dim U_min_e As Eram Word

И пользуйтесь переменной в памяти с именем U_min_e. Или свое имя придумайте.
Тогда в строке 123 будет

U_min = U_min_e

И все дела.
Но думаю, что раз у Вас такие трудности, то заполнение переменной U_min_e тоже вызовет проблемы.

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

Добавлено: Ср июл 12, 2017 18:03:22
OLEGKARAS
Выдает ошибку 253.