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

Обсуждаем контроллеры компании Atmel.
Paha100
Родился
Сообщения: 13
Зарегистрирован: Вс апр 25, 2010 20:45:03

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

Сообщение Paha100 »

У меня микросхема FT232 преобразовывает USB-COM
Аватара пользователя
nsl2004
Мучитель микросхем
Сообщения: 402
Зарегистрирован: Пт май 29, 2009 10:14:29

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

Сообщение 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 сохраняется значение вызвавшее переход. Обнулять его нельзя, т.к ШИМ из крайнего
положения должен плавно отработать в противоположное.
Я заблудился в этих циклах не по детски. Прошу помочь кто чем может.
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

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

Сообщение dimon-790 »

Shuriko писал(а):У меня никак не получилось прикрутить 910 от протосса с родной прошивкой. Накачал альтернативных, но пока не пробовал.


Я брал схему и прошивку , с нашего сайта ничё не менял и не переделывал , вчера говорил с новым хозяином прогера говорит шьёт из под баскома без проблем :dont_know:
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

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

Сообщение 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, но цикл прерывался пока кнопка была нажата.

Заранее спасибо!
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Аватара пользователя
nsl2004
Мучитель микросхем
Сообщения: 402
Зарегистрирован: Пт май 29, 2009 10:14:29

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

Сообщение 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


Даже работает! :))
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

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

Сообщение max50 »

nsl2004 спасибо! Буду пробывать!
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

У меня ситуация обратная. Не могу вернутся из цикла
Приблизительно так

Попробуйте в прерывании менять переменную и примените DO...LOOP UNTIL A=10
В прерывании А делаем равным 10 и при возвращении в цикл из него выходим.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Аватара пользователя
nsl2004
Мучитель микросхем
Сообщения: 402
Зарегистрирован: Пт май 29, 2009 10:14:29

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

Сообщение nsl2004 »

kip96 писал(а):
У меня ситуация обратная. Не могу вернутся из цикла
Приблизительно так

Попробуйте в прерывании менять переменную и примените DO...LOOP UNTIL A=10
В прерывании А делаем равным 10 и при возвращении в цикл из него выходим.

Спасибо , но это код для max50. Мой несколько сложнее. По мах или min срабатывает
выход из цикла. При возврате работа не возобновляется, тк значение и так крайнее.
Т.е я думаю надо применить какой то прием который я еще не придумал. Может кто
знает и подскажет. А так подробности парой постов выше.
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

Старайтесь не использовать в прерывании ртправления на метки. Меняйте переменные.
Или
Отработали шим
bitwait PortXX- ждём нажатие кнопки
нажали -пошли дальше, до следующего bitwait(a)
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Аватара пользователя
nsl2004
Мучитель микросхем
Сообщения: 402
Зарегистрирован: Пт май 29, 2009 10:14:29

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

Сообщение nsl2004 »

kip96 писал(а):Старайтесь не использовать в прерывании ртправления на метки. Меняйте переменные.
Или
Отработали шим
bitwait PortXX- ждём нажатие кнопки
нажали -пошли дальше, до следующего bitwait(a)

О это дельный совет, попробую составить алгоритм. Потому как переход на метки тупик пока что. Еще думаю
может ввести как то прерывание по срабатыванию ШИМ. Т.е типа достигло максимума прервало - и работает другкая подпрограмма.
Только я ни разу не совмещал два сразу. Тоже поробую. Пока я в поиске. Накидаю супер простую болванку и буду экспере
менты ставить. А то я уже опять за учебники засел, а без направления это крайне долго.
Аватара пользователя
zybex
Грызет канифоль
Сообщения: 266
Зарегистрирован: Пт май 14, 2010 15:26:14

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

Сообщение zybex »

Скажите пожалуйста, у вас нет примера кода, где можно задавать частоту шим (pwm) в широком диапазоне, а не привязанного к основному генератору, делителям и разрядности таймера. а то как-то не много вариантов получается с частотой...
Аватара пользователя
nsl2004
Мучитель микросхем
Сообщения: 402
Зарегистрирован: Пт май 29, 2009 10:14:29

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

Сообщение nsl2004 »

zybex писал(а):Скажите пожалуйста, у вас нет примера кода, где можно задавать частоту шим (pwm) в широком диапазоне, а не привязанного к основному генератору, делителям и разрядности таймера. а то как-то не много вариантов получается с частотой...

Если нужно менять частоту, то мне кажется что Вам нужен не ШИМ а ЧИМ. Там скважность будет постоянная , а вот частоту можно менять. Что то типа того.
Аватара пользователя
zybex
Грызет канифоль
Сообщения: 266
Зарегистрирован: Пт май 14, 2010 15:26:14

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

Сообщение zybex »

nsl2004 писал(а):
zybex писал(а):Скажите пожалуйста, у вас нет примера кода, где можно задавать частоту шим (pwm) в широком диапазоне, а не привязанного к основному генератору, делителям и разрядности таймера. а то как-то не много вариантов получается с частотой...

Если нужно менять частоту, то мне кажется что Вам нужен не ШИМ а ЧИМ. Там скважность будет постоянная , а вот частоту можно менять. Что то типа того.


не совсем то. мне нужно подбирать частоту в определенном диапазоне. а потом юзать шим на этой частоте.
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

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

Сообщение max50 »

Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Аватара пользователя
Intel_agent
Родился
Сообщения: 18
Зарегистрирован: Вс апр 18, 2010 16:43:08
Откуда: Улан-Удэ

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

Сообщение Intel_agent »

Добрый день
Требуется создать ампервольтметр, общий код вроде сделал, а вот никак не могу просчитать как перевести данные от АЦП в вид напряжения и тока
Пределы измерений: напряжение до 9,99 вольт, ток до 3-5 ампер (датчик тока проволочный резистор 0,2 ома, при необходимости могу изменить до 0,1 ома)
Контроллер - ATMega8, код - Bascom
P.S. Код большой, находится в прикрепленном файле
Вложения
ampervoltmeter.zip
(1.02 КБ) 313 скачиваний
dhouse
Встал на лапы
Сообщения: 84
Зарегистрирован: Пт апр 16, 2010 12:30:03

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

Сообщение dhouse »

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

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

Config Pind.0 = Input
Set Portd0.0

С первой строкой понятно, а со второй не очень. Может нужно
Set Portd0.1 для включения подтяжки?
Аватара пользователя
Intel_agent
Родился
Сообщения: 18
Зарегистрирован: Вс апр 18, 2010 16:43:08
Откуда: Улан-Удэ

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

Сообщение Intel_agent »

dhouse
Да, но немного не так, надо Set Portd.0 - для установки подтяжки на нулевой порт D
Если надо другой порт, тогда:
Set PORTX.Y
где X - буква группы, Y - номер порта в группе
dhouse
Встал на лапы
Сообщения: 84
Зарегистрирован: Пт апр 16, 2010 12:30:03

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

Сообщение dhouse »

С такой формой записи понятно.
Меня именно озадачила запись оператора

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

SET PORTD0.0

а не

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

SET PORTD.0

И в исходнике, который я видел, была именно такая форма записи.
Компилятор не дает ошибки на этом операторе, но что он делает?
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

Чёт вы не то говорите.
Set- установить 1
Reset - сбросить в 0
поэтому
SET PORTD.0 - включить порт
либо
Reset PortD.0- выключить
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Аватара пользователя
Intel_agent
Родился
Сообщения: 18
Зарегистрирован: Вс апр 18, 2010 16:43:08
Откуда: Улан-Удэ

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

Сообщение Intel_agent »

Господа спецы, неужели никто не знает как пересчитать значения АЦП в напряжение и ток? тут
Ответить

Вернуться в «AVR»