Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/51: Рейтинг темы: голосов - 51, средняя оценка - 4.75
voyd118
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
1

Не отрабатывает кнопка в Proteus на Attiny85

10.08.2013, 12:00. Просмотров 9312. Ответов 21
Метки нет (Все метки)

Народ, посмотрите пожалуйста, выполняю проверку на "1" на порту 2, нажимаю кнопку в протеусе - ничего не происходит, но если просто подаю на вход Vcc, все выполняется на ура (таймер отключается), что бы это могло быть?

Код
while (1)
{
if((PINB & (1<<PINB2)))
{
TCCR1=0x00;
}
}






Может быть все от того, что я взял Power из меню терминал?, просто у контроллера питание не выведено.....

Сейчас попробовал подать сигнал с другого порта на вход этому порту - все отрабатывает..., очень это похоже на глюк proteus, может подскажете, кто как питание в схему вводит?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2013, 12:00
Ответы с готовыми решениями:

Регулярка findstr отрабатывает на одном файле, но не отрабатывает на другом
Приветствую ! Сижу, ругаюсь матом в голос потому, что регулярка срабатывает на одном текстовом...

Результат запроса отрабатывает в консоли, но не отрабатывает в модуле
Доброго времени суток! Собственно проблема в следующем, есть запрос, который возвращает дату...

Attiny85 и прерывания
Доброго времени суток! Решил воплотить один из проектов (давних задумок:)), но столкнулся с одной...

Проблема с ATtiny85
В общем пытались запрогать эту злую кремнивую хмакодявку а она не захотела определяться...

Самопрограммирование Attiny85
Всем привет, люди, подскажите плиз, есть ли возможность реализовать частичное стирание памяти...

21
stritsh
0 / 0 / 0
Регистрация: 28.12.2012
Сообщений: 161
10.08.2013, 15:13 2
Если хотите проверять состояние кнопки, то проще это делать проверкой пина на наличие лог. 0 при настройке его на вход с подтяжкой, при этом кнопка подключается между пином МК и GND.
0
voyd118
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
10.08.2013, 15:21 3
Цитата Сообщение от stritsh
Если хотите проверять состояние кнопки, то проще это делать проверкой пина на наличие лог. 0 при настройке его на вход с подтяжкой, при этом кнопка подключается между пином МК и GND.
Спасибо за рекомендацию, а не могли бы показать в коде?

насколько я понимаю измениться настройка входа

Код
PORTB=0x04;  // Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
DDRB=0x03;    // State5=T State4=T State3=T State2=P State1=0 State0=0
и добавится отрицание?

Код
if(!(PINB & (1<<PINB2)))
{
TCCR1=0x00;
}
0
voyd118
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
10.08.2013, 15:27 4
ничего не поменялось, ножка подтянута к единице, замыкается кнопкой на землю, но ничего не происходит, та же картина(.
0
10.08.2013, 15:27
voyd118
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
10.08.2013, 15:31 5
Я понимаю конечно, что это звучит странно, все же не фильтр второго порядка симулируем, но имхо дело в симуляторе, жаль контроллера нет, проверить не на чем....
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
10.08.2013, 15:42 6
Цитата Сообщение от voyd118
... проверить не на чем....
Специально для визуального контроля в Proteus есть элемент LogicProbe. УстановИте его на требуемый вход и все...
В диалоге выбора элементов вводите LogicProbe, их там два, большой и маленький, выбираете подходящий.
Если наоборот, нужно установить уровень, там же есть элемент LogicTrigle, возможно при настройке будет удобнее кнопки. При их применении никакие подтяжки не нужны, сплошная логика.
0
stritsh
0 / 0 / 0
Регистрация: 28.12.2012
Сообщений: 161
10.08.2013, 15:48 7
Цитата Сообщение от voyd118
насколько я понимаю измениться настройка входаКод:
PORTB=0x04; // Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
DDRB=0x03; // State5=T State4=T State3=T State2=P State1=0 State0=0
и добавится отрицание?
Код
if(!(PINB & (1<<PINB2)))
{
TCCR1=0x00;
}
Правильно понимаете. Только не пишите такими конструкциями DDRB=0x03; вам же самому потом сложнее читать будет.

ничего не поменялось, ножка подтянута к единице, замыкается кнопкой на землю, но ничего не происходит, та же картина(.
Что только когда кнопку накоротко замыкаешь работает? Если вы сделали как я писал выше, то должно работать 100%
0
voyd118
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
10.08.2013, 15:53 8
Цитата Сообщение от omokost
Цитата Сообщение от voyd118
... проверить не на чем....
Специально для визуального контроля в Proteus есть элемент LogicProbe. УстановИте его на требуемый вход и все...
В диалоге выбора элементов вводите LogicProbe, их там два, большой и маленький, выбираете подходящий.
Если наоборот, нужно установить уровень, там же есть элемент LogicTrigle, возможно при настройке будет удобнее кнопки.

Спасибо, честно говоря не вижу такого инструмента, но дело даже не в этом..., я пытаюсь симулировать работу виртуального устройства и проверять работу программы МК.
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
10.08.2013, 16:00 9
Цитата Сообщение от voyd118
...Спасибо, честно говоря не вижу такого инструмента...
Это не инструмент, а логический примитив. А находится там же, где и все примитивы (и микросхемы), в палитре. Там же где и кнопки.
0
voyd118
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
10.08.2013, 16:02 10
Цитата Сообщение от stritsh
Цитата Сообщение от voyd118
насколько я понимаю измениться настройка входаКод:
PORTB=0x04; // Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
DDRB=0x03; // State5=T State4=T State3=T State2=P State1=0 State0=0
и добавится отрицание?
Код
if(!(PINB & (1<<PINB2)))
{
TCCR1=0x00;
}
Правильно понимаете. Только не пишите такими конструкциями DDRB=0x03; вам же самому потом сложнее читать будет.

ничего не поменялось, ножка подтянута к единице, замыкается кнопкой на землю, но ничего не происходит, та же картина(.
Что только когда кнопку накоротко замыкаешь работает? Если вы сделали как я писал выше, то должно работать 100%

Ну уже не ругайте меня сильно, для меня 0x03 и 00000011 одно и тоже), привык так, но постараюсь больше не выражаться)

Я понимаю, что должно работать 100%, замыкаю накоротко - работает, специально даже delay_ms(2000); вставил..., запускаю симуляцию - есть сигнал, через ~2 сек., сигнал прилежно пропадает, по всему видно proteus-а штучки....

Вот, полюбуйтесь...





0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
10.08.2013, 16:12 11
Цитата Сообщение от voyd118
...Ну уже не ругайте меня сильно, для меня 0x03 и 00000011 одно и тоже)...
И напрасно, ведь все уже описано в инклюдах:
; DDRB - Port B Data Dyristion Register
.equ DDB0 = 0 ; Port B Data Dyristion Register bit 0
.equ DDB1 = 1 ; Port B Data Dyristion Register bit 1
.equ DDB2 = 2 ; Port B Data Dyristion Register bit 2
.equ DDB3 = 3 ; Port B Data Dyristion Register bit 3
.equ DDB4 = 4 ; Port B Data Dyristion Register bit 4
.equ DDB5 = 5 ; Port B Data Dyristion Register bit 5
.equ DDB6 = 6 ; Port B Data Dyristion Register bit 6
.equ DDB7 = 7 ; Port B Data Dyristion Register bit 7
Теперь нужно только написать:
DDRB=(1<<DDB1) | (1<<DDB0)
И комментарии уже как то не нужны...
0
voyd118
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
10.08.2013, 16:15 12
Цитата Сообщение от omokost
Цитата Сообщение от voyd118
...Ну уже не ругайте меня сильно, для меня 0x03 и 00000011 одно и тоже)...
И напрасно, ведь все уже описано в инклюдах:
; DDRB - Port B Data Dyristion Register
.equ DDB0 = 0 ; Port B Data Dyristion Register bit 0
.equ DDB1 = 1 ; Port B Data Dyristion Register bit 1
.equ DDB2 = 2 ; Port B Data Dyristion Register bit 2
.equ DDB3 = 3 ; Port B Data Dyristion Register bit 3
.equ DDB4 = 4 ; Port B Data Dyristion Register bit 4
.equ DDB5 = 5 ; Port B Data Dyristion Register bit 5
.equ DDB6 = 6 ; Port B Data Dyristion Register bit 6
.equ DDB7 = 7 ; Port B Data Dyristion Register bit 7
Теперь нужно только написать:
DDRB=(1<<DDB1) | (1<<DDB0)
И комментарии уже как то не нужны...

Совершенно согласен, так гораздо удобнее и выглядит лучше, да и в даташит лазить постоянно не надо..., буду привыкать писать по Вашему.
0
voyd118
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
10.08.2013, 16:41 13
Вообще странное дело, я на него(proteus) надеялся здорово, хотел даже схемку построить, а теперь получается что он может даже на этом споткнуться..., коллеги, а вы какой протеус пользуете, может дело в версии?, хотя это конечно тоже в порядке бреда... У меня поставлен 7.8. SP2 buyld 10468
0
voyd118
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
10.08.2013, 16:43 14
Цитата Сообщение от voyd118
Вообще странное дело, я на него(proteus) надеялся здорово, хотел даже схемку построить, а теперь получается что он может даже на этом споткнуться..., коллеги, а вы какой протеус пользуете, может дело в версии?, хотя это конечно тоже в порядке бреда... У меня поставлен 7.8. SP2 buyld 10468
Можете кто нибудь проверить у себя?, tiny85, 8Mhz..... файлы проекта вместе с coff в приложении...

[14.24 Кб]
0
stritsh
0 / 0 / 0
Регистрация: 28.12.2012
Сообщений: 161
10.08.2013, 17:07 15
Цитата Сообщение от voyd118
Цитата Сообщение от voyd118
Вообще странное дело, я на него(proteus) надеялся здорово, хотел даже схемку построить, а теперь получается что он может даже на этом споткнуться..., коллеги, а вы какой протеус пользуете, может дело в версии?, хотя это конечно тоже в порядке бреда... У меня поставлен 7.8. SP2 buyld 10468
Можете кто нибудь проверить у себя?, tiny85, 8Mhz..... файлы проекта вместе с coff в приложении... Вот посмотри мой вариант программы у меня работает. В архиве проект для CVAVR и файл протеуса.

[29.41 Кб]
0
omdryis5
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 302
10.08.2013, 17:27 16
Без исходника трудно сказать. Но думаю разница с перемычкой и с кнопкой в том, что перемычка сразу не дает запустить таймер, а кнопка просто не может его остановить.
Проверил на своем проекте. Все работает нормально. На AtmelStudyo 6.1
0
voyd118
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
10.08.2013, 17:31 17
Цитата Сообщение от stritsh
Цитата Сообщение от voyd118
Цитата Сообщение от voyd118
Вообще странное дело, я на него(proteus) надеялся здорово, хотел даже схемку построить, а теперь получается что он может даже на этом споткнуться..., коллеги, а вы какой протеус пользуете, может дело в версии?, хотя это конечно тоже в порядке бреда... У меня поставлен 7.8. SP2 buyld 10468
Можете кто нибудь проверить у себя?, tiny85, 8Mhz..... файлы проекта вместе с coff в приложении...
Вот посмотри мой вариант программы у меня работает. В архиве проект для CVAVR и файл протеуса.

Ну теперь я решительно ничего не понимаю, ваш вариант работает, но через раз, посмотрите пожалуйста, как у вас отрабатывает мой. Спасибо!

[61.19 Кб]
0
voyd118
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
10.08.2013, 17:49 18
Цитата Сообщение от omdries5
Без исходника трудно сказать. Но думаю разница с перемычкой и с кнопкой в том, что перемычка сразу не дает запустить таймер, а кнопка просто не может его остановить.
Проверил на своем проекте. Все работает нормально. На AtmelStudyo 6.1
Посмотрите пожалуйста мой проект, выложил полностью......, перемычка тут явно не при чем, перед остановкой таймера я давал довольно длительную задержку....
0
stritsh
0 / 0 / 0
Регистрация: 28.12.2012
Сообщений: 161
10.08.2013, 18:11 19
Цитата Сообщение от voyd118
Цитата Сообщение от omdries5
Без исходника трудно сказать. Но думаю разница с перемычкой и с кнопкой в том, что перемычка сразу не дает запустить таймер, а кнопка просто не может его остановить.
Проверил на своем проекте. Все работает нормально. На AtmelStudyo 6.1
Посмотрите пожалуйста мой проект, выложил полностью......, перемычка тут явно не при чем, перед остановкой таймера я давал довольно длительную задержку.... Все работает. Вы в настройках АЦП отключили цифровой буфер 2 пина порта В (DIDR0|=0x3C;)

0
voyd118
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
10.08.2013, 18:29 20
Ой е...., вот оно в чем дело!, спасибо вам все большое, отсутствие опыта и незнание камня, сделали свое черное дело :)
Спасибо, надеюсь мой опыт кому-то пригодится, пошел учить матчасть.....
0
10.08.2013, 18:29
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2013, 18:29

ATtiny85 CTC проблема
Приветствую всех:) Я хочу немногого: CTC режим таймера на tiny85. когда OCR0A = 0, прерывания с...

Медианный фильтр на Attiny85
Всем привет, люди, может у кого завалялась реализация медианного фильтра с окном &gt;3, исполненная...

Работа таймеров Attiny85
Приветствую всех, люди, помогите пожалуйста настроить таймеры Attiny85, сначала разобрался и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru