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

Обсуждаем контроллеры компании Atmel.
Ответить
Открыл глаза
Сообщения: 66
Зарегистрирован: Пт дек 10, 2010 18:29:26

Сообщение user2007 »

TRIOD писал(а):Спасибо за подсказку. теперь я понимаю что Debounce мне не подходит. Поскольку мне нужен вариант который не будет зависить от задержек в основном цикле програмы. Получается только через таимеры.
Совершенно верно! Марк Альбертс советует использовать в примерах(см.Config Timer0)
Timer0 как системный таймер с безусловным прерыванием программы по факту его переполнения.
Смотрим в словаре: BOUNCE - отскок, дергание; на французский манер DEBOUNCE - антидребезг, время выдержки до установления состояния - вместо него можно использовать WAITMS. :))
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки

Сообщение Секретный кот »

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

Сообщение edm2007 »

Секретный кот писал(а):К чуть ранее обсуждавшейся теме: довольно странно, что компилятор не ругается на переменные в задержках (wait, waitms), хотя по идее должен бы, раз их использовать нельзя.
Так это только про Waitus написано, вроде. "The WAITUS is used internal by some statements. It was added to the BASCOM statements but it does NOT accept a variable. Only a constant is accepted."
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Открыл глаза
Сообщения: 66
Зарегистрирован: Пт дек 10, 2010 18:29:26

Сообщение user2007 »

Секретный кот писал(а):К чуть ранее обсуждавшейся теме: довольно странно, что компилятор не ругается на переменные в задержках (wait, waitms), хотя по идее должен бы, раз их использовать нельзя.
А кто говорит про переменные в макрокомандах WAIT, WAITUS, WAITMS? Все они применяются только с константами. Но в цикле (см.стр.48 форума) можно получить любую задержку,задавая КОЛИЧЕСТВО циклов. Эта величина является переменной, зависящей от условий программы.
Например:
Const N = 10
WAITMS N 'это ничего не нарушает - N не меняется, всегда равно 10.
А если сделаем так:
Const N = 10
Dim N1 As WORD
-------------------
WHILE N1>0
WAITMS N '(или WAITUS N, или WAIT N) - в задержке КОНСТАНТА
DECR N1
WEND
то получаем программную переменную задержку с кратностью 10 мс.Так и задумывал Марк Альбертс. Сейчас он пошел на поводу у неких просителей и рассматривает вопрос о разрешении
переменной в макрокоманде WAIT.По-моему, это лишнее. Все достаточно стандартно и логично :)





Реклама
Эиком - электронные компоненты и радиодетали
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

в новой версии уже сделано
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

Сообщение kip96 »

A, Mark Alberts, не говорит ни где, что делает строчка Config Lcd = 16 * 1 или Config Lcd = 40 * 4 :sleep: ?
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Реклама
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

а разве из инструкции не ясно?
запустите Баском, нажмите F1
наберите CONFIG LCD
и всё написано...
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

Сообщение kip96 »

kip96 писал(а):вот писал я тут про индикатор 1601. ни как не выходит одной строчкой 16 символов написать. И на что я обратил внимание-Как бы я не писал Config Lcd = 16 * 1 или Config Lcd = 40 * 4, в HEX файле ни чего не меняяется. На кой тогда вообще эта строчка?
При разных Config Lcd , HEX файл у меня получался одинаковый. Получается нет разницы!
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки

Сообщение Секретный кот »

user2007 писал(а):А кто говорит про переменные в макрокомандах WAIT, WAITUS, WAITMS?
А что собственно мешает про них говорить в случае WAIT и WAITMS? В документации про это ни слова (в отличие от WAITUS), компилятор на их использование не ругается. Тем не менее, по факту действительно они не работают.
Отсюда и непонятки.
Даже остановленные часы два раза в сутки показывают правильное время.
Контактная информация:
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

Сообщение kip96 »

aleksandr-zh писал(а):а разве из инструкции не ясно?
Не совсем. Разъясните пожалуйста.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

The type of LCD display used. This can be :
40 * 4,16 * 1, 16 * 2, 16 * 4, 16 * 4, 20 * 2 or 20 * 4 or 16 * 1a or 20*4A.

Default 16 * 2 is assumed.
When you have a 16 * 2 display, you don't have to use this statement.

The 16 * 1a is special. It is used for 2 * 8 displays that have the address of line 2, starting at location &H8.
...

проще говоря, если у вас обычный на 16х2, то ничего не надо указывать
если иное - описывайте

при использовании разных ЖКИ будут отличаться команды, управляющие его работой
попробуйте сделать надпись на 10 символов для разных моделей : 16х2, 16х1 и 8х1
я уверен, что код будет разный - должны быть добавлены команды перехода между областями памяти ЖКИ

у меня есть только 16х2
проверить иное не смогу
Вымогатель припоя
Аватара пользователя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

Сообщение TRIOD »

Секретный кот писал(а):
user2007 писал(а):А кто говорит про переменные в макрокомандах WAIT, WAITUS, WAITMS?
А что собственно мешает про них говорить в случае WAIT и WAITMS? В документации про это ни слова (в отличие от WAITUS), компилятор на их использование не ругается. Тем не менее, по факту действительно они не работают.
Отсюда и непонятки.
Почему не работают? У меня задрека превязана к переменной значение которой меняется в прерывании.
Только абсолютная пустота бездны принесёт мне покой.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

Сообщение kip96 »

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

Сообщение edm2007 »

TRIOD писал(а):
Секретный кот писал(а): А что собственно мешает про них говорить в случае WAIT и WAITMS? В документации про это ни слова (в отличие от WAITUS), компилятор на их использование не ругается. Тем не менее, по факту действительно они не работают.
Отсюда и непонятки.
Почему не работают? У меня задрека превязана к переменной значение которой меняется в прерывании.
Да в том-то и дело что работают. Проблем с этим небыло вообще никогда. Как уже писал выше, в хелпе только про WAITUS речь идет. Это разработчик на словах говорит что нельзя?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Открыл глаза
Сообщения: 66
Зарегистрирован: Пт дек 10, 2010 18:29:26

Сообщение user2007 »

Секретный кот писал(а):
user2007 писал(а):А кто говорит про переменные в макрокомандах WAIT, WAITUS, WAITMS?

А что собственно мешает про них говорить в случае WAIT и WAITMS? В документации про это ни слова (в отличие от WAITUS), компилятор на их использование не ругается. Тем не менее, по факту действительно они не работают.
Отсюда и непонятки.

В принципе, Вы можете задать свой вопрос о том, что компилятор не воспринимает переменные в макрокомандах WAIT(MS) как ошибку,а также другие вопросы, напрямую Марку Альбертсу.Я не знаю таких людей, которым бы он не ответил, особенно жителям из таких экзотических стран, как Россия. Но то, что уже есть в HELP'е(это насчет DEBOUNCE), лучше разбирать на форуме.
Естественно,что вопросы нужно задавать вразумительно по-английски по адресу E-mail: mark@mcselec.com. За счет обратной связи язык постоянно совершенствуется. Если ошибка реально найдена и будет исправлена - это будет Ваш небольшой вклад в BASCOM-AVR.
Можно также задать его на форуме сайта http://www.mcselec.com :)
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

я перевожу документацию на русский
интерфейс уже почти полностью переведен и вылизан, но огрехи в виде непомещающихся надписей еще есть
Марк обещал исправить

только что получил от него письмо: опять проблемы с отображением кириллицы на разных компах... будет решать и эту проблему


если есть конкретные вопросы о Баском - пишите
но конкретно и с примерами. Обязательно используйте самую свежую версию (демо тоже обновляется), и обязательно указывайте тип МК
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

aleksandr-zh писал(а):демо тоже обновляется
Текущая версия демки - 1.11.9.8
Я бы не сказал что она часто обновляется.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки

Сообщение Секретный кот »

TRIOD писал(а):Почему не работают?
edm2007 писал(а):Да в том-то и дело что работают.
Сейчас уже точно не вспомню, но точно были с этим глюки. В частности, в одной моей программе выходной сигнал, формировавшийся с использованием задержек WAITMS X, оставался неизменным. А при замене переменной на соответствующие цифры всё менялось. С тех пор стараюсь как-то избегать использования встроенных команд задержки и юзать свою подпрограмму (вдобавок, она намного точнее :) ).
Даже остановленные часы два раза в сутки показывают правильное время.
Контактная информация:
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

Сообщение kip96 »

kip96 писал(а):Похоже и со своей проблемой решил. Завтра в железе проверю
Вообщем был мой косяк и недопонимание вопроса. Как привыкли мы пихать всякие библиотеки ($LIB), (берётся готовая шапка и копируется), так и у меня стояла $lib "lcd4.lbx" Вот она и не довала мне работать с 16*1а. Пока вручную не набрал тестовую программу, не дошло.
Вот читаю:
The 16 * 1a is special. It is used for 2 * 8 displays that have the address of line 2, starting at location &H8.
- ведь мой же случай, а оно не получается! Толи лыжи не едут, толи я ... :wink:
Окозалось- лыжи в порядке. :cry: :?
Так-что напрашивается вопрос:
aleksandr-zh, У Вас нельзя-ли русский хелп попросить, за умеренную оплату конечно-же, и оплату попроще (скажем там на телефон денег кинуть).?
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

перевод будет бесплатен, просто я один. а документик-то - огроменный!
да еще бывает не понимание прочитанного - приходится просить Марка объяснить, что именно он хотел сказать той или иной фразой
Ответить

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