Страница 140 из 304

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

Добавлено: Пн июл 23, 2012 12:44:53
edm2007
:)) Вообще переходы по Goto не так страшны, как ими пугают. Наоборот, самая простая и логичная команда для компилятора. Только одна опасность - нужно быть очень внимательным, чтобы не "упрыгать" куда-нибудь не туда. Так запросто по невнимательности, перепрыгиваются важные и нужные участки кода. Ищи потом проблему... :)

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

Добавлено: Пн июл 23, 2012 15:05:58
amv2000
edm2007 писал(а):Так запросто по невнимательности, перепрыгиваются важные и нужные участки кода. Ищи потом проблему... :)
Ну я пока только лишку напрыгал :)))

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

Добавлено: Чт июл 26, 2012 10:22:29
amv2000
А еще вопрос, используем таймер 0 для индикации, таймер 1 для ШИМ и прерывания Int1, Int0 энкодер и кнопки. Не будет это всё друг другу мешать, в частности индикации?

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

Добавлено: Чт июл 26, 2012 10:55:56
zero648
Не должно, если настроить частоту таймер0 кратную int1, таймер1, надо полагать, будет привязан к int1? Индикацию и кнопки можно запихать в таймер0, а энкодер int0 надо смотреть по ходу уже.

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

Добавлено: Чт июл 26, 2012 13:50:10
amv2000
zero648 писал(а):настроить частоту таймер0 кратную int1
Поясните пожалуйста, как можно настроить частоту int1 это же прерывание, могу нажать сейчас к примеру на кнопку, могу через час....

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

Добавлено: Чт июл 26, 2012 14:44:44
edm2007
amv2000 писал(а):Не будет это всё друг другу мешать, в частности индикации?
Все зависит от того, сколько будет длиться обработка других прерываний. У меня спокойно работает и динамическая индикация, и опрос энкодера на прерывании, и кнопка тоже. Обработку делайте шустрее, и все будет в порядке.

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

Добавлено: Чт июл 26, 2012 18:15:51
zero648
amv2000 писал(а):Поясните пожалуйста, как можно настроить частоту int1 это же прерывание, могу нажать сейчас к примеру на кнопку, могу через час....
Т.е. int1 не для шим? если нет, тогда можно произвольно

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

Добавлено: Чт июл 26, 2012 18:19:09
edm2007
В смысле, INT1 для ШИМ?

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

Добавлено: Чт июл 26, 2012 18:49:45
zero648
Чет, я не понял, че к чему относится:
таймер1 - шим,
int1 - энкодер,
int0 - кнопки.
Так, чтоли?

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

Добавлено: Чт июл 26, 2012 18:52:12
edm2007
Ну например так. Я просто понять не могу, какое отношение прерывание INT может иметь к ШИМ. :)

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

Добавлено: Чт июл 26, 2012 18:53:44
zero648
edm2007 писал(а):В смысле, INT1 для ШИМ?
Я понял, что для управления двигателем с энкодером на 220V :facepalm:

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

Добавлено: Чт июл 26, 2012 19:20:16
edm2007
А, в смысле энкодер на валу двигателя, внешнее прерывание щупает обороты и рулит ШИМом (которая, в свою очередь, управляет двигателем)? :)

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

Добавлено: Чт июл 26, 2012 20:01:40
amv2000
На Таймер 0 заведена LED индикация
Таймер 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

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

Добавлено: Чт июл 26, 2012 22:51:17
zero648
Чем будет управлять программа?

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

Добавлено: Пт июл 27, 2012 07:25:42
amv2000
Программа управления блоком питания с выводом текущих показаний U,I на LED, вся служебная информация выводится на ЖК (установка, настройка БП и пр.) А дальше как хватит фантазии и ума.

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

Добавлено: Вт июл 31, 2012 09:13:34
Gordon Shumway
Доброго времени суток всем ! :)

Вот тут развел обсуждение, но пока картинка никак не складывается...

Нужно сотворить диммер для настольной лампы. Включалка/выключалка получилась, а вот с регулировкой яркости никак.
Подсказывали насчет синхронизации с частотой сети, но никак не соображу, как это сделать со стороны Баскома.
Сейчас программка написана для Tiny13, задействован аппаратный шим. Светодиод на выходе отлично включается/выключается и показывает, что яркость регулируется. А вот с лампочкой накаливания никак...

Натолкните, плз, на путь !

Спасибо !

UPD: Яркость всё-таки регулируется на лампе, но на уровнях кроме максимального лампа начинает часто моргать. Но видно, что сам уровень яркости меняется.

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

Добавлено: Вт июл 31, 2012 10:14:52
zero648
Лампа включаестся через тиристор или семистор?

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

Добавлено: Вт июл 31, 2012 10:18:51
zero648
Все, понял, симистор

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

Добавлено: Вт июл 31, 2012 10:19:38
Gordon Shumway
zero648 писал(а):Лампа включаестся через тиристор или семистор?
Через классическую схему с гальванической развязкой "Оптотиристор moc3041 + триак bt139-600"
triac-moc3041.GIF
(5.59 КБ) 293 скачивания

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

Добавлено: Вт июл 31, 2012 10:20:58
zero648
Кстати, у тебя MOC3061 с zero-cross, а надо без него, например moc3052