Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн июл 23, 2012 12:44:53
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
Ну я пока только лишку напрыгалedm2007 писал(а):Так запросто по невнимательности, перепрыгиваются важные и нужные участки кода. Ищи потом проблему...
Поясните пожалуйста, как можно настроить частоту int1 это же прерывание, могу нажать сейчас к примеру на кнопку, могу через час....zero648 писал(а):настроить частоту таймер0 кратную int1
Все зависит от того, сколько будет длиться обработка других прерываний. У меня спокойно работает и динамическая индикация, и опрос энкодера на прерывании, и кнопка тоже. Обработку делайте шустрее, и все будет в порядке.amv2000 писал(а):Не будет это всё друг другу мешать, в частности индикации?
Т.е. int1 не для шим? если нет, тогда можно произвольноamv2000 писал(а):Поясните пожалуйста, как можно настроить частоту int1 это же прерывание, могу нажать сейчас к примеру на кнопку, могу через час....
Я понял, что для управления двигателем с энкодером на 220Vedm2007 писал(а):В смысле, INT1 для ШИМ?
Код: Выделить всё
$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
Через классическую схему с гальванической развязкой "Оптотиристор moc3041 + триак bt139-600"zero648 писал(а):Лампа включаестся через тиристор или семистор?