BASCOM AVR в вопросах и ответах
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Реклама
Ну я пока только лишку напрыгалedm2007 писал(а):Так запросто по невнимательности, перепрыгиваются важные и нужные участки кода. Ищи потом проблему...
А еще вопрос, используем таймер 0 для индикации, таймер 1 для ШИМ и прерывания Int1, Int0 энкодер и кнопки. Не будет это всё друг другу мешать, в частности индикации?
Не должно, если настроить частоту таймер0 кратную int1, таймер1, надо полагать, будет привязан к int1? Индикацию и кнопки можно запихать в таймер0, а энкодер int0 надо смотреть по ходу уже.
Поясните пожалуйста, как можно настроить частоту int1 это же прерывание, могу нажать сейчас к примеру на кнопку, могу через час....zero648 писал(а):настроить частоту таймер0 кратную int1
- Реклама
Все зависит от того, сколько будет длиться обработка других прерываний. У меня спокойно работает и динамическая индикация, и опрос энкодера на прерывании, и кнопка тоже. Обработку делайте шустрее, и все будет в порядке.amv2000 писал(а):Не будет это всё друг другу мешать, в частности индикации?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Т.е. int1 не для шим? если нет, тогда можно произвольноamv2000 писал(а):Поясните пожалуйста, как можно настроить частоту int1 это же прерывание, могу нажать сейчас к примеру на кнопку, могу через час....
В смысле, INT1 для ШИМ?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Чет, я не понял, че к чему относится:
таймер1 - шим,
int1 - энкодер,
int0 - кнопки.
Так, чтоли?
таймер1 - шим,
int1 - энкодер,
int0 - кнопки.
Так, чтоли?
Ну например так. Я просто понять не могу, какое отношение прерывание INT может иметь к ШИМ. 
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Я понял, что для управления двигателем с энкодером на 220Vedm2007 писал(а):В смысле, INT1 для ШИМ?
А, в смысле энкодер на валу двигателя, внешнее прерывание щупает обороты и рулит ШИМом (которая, в свою очередь, управляет двигателем)? 
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
На Таймер 0 заведена LED индикация
Таймер 1 настроен на ШИМ
Энкодер попозже приделаю опрос через прерывание int1 или int 0
Таймер 1 настроен на ШИМ
Энкодер попозже приделаю опрос через прерывание int1 или int 0
Код: Выделить всё
$regfile = "m32def.dat" ' тип МК
$crystal = 16000000 ' выбор кристала для расчета задержек
' Аппаратный стек
$hwstack = 64 ' Описывает количество байт, отведенных для аппаратного стека. Когда вы используете команды CALL или GOSUB в стеке запоминаются по два байта. Когда вы используете две команды GOSUB, в стеке запоминаются 4 байта. Некоторые из инструкций также используют стек. При использовании прерываний в стеке сохраняется 32 байта.
' Программный стек
$swstack = 64 ' Описывает размер программного стека. Каждая локальная переменная использует 2 байта. Каждая переменная, используемая в подпрограмме, также использует 2 байта. Если вы использовали 10 переменных в подпрограмме и 3 параметра было передано в подпрограмму, то вам необходимо: 13 * 2 = 26 байт
' Размер фрейма
$framesize = 64 ' Описывает размер фрейма. Каждая локальная переменная запоминается в области памяти, которая называется 'фрейм'. Когда вы имеете 2 локальных переменных и символьную переменную длиной 10 символов, необходим фрейм размером (2*2) + 11 = 15 байт
'*******************************************************************************
' Конфигурация
'*******************************************************************************
'---------------------- [Конфигурация прерываний] ------------------------------
Config Timer0 = Timer , Prescale = 256 ' конфигурируем таймер индикации
On Ovf0 Led_indikator ' метка на прерывание индикации
'-------------------------- [конфигурация АЦП] ---------------------------------
Config Adc = Single , Prescaler = Auto , Reference = Aref ' настраиваем АЦП в режим единичного измерения, автоматическое деление частоты кварца,
'Admux = &B00011111 ' внешняя опора АЦП со входа AREF, внутренняя выключена
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Pind.4 = Output : Set Portd.4 ' конфигурация порта D4, D5 (ШИМ)
Config Pind.5 = Output : Set Portd.5 ' с подкл подтяг резисторов pul-up
Программа управления блоком питания с выводом текущих показаний U,I на LED, вся служебная информация выводится на ЖК (установка, настройка БП и пр.) А дальше как хватит фантазии и ума.
Доброго времени суток всем ! 
Вот тут развел обсуждение, но пока картинка никак не складывается...
Нужно сотворить диммер для настольной лампы. Включалка/выключалка получилась, а вот с регулировкой яркости никак.
Подсказывали насчет синхронизации с частотой сети, но никак не соображу, как это сделать со стороны Баскома.
Сейчас программка написана для Tiny13, задействован аппаратный шим. Светодиод на выходе отлично включается/выключается и показывает, что яркость регулируется. А вот с лампочкой накаливания никак...
Натолкните, плз, на путь !
Спасибо !
UPD: Яркость всё-таки регулируется на лампе, но на уровнях кроме максимального лампа начинает часто моргать. Но видно, что сам уровень яркости меняется.
Вот тут развел обсуждение, но пока картинка никак не складывается...
Нужно сотворить диммер для настольной лампы. Включалка/выключалка получилась, а вот с регулировкой яркости никак.
Подсказывали насчет синхронизации с частотой сети, но никак не соображу, как это сделать со стороны Баскома.
Сейчас программка написана для Tiny13, задействован аппаратный шим. Светодиод на выходе отлично включается/выключается и показывает, что яркость регулируется. А вот с лампочкой накаливания никак...
Натолкните, плз, на путь !
Спасибо !
UPD: Яркость всё-таки регулируется на лампе, но на уровнях кроме максимального лампа начинает часто моргать. Но видно, что сам уровень яркости меняется.
С уважением,
Алексей.
Алексей.
Через классическую схему с гальванической развязкой "Оптотиристор moc3041 + триак bt139-600"zero648 писал(а):Лампа включаестся через тиристор или семистор?
С уважением,
Алексей.
Алексей.
Кстати, у тебя MOC3061 с zero-cross, а надо без него, например moc3052


