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

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

Сообщение edm2007 »

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

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

Сообщение edm2007 »

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

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

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

Сообщение KSerg »

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

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

Сообщение edm2007 »

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

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

Сообщение Dnepr_1186 »

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

Сообщение edm2007 »

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

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

Сообщение Dnepr_1186 »

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

P.S. Другое дело, что код-то работает ровно так, как написан... Но это уже совсем другая история. :tea:
так что с кодом не так? что поменять надо? сам допереть не могу
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

Сообщение 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 и этот вывод настроен на вход?
Угу. И есть ли подтяжка кнопки.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

Сообщение Dnepr_1186 »

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

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

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

Сообщение edm2007 »

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

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

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

Сообщение Dnepr_1186 »

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

Сообщение edm2007 »

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

Сообщение Dnepr_1186 »

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

Сообщение edm2007 »

Потому что

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

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

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

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

Сообщение Dnepr_1186 »

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

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

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

Сообщение 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:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

А?

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

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