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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

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

Сообщение Ivanoff-iv »

я зашел, думал тут АСМ, а тут БАСМ, :oops: посмотри как таймер настроен на 272 стр. этого же форума 5е сообщение снизу (от КОТика) сразу под заголовком "настройка шим" настраивется таймер (правда 0й) попробуй по аналогии
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение 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
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение 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



Как-то так... :)
С уважением,
Алексей.
IDok
Встал на лапы
Сообщения: 122
Зарегистрирован: Ср фев 01, 2017 17:57:15

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

Сообщение IDok »

Gordon Shumway а эти переменные считаются как? ну т.е. sec идет от 1 до 60 потом прибавляется min (от 1 до 60) и так по кругу?
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

[uquote="IDok",url="/forum/viewtopic.php?p=3140331#p3140331"]Gordon Shumway а эти переменные считаются как?[/uquote]

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

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

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

Сообщение edm2007 »

Ну как настраивать таймер тоже знать нужно. Например, в AT2313 нет асинхронного режима у таймеров. :))
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

[uquote="edm2007",url="/forum/viewtopic.php?p=3140371#p3140371"]Ну как настраивать таймер тоже знать нужно. Например, в AT2313 нет асинхронного режима у таймеров. :))[/uquote]

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

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

Сообщение edm2007 »

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


А, это без вопросов тогда. :beer: Асинхронный таймер - шикарная штука, согласен. Да еще и в баскоме реализованы хардварно все эти переменные. Самое оно для начинающего. :solder:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

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

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

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

Сообщение edm2007 »

Да, в режиме powersave можно разбудиться только асинхронно. И выбор невелик - асинхронный таймер, прерывание по низкому уровню, сторожевой пес да хард ресет. И в этом плане асинхронный таймер это просто находка, уснуть и просыпаться раз в секунду на батарейном питании - дорогого стоит. Это здорово экономит батарейные ресурсы.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

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

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

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

Сообщение OLEGKARAS »

Добрый день.
Вот исходник взятый из интернета, в нем уже используется память EEPROM , как мне в этом исходнике использовать память для записи еще своих уставок ?
Вложения
izmer128_PowerMeter14.rar
(3.41 КБ) 304 скачивания
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Берете и дописываете свои уставки. Свободная EEPROM еще есть.
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

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

Сообщение OLEGKARAS »

Вот посмотрите , файл 12202_32 , в нем строчка 123 чтение из памяти , 561 запись в память , но почему то в эту ячейку или не записывается или не читается , хотя если эти строки поместить в новый файл все пишется и читается.
Вложения
форум.7z
(144.2 КБ) 279 скачиваний
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение 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.
Не проще считывать имя переменной из памяти, а не мучиться с адресами? Для работы с прямой адресацией памяти нужен опыт и отличное понимание что, где и в какой момент работы программы находится в памяти.
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

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

Сообщение OLEGKARAS »

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

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

Сообщение edm2007 »

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


Так пишите на том, на чем проще. Делов-то. Конечно сложно, тут Вам не Ассемблер какой-нибудь, тут бейсик знать нужно. :tea:
Последний раз редактировалось edm2007 Ср июл 12, 2017 17:11:24, всего редактировалось 1 раз.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

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

Сообщение OLEGKARAS »

Дело в том что исходник этот уже написан в баском , а на том чем проще я такое не напишу.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Напишите в строчке 67

Dim U_min_e As Eram Word

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

U_min = U_min_e

И все дела.
Но думаю, что раз у Вас такие трудности, то заполнение переменной U_min_e тоже вызовет проблемы.
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

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

Сообщение OLEGKARAS »

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

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