Страница 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 от протосса с родной прошивкой. Накачал альтернативных, но пока не пробовал.
Я брал схему и прошивку , с нашего сайта ничё не менял и не переделывал , вчера говорил с новым хозяином прогера говорит шьёт из под баскома без проблем :dont_know:

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]
В основной цикл включаете свой код. Когда наступит прерывание
обработчик передаст управление подпрограмме. Подпрограмма отработает и вернется обратно.
У меня ситуация обратная. Не могу вернутся из цикла :lol:
Приблизительно так

Код: Выделить всё

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
Подскажите, как программно включить подтягивающий резистор?
В одном исходнике нашел такую конструкцию:

Код: Выделить всё

Config Pind.0 = Input
Set Portd0.0
С первой строкой понятно, а со второй не очень. Может нужно
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
С такой формой записи понятно.
Меня именно озадачила запись оператора

Код: Выделить всё

SET PORTD0.0
а не

Код: Выделить всё

SET PORTD.0
И в исходнике, который я видел, была именно такая форма записи.
Компилятор не дает ошибки на этом операторе, но что он делает?

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
Господа спецы, неужели никто не знает как пересчитать значения АЦП в напряжение и ток? тут