BASCOM AVR в вопросах и ответах
Доброго всем времени суток. Извините за а вторжение и наверное за глупый вопрос, ткните носом или скиньте на почту описание команд на русском (ksv.iv@yandex.ru), как то видел всё в одном файле, а найти не могу. Несколько дней сижу, пытаюсь нарыть инфу и упорядочить для дальнейшей работы. Решил перейти на BASCOM, пишу проги в ФЛОВ КОДе, для небольших проектов нормально, но есть ограничения и вес прошивок получается не малый. На бейсике раньше писал , правде ещё на SPECTRUM, а за каждым оператором лазить в инет или по разным описаниям, время не напасёшься. Сильно не ругайте, я понимаю, чтоб что то написать, нужно потрудится.
- Реклама
Я начинал с этого. Вполне понятно для начала.ksv68 писал(а):ткните носом или скиньте на почту описание команд на русском.
С уважением,
Алексей.
Алексей.
Декада это хорошо для начала, да. Касаемо команд, так тут у баскома шикарная справка. Да, на английском, так и документация на МК в оригинале тоже не на русском. Так что лучше бы руководствоваться оригиналом, слишком уж часто встречаются ошибки в переводах. Тем более что там все более чем понятно.
А если по вопросу, то есть в сети перевод мануала к BASCOM8051, там каждая команда переведена с примерами. Но с AVR довольно много различий (хоть и для освоения тоже пойдет). Еще на форуме баскома были попытки перевести справку, но что-то все сошло на нет...
А если по вопросу, то есть в сети перевод мануала к BASCOM8051, там каждая команда переведена с примерами. Но с AVR довольно много различий (хоть и для освоения тоже пойдет). Еще на форуме баскома были попытки перевести справку, но что-то все сошло на нет...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Спасибо за столь оперативный ответ, BASCOM8051 я нашёл, там разница в командах. Буду пробовать. Язык я всё что то выбираю не из популярных 
Я как то скачивал какую то версию и там была таблица команд с синтаксисом в файле ворд, но из за любви к прядку на компе я её стёр, а было уже давненько.
- Реклама
Если другие таймеры планируете занять чем-то другим, то можно делать динамику с регулировкой яркости и на одном прерывании таймера, для этого нужно аппаратный прескллер сделать меньше, например 1:8, и добавить в обработчик программный прескаллер, вот этим программный прескаллером и регулируется яркость.dimon-ru-80 писал(а):Уважаемые коты помогите кодом организовать регулировку яркости в часах . Контроллер Atmega8 тактируется от внутреннего генератора 8 мГц.
Хочется по переполнению TIMER0 выполнять динамическую индикацию, а по совпадению того же таймера гасить порт, не могу осилить код
Засвечиваем разряд-задержка-гасим разряд. Регулируя задержку меняем яркость свечения, я делал так, только не в баском.
Регулировать яркость нужно изменением скважности а не частоты. Так что Ваш метод в корне неверен. 
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Частота обновления индикации должна быть постоянной. Прерывание будет вызываться достаточно часто для индикации, и не слишком часто чтобы мешать остальному. Или вы всерьез рассматриваете вариант с индикацией в основном цикле? Самым же очевидным и удобным способом регулировки яркости светодиодов является ШИМ. При этом можно быть точно уверенным, что не появятся баги в виде мерцаний и прочего. Что тут мудрить...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Про основной цикл речи нет, все работает в прерывании, для наглядности диаграмка с двумя вариантами:


Не совсем понятно. Здесь же и меняется скважность? Я так подозреваю, речь идет о программной ШИМ...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Вот именно! только одним прерыванием, а не двумя. Вот для этого и нужно частоту повысить.
В одном проекте у меня на одном таймере и на одном его прерывании обрабатывается динамика с регулировкой яркости плюс опрос кнопок плюс выводится звук в формате wav 8000 kHz и ничего не мерцает и не троит.
В одном проекте у меня на одном таймере и на одном его прерывании обрабатывается динамика с регулировкой яркости плюс опрос кнопок плюс выводится звук в формате wav 8000 kHz и ничего не мерцает и не троит.
Так это понятно, программная ШИМ имеет право на жизнь, и позволяет на одном таймере кучу каналов реализовать при необходимости. Частота высокая, но она не меняется. Об этом речь. Выше же был пост, когда предлагалось изменять яркость именно меняя частоту. А это уже совсем другое...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
По-моему Я и писал про частоту, в другом посте предлагалось менять задержку.
В ШИМ частота неизменна. Предлагая менять задержку по-сути и предлагалось изменять частоту обновления индикации.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Задержку менял, когда индикатор был в основном цикле, вводя задержку тормозился цикл, делал это ради эксперимента, потом индикацию сделал через прерывание и до регулировки как то руки не дошли.
Подскажите, как подключить подтягивающие резисторы на порт при опросе кнопок, чтоб не вешать резюки.
Подскажите, как подключить подтягивающие резисторы на порт при опросе кнопок, чтоб не вешать резюки.
Когда порт настроен на вход (DDRX = 0), регистр PORT отвечает за подтяжку. В баскоме так:
Можно так:
Оба варианта равнозначны. Можно записью в регистры наглядно:
Код: Выделить всё
Config PORTB.1 = Input ' вывод PB1 - вход
PORTB.1 = 1 ' включаем внутренний подтягивающий резистор
Код: Выделить всё
Set PORTB.1 ' включаем внутренний подтягивающий резистор
Код: Выделить всё
DDRB = &B00000000 ' весь порт на вход
PORTB = &B11001100 ' подтяжка у выводов PB7, PB6, PB3, PB2
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Подскажите, а можно два сравнения сделать по функции ИЛИ , И ,и как правильно написать
If Keynim = 0 and If Key = 0 then Return пример
If Keynim = 0 and If Key = 0 then Return пример
Второй IF убрать нужно.ksv68 писал(а): как правильно написать
If Keynim = 0 and If Key = 0 then Return пример
Но я делал так:
Код: Выделить всё
if keymin = 0 then
if key = 0 then return
end ifС уважением,
Алексей.
Алексей.


