Обсуждаем контроллеры компании Atmel.
Ответить

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

Чт июл 06, 2017 20:38:37

я зашел, думал тут АСМ, а тут БАСМ, :oops: посмотри как таймер настроен на 272 стр. этого же форума 5е сообщение снизу (от КОТика) сразу под заголовком "настройка шим" настраивется таймер (правда 0й) попробуй по аналогии

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

Чт июл 06, 2017 20:49:34

Как пример, для 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

Как настроить прерывание по таймеру чтобы счетчик считал секунды ? Камень ATMEGA32 , внутренний кварц 8 МГц.


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

Достаточно двух строк
Код:
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

Gordon Shumway а эти переменные считаются как? ну т.е. sec идет от 1 до 60 потом прибавляется min (от 1 до 60) и так по кругу?

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

Пт июл 07, 2017 07:30:46

Gordon Shumway а эти переменные считаются как?


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

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

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

Пт июл 07, 2017 09:01:16

Ну как настраивать таймер тоже знать нужно. Например, в AT2313 нет асинхронного режима у таймеров. :))

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

Пт июл 07, 2017 09:13:02

Ну как настраивать таймер тоже знать нужно. Например, в AT2313 нет асинхронного режима у таймеров. :))


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

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

Пт июл 07, 2017 11:29:44

Gordon Shumway писал(а):а я как раз на эту же тему развлекаюсь в данный момент


А, это без вопросов тогда. :beer: Асинхронный таймер - шикарная штука, согласен. Да еще и в баскоме реализованы хардварно все эти переменные. Самое оно для начинающего. :solder:

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

Пт июл 07, 2017 14:12:32

Асинхронный таймер - шикарная штука, согласен. Да еще и в баскоме реализованы хардварно все эти переменные.


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

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

Пт июл 07, 2017 14:22:52

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

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

Пт июл 07, 2017 14:36:05

И в этом плане асинхронный таймер это просто находка, уснуть и просыпаться раз в секунду на батарейном питании - дорогого стоит. Это здорово экономит батарейные ресурсы.


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

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

Ср июл 12, 2017 12:13:08

Добрый день.
Вот исходник взятый из интернета, в нем уже используется память EEPROM , как мне в этом исходнике использовать память для записи еще своих уставок ?
Вложения
izmer128_PowerMeter14.rar
(3.41 KiB) Скачиваний: 278

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

Ср июл 12, 2017 14:05:21

Берете и дописываете свои уставки. Свободная EEPROM еще есть.

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

Ср июл 12, 2017 14:22:37

Вот посмотрите , файл 12202_32 , в нем строчка 123 чтение из памяти , 561 запись в память , но почему то в эту ячейку или не записывается или не читается , хотя если эти строки поместить в новый файл все пишется и читается.
Вложения
форум.7z
(144.2 KiB) Скачиваний: 254

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

Ср июл 12, 2017 15:04:43

Если я не пропустил, то описание переменных в 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

Как все сложно в этом баском , если считывать имя переменной из памяти проще то покажите как это делается , мне лично все равно каким образом работать с памятью , главное что бы это было по проще и работало.

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

Ср июл 12, 2017 17:09:14

OLEGKARAS писал(а):Как все сложно в этом баском


Так пишите на том, на чем проще. Делов-то. Конечно сложно, тут Вам не Ассемблер какой-нибудь, тут бейсик знать нужно. :tea:
Последний раз редактировалось edm2007 Ср июл 12, 2017 17:11:24, всего редактировалось 1 раз.

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

Ср июл 12, 2017 17:11:16

Дело в том что исходник этот уже написан в баском , а на том чем проще я такое не напишу.

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

Ср июл 12, 2017 17:34:20

Напишите в строчке 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

Выдает ошибку 253.
Ответить