| AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
подтягивающие резисторы
15.09.2017, 14:17
|
#31
|
|
Временная регистрация
Регистрация: 04.05.2007
Сообщений: 54
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: подтягивающие резисторы
Тьфу, опять очепятка
void f1(void)
{
PORTD |= 2;
}
int main(void)
{
DDRC = 0;
PORTC = 0b00000001;
DDRD = 0b00000011;
MCUCR &= ~0b11101111;
while(1)
{
if ((PINC & 1) == 1) f1();
else PORTD &= 0b11111101;
if ((MCUCR & 0b00010000) == 0b00010000) PORTD |= 1;
else PORTD &= 0b11111110;
}
}
|
|
|
|
15.09.2017, 14:24
|
#32
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,276
Сказал спасибо: 11,858
Сказали Спасибо 4,158 раз(а) в 3,176 сообщении(ях)
|
Re: подтягивающие резисторы
jsv001, у Вас какая-то извращённая кочка зрения на все уже сказанное.
Кто кому вопросы задаёт и доказывает что-то?
Ctrl-A, Ctrl-C и Ctrl-V тоже не работают? И тег CODE руками не набирается?
Голый кусок без инициализации, подключений библиотек, указания версий используемого - сильно напоминает сферического коня…
И найти таким образом причину абсолютно нереально, от слова совсем…  .
Засунул между делом Ваш пример в целых 4 разных по времени 328 из отладочных - все типа работает… видимо у меня или среда другая, или библиотеки правильные, или камни прямые,…
Код конечно без светодиодов на ногах, но порт никак не теряет внутреннюю подтяжку…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
Последний раз редактировалось mike-y-k; 15.09.2017 в 14:30.
|
|
|
|
15.09.2017, 15:14
|
#33
|
|
Временная регистрация
Регистрация: 04.05.2007
Сообщений: 54
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: подтягивающие резисторы
Причину я уже нашел.
В плате уже стоит другой контроллер, купленый в другом месте.
Меня интересовало, насколько часто встречаются дефектные, и именно с таким дефектом.
Я, помнится, спрашивал "Кто нибудь такой дефект у меги328 встречал? "
Ответ я получил.
А сферическую форму конь получил, когда сообщество решило, что дело в программе, и надобно бы ее посмотреть.
|
|
|
|
15.09.2017, 15:54
|
#34
|
|
Гражданин KAZUS.RUN
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 841
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: подтягивающие резисторы
Сообщение от AR_Favorit
|
|
Что вот эта команда по вашей задумке делает?
|
И мне тоже интересно. Не знаю, какая задумка автора, но навскидку она сбрасывает сброшенные биты, кроме четвертого, хотя и он уже в нуле.
И зачем писать так много букв в условиях? Зачем после отжатия бита сравнивать его с контрольным числом. Ведь условие все-равно выполнится, если не ноль. А ноль будет, если отжатый бит равен нулю.
И наверное, это не весь код. В последней версии показанной программы диод на PD0 и не должен зажечься так, как условие if((MCUCR & 0b00010000)==0b00010000) не будет выполнено. А на PD1 не должен тухнуть, разве, что после замыкания на землю PINC0.
Последний раз редактировалось МВА; 15.09.2017 в 16:14.
|
|
|
|
15.09.2017, 16:08
|
#35
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,276
Сказал спасибо: 11,858
Сказали Спасибо 4,158 раз(а) в 3,176 сообщении(ях)
|
Re: подтягивающие резисторы
jsv001, причина или следствие - сие тайна величайшая есть и путь к познанию ее изначально через анализ кода лежит…
При замене процессора все пропаяно было…
Совокупные ёмкости и сопротивления таки поменялись…
Список можно продолжить.
Но у Вас есть абсолютная уверенность…
Тогда ждём следующего вопроса о сходных проблемах в другой ситуации…
Вероятность из материалов данной темы высока, однако
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
Сказали "Спасибо" mike-y-k
|
|
|
15.09.2017, 17:07
|
#36
|
|
Временная регистрация
Регистрация: 04.05.2007
Сообщений: 54
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: подтягивающие резисторы
Уверяю вас, это самая полная версия программы для воспроизведения дефекта, о котором идет речь.
Инклуды я не стал добавлять из экономии места.
Программа устанавливает в MCUCR бит PUD, который управляет подключением резисторов подтяжки.
По умолчанию он должен устанавливаться в ноль.
В начале программы я еще раз его устанавливаю принудительно,
а потом в цикле проверяю, не соскочил ли он (напомню про дефект).
Так что, ежели светодиод на выводе PD0 не зажжется, регистр MCUCR не виноват.
А на PD1 светодиод может погаснуть в двух случаях:
1 - замкнут тумблер на PC0 (об этом было раньше)
2 - по какой то причине напряжение на входе PC0 самопроизвольно? невзирая на подтяжку, упадет до нуля, что я и наблюдал вольтметром.
Это и есть дефект, о котором мы говорим.
При замене контроллера ничего не паялось, контроллер вставлен в цанговую кроватку.
Взят он у другого продавца, маркировки разные.
После замены рабочая программа работает, как задумывалось, без глюков.
Много букв я писал, чтобы не спросили, почему букв мало. (шутка)
|
|
|
|
15.09.2017, 17:23
|
#37
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.03.2010
Сообщений: 2,896
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: подтягивающие резисторы
Сообщение от jsv001
|
|
Программа устанавливает в MCUCR бит PUD, который управляет подключением резисторов подтяжки.
|
Не устанавливает.
MCUCR &= ~0b11101111; - это то же самое, что MCUCR &= 0b00010000;
MCUCR изначально содержит ноль во всех битах, побитовое "и" с любой маской оставляет в них нули.
А если бы вы таки установили бит PUD, то подтяжку бы он не включил, а отключил. PUD - расшифровывается как pull-up disable. Изначально бит сброшен и подтяжка разрешена для побитовой установки в регистрах PORTx, установка этого бита вырубает ее всю нафик независимо от состояния этих регистров.
Видите, ситуация в точности, о чем я говорил - программа делает совсем не то, что вы думаете. А потом где-то еще в большой программе, например, в этот PUD таки записывается единица, и вуаля - "подтяжка сама собой пропала"...
Почему вас и просят привести именно копипаст того, что вы компилируете и шьете в процессор.
Бывало такое и у меня - не изучив даташит, схватил мегу64 после "маленьких" авр, ой, не работает один вывод порта. Все ставится, а вольтметр показывает фигню. Наверно проц плохой! Меняем проц. Ой, опять не работает. А интернет тогда был совсем еще медленный и печальный, и быстро нагуглить, чем процессор с JTAG отличается от других без такового, было невозможненько.
PS перечитав ваш пост, таки сообразил, что вы пытаетесь сбросить этот бит. Не говорят так - "установить в ноль". Установить - в единицу, сбросить - в ноль))) Но ваша команда всё равно его не сбрасывает, именно этот бит))
Ваш опыт показал, что MCUCR не меняется.
А еще нет опыта по проверке состояния DDR и PORTC... То есть, где именно дефект, даже и непонятно осталось.
Последний раз редактировалось AR_Favorit; 15.09.2017 в 17:42.
|
|
|
|
Эти 2 пользователя(ей) сказали Спасибо AR_Favorit за это сообщение:
|
|
|
15.09.2017, 17:32
|
#38
|
|
Гражданин KAZUS.RUN
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 841
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: подтягивающие резисторы
Сообщение от AR_Favorit
|
|
Не устанавливает.
|
Опередил таки меня. Только что набирал почти такой-же текст.
|
|
|
|
15.09.2017, 17:32
|
#39
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
|
Re: подтягивающие резисторы
блин, опередили - и не раз
Сообщение от jsv001
|
В начале программы я еще раз его устанавливаю принудительно,
а потом в цикле проверяю, не соскочил ли он (напомню про дефект).
|
Вам уже раза два ткнули в то место - не обнуляете вы тот бит там. Вы обнуляете все остальные биты. Или напишите
|
Код:
|
MCUCR &= 0b11101111; |
или
|
Код:
|
MCUCR &= ~0b00010000; |
Ну и еще кривости разные наблюдаются, вкупе с нежеланием оформить код как положено. Потому у вас и переспрашивают все по нескольку раз. Да и я по прежнему считаю что у вас скорее с фузами чего-то напутано. Были бы вы рядом - ей богу, не поленился бы потестировать тот "бракованный" чип.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
15.09.2017, 17:39
|
#40
|
|
Временная регистрация
Регистрация: 04.05.2007
Сообщений: 54
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: подтягивающие резисторы
Насчет копипаста - там около 5 тысяч строк.
И комментариев совсем немного.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:01.
|
|