AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
14.09.2017, 15:54
|
|
Временная регистрация
Регистрация: 04.05.2007
Сообщений: 54
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: подтягивающие резисторы
Скобка лишняя, согласен. Фрагмент не брался из программы, а писал прямо здесь.
|
|
|
|
14.09.2017, 15:56
|
|
Временная регистрация
Регистрация: 04.05.2007
Сообщений: 54
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: подтягивающие резисторы
Пин опрашивает тумблер, так, что дребезга нет.
Опрос производится через 2-3 минуты.
|
|
|
|
14.09.2017, 16:37
|
|
Временная регистрация
Регистрация: 04.05.2007
Сообщений: 54
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: подтягивающие резисторы
Фузы, конешно, трогались. Но давно, когда начал писать эту программу.
WDT не включен за ненадобностью.
Зависания нет, программа бодренько делает почти все, что надо,
за исключением этой самой функции. Не делает то, что в ней написано.
А в ней контроллер работает только с портом PORTD.
Программу можно так описать.
Допустим, моторчик вращается вправо, сделав 347 оборотов, читает состояние тумблера.
Ежели тумблер замкнут, опять делает 347 оборотов.и.т.д.
Ежели разомкнут, заходит в функцию f(), где делает 512 оборотов влево,
и при этом жужжит.
Как то так. (Правда, моторчик виртуальный)
Если залить свеженькую программу, то переключение происходит.
Примерно через полминуты контроллер перестает реагировать на тумблер.
Потому я и стал мерить напряжение на ножке PC0.
Секунд через 20-30 после включения питания оно падает с 5 вольт в ноль.
Другие ноги я не смотрел.
С внешним резистором все работает прекрасно.
Я всегда ставлю резисторы примерно 3кома, они помех меньше ловят, чем внутренние.
А тут решил сэкономить.
|
|
|
|
14.09.2017, 16:50
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,901
Сказал спасибо: 499
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: подтягивающие резисторы
Вариантов всего два. Или китайцы изготовили мегу328, в которой регистр, ответственный за подтяжку порта, самопроизвольно сбрасывается в ноль через 30 секунд, и продали этот экземпляр вам.
Или ваша сверхсекретная программа, исполняя "всё, что в ней написано", в какой-то момент портит состояние этого регистра, либо переключает ножку на выход, либо включает какую-то периферию, связанную с данной ножкой, что приводит к отключению подтяжки (РС0=ADC0) и т.д.
Меги от китайцев с бракованным флешем видел, с бракованным регистром подтяжки - пока не приходилось.
Программ, делающих не всегда только то, что задумал автор, видел много и сам такие "умею" писать. Но когда у меня получается такая программа - я пользуюсь какими-нить доступными средствами отладки, чтобы понять, что именно происходит с процессором.
Последний раз редактировалось AR_Favorit; 14.09.2017 в 16:58.
|
|
|
Сказали "Спасибо" AR_Favorit
|
|
|
14.09.2017, 17:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,727
Сказал спасибо: 2,417
Сказали Спасибо 894 раз(а) в 581 сообщении(ях)
|
Re: подтягивающие резисторы
Вывести значение настройки порта куда-нибудь и смотреть,не меняется ли оно.
|
|
|
|
14.09.2017, 17:22
|
|
Временная регистрация
Регистрация: 04.05.2007
Сообщений: 54
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: подтягивающие резисторы
Возможно, Вы правы. Такие программы я тоже "умею".
Я закомментировал всё, что не касается PC0.
А в сверхсекретной функции f() просто загорается светодиод.
АЦП и раньше не трогал.
Проблема не исчезла.
Так что не буду больше в этой конторе меги покупать.
|
|
|
|
14.09.2017, 17:49
|
|
Временная регистрация
Регистрация: 04.05.2007
Сообщений: 54
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: подтягивающие резисторы
Посмотрел регистры.
MCUCR держит бит.PC0 падает до нуля.
Короче, надо менять микросхемку, бракованная.
Спасибо.
|
|
|
|
14.09.2017, 17:56
|
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: подтягивающие резисторы
Сообщение от AR_Favorit
|
Или ваша сверхсекретная программа, исполняя "всё, что в ней написано", в какой-то момент портит состояние этого регистра, либо переключает ножку на выход, либо включает какую-то периферию, связанную с данной ножкой, что приводит к отключению подтяжки (РС0=ADC0) и т.д.
|
Эта гипотеза мне тоже близка. Лучше бы посмотреть программу. Я сам, два дня назад, натупил в этом плане. Один из входов задумывался как вход с подтяжкой и джампером замыкался на землю, когда снимаешь перемычку - должен переходить в режим программирования. Так вот, после того, как переходил в этот режим у меня самопроизвольно выключалась подтяжка. Когда прошел программу пошагово, то нашел в какой строке сбрасывался порт. Я просто вместо PORTB &= ~(1‹‹5); написал PORTB &= 1‹‹5; Так что гадать на кофейной гуще не лучший вариант. Ларчик, может быть , открывается просто.
|
|
|
|
14.09.2017, 18:02
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Re: подтягивающие резисторы
Сообщение от jsv001
|
Посмотрел регистры.
|
Чем, где?
Чтобы быть уверенным - я бы включил в программу реалтаймовский отладочный модуль и реально посмотрел содержимое памяти и регистров, на работающем кристалле.
А насчет брака... За все годы работы с АВРками один раз попался очень-хитро-глючный чип, сбрасывался при записи ненулевого содержимого в OCR регистр.
Правда, последние партии мега8535 со странностями - фузы не соответствуют значениям "по умолчанию" и изредка попадаются исходно мертвые чипы(не входят в программирование). Видимо, производство переехало на малую Арнаутскую.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
Последний раз редактировалось nml; 14.09.2017 в 18:06.
|
|
|
|
14.09.2017, 18:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,789
Сказал спасибо: 2,912
Сказали Спасибо 3,120 раз(а) в 2,111 сообщении(ях)
|
Re: подтягивающие резисторы
Сообщение от jsv001
|
MCUCR держит бит.PC0 падает до нуля.
|
Расшифруйте.
__________________
Экзорцист 40-го уровня.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:36.
|
|