В одной, уже рабочей, конструкции на ATtiny13а понадобилось задействовать свободный вывод PORTB5 в качестве цифрового входа.
Но вот проблема, после настройки одного из выводов в режим ADC, опросе и дальнейшем выключении, этот PORTB5 перестаёт работать как цифровой вход.
int main(void)
{
CPU_Init();
if (bitisclr (PINB, 5){} //здесь нормально
ADC3_Init();
while(1)
{
ADC_convert();
T = ADC;
DIDR0 = 0x00;
ADMUX = 0x00;
if (bitisclr (PINB, 5){} //здесь не работает
// код
}
[uquote="wws63",url="/forum/viewtopic.php?p=4709754#p4709754"][uquote="OKF",url="/forum/viewtopic.php?p=4709751#p4709751"]Ты много чего забыл. Схему, фьюзы, полный проект а не эту порнографию
if (bitisclr (PINB, 5){}
.[/uquote]
Если я всё распишу, ты прозреешь?[/uquote]
Я то наверняка не прозрею. Но ведь просишь это ты. А значит должен прогнуться, если просишь. Это если тебе надо. Иначе, гуляй дядя.) Сам выясняй.
Добавлено after 4 minutes 17 seconds:
[uquote="Jack_A",url="/forum/viewtopic.php?p=4709804#p4709804"]Ему бы к доктору за таблеткой от хамства.[/uquote]
Да, это одно к другому.
Видать мама не воспитала должным образом. Бедная мама.(
[uquote="wws63",url="/forum/viewtopic.php?p=4709728#p4709728"]PORTB5 перестаёт работать как цифровой вход.[/uquote]
Если сброшен DIDR0, то должен работать. В чем выражается его "перестает работать"? Не реагирует на изменяющееся состояние? И про фьюзы тебя не просто так спрашивали выше, PORTB5 reset как бы..
Ну сами подумайте, если бы я не установил его, как бы работал PB5? Разумеется, все фьюзы установил, и АВР доктор у меня есть, если что, такшта здесь все норм.
В Протеусе всё работает чётко, а в железе ( после установки и сброса ADC) никак. Делаю опрос PORTB5, до настройки ADC и в железе работать начинает.
В общем, поставленную задачу решил программно-аппаратными костылями.
Есть смутное подозрение, что дело всё таки в китайской тиньке, купленной на Али.
Как нибудь, при наличии оригинальной тиньки поэкспериментирую с этим глюком.
Ещё можно на ошибки в компиляторе списать - наверняка они там криво что-то накрутили.
Платы для HLDI - установки лазерной засветки фоторезиста. ФоторезистOrdyl Alpha 350 Жидкое олово для лужения плат (видео) - самое лучшее и только у меня. Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Первое правило. Попробую показать мышление. В технике чудес не бывает.
Второе правило. Если перестало работать. Этому есть причина. Всегда. Просто лежало, где то 5 лет. В каких условиях. В каких условиях устройство изготовлено. Как пример. Макетная платка. С МК, с обвязкой. После нескольких валяния, перестало работать. Я стал вспоминать. Работало нормально. При последнем подключении все работало. Условия хранения были идеальные. Завернуто в антистатический пакет, в ящик в стол, комнатная температура.
Все перепроверил. Питание хорошее. Плата чистая. КЗ нет нигде.
Причина оказалась проста. Я при пайке мвкетки перегрел конденсатов кварца. Один из конденсаторов оказался разрушен. При отладке макетки все работало. Пока валялся в коробке, конденсатор деградировал.
Следующий момент. Именно ваш случай. У МК AVR есть недокументированный случай. Доступ к порту занимает несколько тактов. Это нужно поднимать историю. То ли обращению к биту, то ли к порту. Задержка занимает несколько тактов. Это беда тинек определенного времени изготовления.
Я к чему. Тема поднималась в свое время инженером, который был официальным представителем МК AVR в России. Я по AVR учился учился на форуме. Советы, приемы, примочки. Все такое, короче говоря.
Включили на прием аналогового сигнала. Потом переключили на дискретный вход.
А это кстати вариант. Генератор АЦП работает от внутреннего генератора. И тут могла сработать задержка.
[uquote="Demiurg",url="/forum/viewtopic.php?p=4710217#p4710217"]Включили на прием аналогового сигнала. Потом переключили на дискретный вход.
Генератор АЦП работает от внутреннего генератора. И тут могла сработать задержка.[/uquote]
Была такая мысль, делал программную задержку в 1мс, без изменений.
[uquote="wws63",url="/forum/viewtopic.php?p=4710077#p4710077"]Ну сами подумайте, если бы я не установил его, как бы работал PB5? Разумеется, все фьюзы установил, и АВР доктор у меня есть, если что, такшта здесь все норм[/uquote]
Да как. АЦП может работать и без фьюзов. Нужно только нижний порог не переступать.
[uquote="OKF",url="/forum/viewtopic.php?p=4711556#p4711556"]АЦП может работать и без фьюзов.[/uquote]
Опять двадцать пять. Как без установленного фьюза RSTDISBL может работать цифровым входом PORTB5?
1. Тыкать не надо.
2.Внимательно читайте посты. 30.04 я написал, что вопрос решен программно-аппаратным путём.
3. Совета, как это решить, я у вас не спрашивал, ничего сложного в этом нет. Интересовал сам факт "глюка", которого в симуляторе нет.
4. Я вроде вам предлагал "проходить мимо"? Повторить?
[uquote="OKF",url="/forum/viewtopic.php?p=4711738#p4711738"]Удачи.[/uquote]
Фу, слава Богу, исчез. Дошло наконец до утки, на третьи сутки.
Твоими "рекомендации" только зад подтереть.