Страница 37 из 304
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 14:25:30
Paha100
У меня микросхема FT232 преобразовывает USB-COM
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 21:58:34
nsl2004
Есть такая проблема, код привожу сокращенно.
Код: Выделить всё
'********************************** Управление ШИМ ********************************
Lk03:
Do
' *************************** Управление ШИМ **************************************
If Stp > 1 Then
Incr Cnt
If Cnt = 140 Then ' регулируем скорость ШИМ чем больше тeм медленнее
Cnt = 0
Decr Stp
If Direct > 0 Then
Ocr1a = &HFE - Stp
Else
If Stp = 0 Then
Ocr1a = 0
Else
Ocr1a = Stp
End If
End If
End If
End If
'************************ Устанавливаем флаг когда можно работать 1 wire *****
If Ocr1a = &HFD Then ' Например такое условие
Set A
Goto W01
End If
Loop 'Until A = 1 ' срабатывает один раз потом что тонадо делать
Проблема в следующем. Обработчик прерываний int0 передает управление на метку Lk03,
где начинает рабоать шим от 0 до 100 процентов. Второе прерывание от 100 процентов к нулю. И так по кругу.
Идеолгия программы - пока работает ШИМ ничего нигде происходить не должно. А вот когда его работа достигает либо максимума либо минимума
он должен остановится до следующего нажатия кнопки. Это работает. Далее. Когда ШИМ находится в одном из крайних положений
( в состоянии покоя. Не изменяет своих значений)
управление должно передатся другой подпрограмме которая передаст состояние в сеть 1 wire. ( отдельно эмулятор работает).
Не могу сообразить как выйти из этого цикла. По логике я отследил например верхнее положение значения OCR1a, и передал
управление другой подпрограмме. Подпрограмма отработала и по пришествии нового прерывания опять возвращается на метку Lk03.
Но ШИМ не заводится, т.к в регистре OCR1a сохраняется значение вызвавшее переход. Обнулять его нельзя, т.к ШИМ из крайнего
положения должен плавно отработать в противоположное.
Я заблудился в этих циклах не по детски. Прошу помочь кто чем может.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср июн 09, 2010 07:43:56
dimon-790
Shuriko писал(а):
У меня никак не получилось прикрутить 910 от протосса с родной прошивкой. Накачал альтернативных, но пока не пробовал.
Я брал схему и прошивку , с нашего сайта ничё не менял и не переделывал , вчера говорил с новым хозяином прогера говорит шьёт из под баскома без проблем

Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср июн 09, 2010 21:25:09
max50
Всем привет!
Есть такой цикл:
Код: Выделить всё
For D = 1 To 60
For A = 0 To 255
Pwm1a = A
Waitms 12
Next A
Pwm1a = 255
Wait Temp1
For A = 255 To 0 Step -1
Pwm1a = A
Waitms 12
Next A
Pwm1a = 0
Wait Temp2
Next D
Собственно вопрос:
как сделать так, чтобы при нажатии кнопки цикл прерывался в любой момент и программа переходила на подпрограмму?
Пробовал Exit For, но цикл прерывался пока кнопка была нажата.
Заранее спасибо!
Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср июн 09, 2010 22:07:38
nsl2004
max50
Приблизительно тоже что надо и мне.
Первый вопрос, вам надо чтобы прервалось, что то выполнилось. И вернулось обратно?
Для начала попробуйте использовать прерывание.
Вот тут подробно расписаны разные варианты - посмотрите возможно поможет.
[url]http://www.decada.org.ru/project/lessons/bascom_avr/10/index.php
[/url]
В основной цикл включаете свой код. Когда наступит прерывание
обработчик передаст управление подпрограмме. Подпрограмма отработает и вернется обратно.
У меня ситуация обратная. Не могу вернутся из цикла

Приблизительно так
Код: Выделить всё
Config Pind.6 = Output
Config Pind.2 = Input
Config Int0 = Falling
Dim Wtime As Byte
On Int0 Stopbutton
Cls
Wtime = 255
Enable Interrupts
Enable Int0
Do
Сюда Ваш код
Loop
Stopbutton:
Lcd "stopъ!"
Return
Было время вставил Ваш код
Код: Выделить всё
On Int0 Lk01 Nosave
Enable Interrupts
Enable Int0
Do
For D = 1 To 60
For A = 0 To 255
Pwm1a = A
Waitms 12
Next A
Pwm1a = 255
Wait 2
For A = 255 To 0 Step -1
Pwm1a = A
Waitms 12
Next A
Pwm1a = 0
Wait 1
Next D
Loop
End
Lk01:
Print "OPPANA!"
Return
Даже работает!

Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср июн 09, 2010 22:45:53
max50
nsl2004 спасибо! Буду пробывать!
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт июн 10, 2010 07:41:21
kip96
У меня ситуация обратная. Не могу вернутся из цикла
Приблизительно так
Попробуйте в прерывании менять переменную и примените DO...LOOP UNTIL A=10
В прерывании А делаем равным 10 и при возвращении в цикл из него выходим.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт июн 10, 2010 09:26:40
nsl2004
kip96 писал(а):У меня ситуация обратная. Не могу вернутся из цикла
Приблизительно так
Попробуйте в прерывании менять переменную и примените DO...LOOP UNTIL A=10
В прерывании А делаем равным 10 и при возвращении в цикл из него выходим.
Спасибо , но это код для
max50. Мой несколько сложнее. По мах или min срабатывает
выход из цикла. При возврате работа не возобновляется, тк значение и так крайнее.
Т.е я думаю надо применить какой то прием который я еще не придумал. Может кто
знает и подскажет. А так подробности парой постов выше.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пт июн 11, 2010 20:10:15
kip96
Старайтесь не использовать в прерывании ртправления на метки. Меняйте переменные.
Или
Отработали шим
bitwait PortXX- ждём нажатие кнопки
нажали -пошли дальше, до следующего bitwait(a)
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пт июн 11, 2010 22:30:40
nsl2004
kip96 писал(а):Старайтесь не использовать в прерывании ртправления на метки. Меняйте переменные.
Или
Отработали шим
bitwait PortXX- ждём нажатие кнопки
нажали -пошли дальше, до следующего bitwait(a)
О это дельный совет, попробую составить алгоритм. Потому как переход на метки тупик пока что. Еще думаю
может ввести как то прерывание по срабатыванию ШИМ. Т.е типа достигло максимума прервало - и работает другкая подпрограмма.
Только я ни разу не совмещал два сразу. Тоже поробую. Пока я в поиске. Накидаю супер простую болванку и буду экспере
менты ставить. А то я уже опять за учебники засел, а без направления это крайне долго.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс июн 13, 2010 22:04:20
zybex
Скажите пожалуйста, у вас нет примера кода, где можно задавать частоту шим (pwm) в широком диапазоне, а не привязанного к основному генератору, делителям и разрядности таймера. а то как-то не много вариантов получается с частотой...
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн июн 14, 2010 01:16:54
nsl2004
zybex писал(а):Скажите пожалуйста, у вас нет примера кода, где можно задавать частоту шим (pwm) в широком диапазоне, а не привязанного к основному генератору, делителям и разрядности таймера. а то как-то не много вариантов получается с частотой...
Если нужно менять частоту, то мне кажется что Вам нужен не ШИМ а ЧИМ. Там скважность будет постоянная , а вот частоту можно менять. Что то типа того.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн июн 14, 2010 02:25:41
zybex
nsl2004 писал(а):zybex писал(а):Скажите пожалуйста, у вас нет примера кода, где можно задавать частоту шим (pwm) в широком диапазоне, а не привязанного к основному генератору, делителям и разрядности таймера. а то как-то не много вариантов получается с частотой...
Если нужно менять частоту, то мне кажется что Вам нужен не ШИМ а ЧИМ. Там скважность будет постоянная , а вот частоту можно менять. Что то типа того.
не совсем то. мне нужно подбирать частоту в определенном диапазоне. а потом юзать шим на этой частоте.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн июн 14, 2010 06:49:48
max50
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс июн 20, 2010 06:59:04
Intel_agent
Добрый день
Требуется создать ампервольтметр, общий код вроде сделал, а вот никак не могу просчитать как перевести данные от АЦП в вид напряжения и тока
Пределы измерений: напряжение до 9,99 вольт, ток до 3-5 ампер (датчик тока проволочный резистор 0,2 ома, при необходимости могу изменить до 0,1 ома)
Контроллер - ATMega8, код - Bascom
P.S. Код большой, находится в прикрепленном файле
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн июн 21, 2010 14:44:16
dhouse
Подскажите, как программно включить подтягивающий резистор?
В одном исходнике нашел такую конструкцию:
С первой строкой понятно, а со второй не очень. Может нужно
Set Portd0.1 для включения подтяжки?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн июн 21, 2010 16:15:15
Intel_agent
dhouse
Да, но немного не так, надо Set Portd.0 - для установки подтяжки на нулевой порт D
Если надо другой порт, тогда:
Set PORTX.Y
где X - буква группы, Y - номер порта в группе
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт июн 22, 2010 08:30:32
dhouse
С такой формой записи понятно.
Меня именно озадачила запись оператора
а не
И в исходнике, который я видел, была именно такая форма записи.
Компилятор не дает ошибки на этом операторе, но что он делает?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт июн 22, 2010 09:10:59
kip96
Чёт вы не то говорите.
Set- установить 1
Reset - сбросить в 0
поэтому
SET PORTD.0 - включить порт
либо
Reset PortD.0- выключить
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт июн 24, 2010 11:15:33
Intel_agent
Господа спецы, неужели никто не знает как пересчитать значения АЦП в напряжение и ток?
тут