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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

KSerg писал(а):У Attiny 2313 есть 9ая нога, которая
"PD5 OC0B/T1"

Реально ли на нее повесить нагрузку, чтобы она включалась от Timer0 на 3сек. или оно только на Timer1 работает? Я что-то запутался.


Так а при чем тут Т1? Этот вывод может быть использован для подачи внешних тактовых импульсов для таймера Т1, потому он так и называется. Ну и ногодрыг для таймера Т0 (выход схемы сравнения - OC0B). А управление нагрузкой и отсчет времени никак не связаны совершенно, считайте чем угодно, и управляйте какой угодно ногой. PD5 - обычный пин порта, просто с альтернативными функциями. Как и остальные, впрочем.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Dnepr_1186 писал(а):такое ощущение что при нажатии не происходит перехода в подпрограмму


А у Вас случайно А1 не равна 0, изначально?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

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

Сообщение Novice user »

удалил
Последний раз редактировалось Novice user Чт мар 24, 2016 16:25:11, всего редактировалось 1 раз.
KSerg
Открыл глаза
Сообщения: 42
Зарегистрирован: Ср ноя 14, 2012 21:48:31

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

Сообщение KSerg »

edm2007 писал(а):
KSerg писал(а):У Attiny 2313 есть 9ая нога, которая
"PD5 OC0B/T1"

Реально ли на нее повесить нагрузку, чтобы она включалась от Timer0 на 3сек. или оно только на Timer1 работает? Я что-то запутался.


Так а при чем тут Т1? Этот вывод может быть использован для подачи внешних тактовых импульсов для таймера Т1, потому он так и называется. у и ногодрыг для таймера Т0 (выход схемы сравнения - OC0B).


Вы меня прямо спасли, что Т1 необязательно.
То есть я делаю на таймере0 CompB и верчу этой ногой как OC0B. правильно я понимаю?
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Смотрите, есть вывод PD5. Это 5-й пин порта D. Просто вывод, который можно настроить как выход, и управлять любой нагрузкой. Можно настроить как вход, и прикрутить кнопку. Но этот же вывод может быть использован альтернативно, для генерации того же ШИМ на основе таймера Т0, например. Это уже пин OC0. И этот же вывод может быть использован для внешнего подсчета импульсов таймера Т1. Это уже Т1. Получается что одна нога может быть и просто как нога (вход / выход), и как канал ШИМ для таймера Т0, и как внешнее тактирование таймера Т1. Все зависит только от Вашего желания. Вам нужно управлять нагрузкой? Берите любую ногу из свободных 18 (17, на самом деле). Считайте любым таймером, и дергайте любой ногой.

Если подробно опишете задачу, будет вариант решения.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

edm2007 писал(а):
Dnepr_1186 писал(а):такое ощущение что при нажатии не происходит перехода в подпрограмму


А у Вас случайно А1 не равна 0, изначально?

нет задал единицу изначально. Так что скажете? Внешне все правильно? Может протеус глючит? Или вряд ли?
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Ну вообще все там меняется, пройдите симуляцию пошагово (загрузите не hex файл, а obj, и нажмите "шаг" а не "воспроизвести" (вторая кнопка). Увидите как пошагово можно по коду проходить).

P.S. Другое дело, что код-то работает ровно так, как написан... Но это уже совсем другая история. :tea:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

edm2007 писал(а):Ну вообще все там меняется, пройдите симуляцию пошагово (загрузите не hex файл, а obj, и нажмите "шаг" а не "воспроизвести" (вторая кнопка). Увидите как пошагово можно по коду проходить).

P.S. Другое дело, что код-то работает ровно так, как написан... Но это уже совсем другая история. :tea:

так что с кодом не так? что поменять надо? сам допереть не могу
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

Кнопка точно подключена к PinB.1 и этот вывод настроен на вход?
Между шагами должны быть задержки. Не может мотор крутится со скоростью миллион шагов в секунду.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Для начала можно сделать так:

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

$regfile = "m8def.dat"
$crystal = 4000000

Config Portb.1 = Input
Config Portc = Output

Dim Steps As Byte

config  DEBOUNCE = 100 
'----------

Do

Debounce Pinb.1 , 0 , Stepinc , Sub

Loop

'----------

Stepinc:

Incr Steps
If Steps > 4 Then Steps = 1

Select Case Steps

     Case 1 : Portc = &B00000101
     Case 2 : Portc = &B00000110
     Case 3 : Portc = &B00001001
     Case 4 : Portc = &B00001010

End Select

Waitms 100

Return

End


При каждом нажатии - смена состояний. Измените код так, чтобы при удержании кнопки шаги менялись сами? Сделаете так, чтобы по второй кнопке все вертелось наиборот? :)

Мурик писал(а):Кнопка точно подключена к PinB.1 и этот вывод настроен на вход?


Угу. И есть ли подтяжка кнопки.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

да вот так, кнопка там где должна быть

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

Config Pinb.2 = Input
Pinb.1 = 1

ваш код работает, не пойму какой косяк в моем...
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Ваш код работает ровно так, как написан. Что именно не нравится?

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

Pinb.1 = 1


Конфигурировать подтяжку все же нужно через регистр PORT.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

Да переделал.
Пошло только когда в подпрограммы ввел задержку на 100мс. Спасибо за советы!
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Как написали, так и работало. У Вас шаги пролетали моментально один за другим, пока удерживалась кнопка. И лишь в конце была небольшая задержка. :)
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

решил сделать по вашему коду, так компактнее, только не могу понять. при steps=1 программа переходит к строке case 2 и так далее, т.е. сдвинуто на единицу. Почему так происходит?
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Потому что

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

Incr Steps


Если Вы зададите сразу 1, то в обработчике оно инкрементируется и станет равно 2. Так что либо начинаем работу с 0 (тогда при первом переходе она станет равна 1, и дальше все завертится нормально), либо код

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

Incr Steps
If Steps > 4 Then Steps = 1


переносим в конец обработчика.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

в том то и дело что я ничего не менял в вашем коде, и шаг по умолчанию сразу равен ноль, но при отладке в протеусе хорошо видно как перескакивает единицу в CASE и идет сразу на CASE 2 при шаге равном 1
Alexlon
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб июн 02, 2012 10:01:06

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

Сообщение Alexlon »

Не получается "развесить" 2 устройства 18b20 и ds1990 на разные выводы м\к Мега 8. Датчик температуры без инициализации порта для ds1990 работает как надо. При раскомментовании строки

" 'Config 1wire = Portd.3 'ключ ds1990"

18b20 сразу уходит в ERROR, даже без физического подключения ключа к порту. Что не так?

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

$regfile = "m8def.dat"
$crystal = 16000000
$hwstack = 128
$swstack = 128
$framesize = 128

Declare Sub 18b20

.....................................

Config 1wire = Portd.6                                      'датчик 18b20
'Config 1wire = Portd.3                                      'ключ ds1990

....................................

Do
....................................

Loop
End

'чтение данных с датчика
'********************************************************
Sub 18b20:

..................................................
End Sub

Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

edm2007 писал(а):Потому что

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

Incr Steps


Если Вы зададите сразу 1, то в обработчике оно инкрементируется и станет равно 2. Так что либо начинаем работу с 0 (тогда при первом переходе она станет равна 1, и дальше все завертится нормально), либо код

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

Incr Steps
If Steps > 4 Then Steps = 1


переносим в конец обработчика.

блин хоть тресни, при step=0 пропускает все case как и должно, при step=1, перескакивает на case 2 :shock:
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

А?

Изображение
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Ответить

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