Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.05.2011, 14:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2009
Сообщений: 4,561
Сказал спасибо: 619
Сказали Спасибо 1,813 раз(а) в 974 сообщении(ях)
|
Глюк контроллера или компилятора?
PIC16F870
Столкнулся с необъяснимым явлением:
При установке любого из битов порта A в "1" (TRISA=0), бит 4 сбрасывается в ноль.
Вот прошивка, которая зашивалась в контроллер:
:100000000128831685018312103085008516630050
:020010000728BF
:02400E00753FFC
:00000001FF
После запуска бит 4 должен быть 1, а он очень быстро становится 0.
То же самое происходит, если на порту A задать поразрядное OR на любом другом бите.
Кто нибудь сталкивался с таким?
ЗЫ:
плиз не надо вспоминать, что бит 4 имеет открытый коллектор.
Не может хе он из-за этого соединиться с другими разрядами, да еще инверсно.
Не должен,- по крайней мере.
|
|
|
|
27.05.2011, 15:11
|
|
Вид на жительство
Регистрация: 28.02.2009
Сообщений: 338
Сказал спасибо: 24
Сказали Спасибо 52 раз(а) в 48 сообщении(ях)
|
Re: Глюк контроллера или компилятора?
компараторы/АЦП выключены?
|
|
|
|
27.05.2011, 15:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2009
Сообщений: 4,561
Сказал спасибо: 619
Сказали Спасибо 1,813 раз(а) в 974 сообщении(ях)
|
Re: Глюк контроллера или компилятора?
ADCON1 = 7 ?
В данной прошивке (в целях минимизации кода) - нет.
Но в процессе проверок ставил такую команду - ни на что не повлияла. (Она режим входов задает, а не выходов.)
|
|
|
|
27.05.2011, 15:25
|
|
Вид на жительство
Регистрация: 28.02.2009
Сообщений: 338
Сказал спасибо: 24
Сказали Спасибо 52 раз(а) в 48 сообщении(ях)
|
Re: Глюк контроллера или компилятора?
глюк не в контроллере и не в компиляторе.
|
|
|
|
27.05.2011, 15:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2009
Сообщений: 4,561
Сказал спасибо: 619
Сказали Спасибо 1,813 раз(а) в 974 сообщении(ях)
|
Re: Глюк контроллера или компилятора?
А где? И что нужно сделать, чтобы исправить?
|
|
|
|
27.05.2011, 15:53
|
|
Вид на жительство
Регистрация: 28.02.2009
Сообщений: 338
Сказал спасибо: 24
Сказали Спасибо 52 раз(а) в 48 сообщении(ях)
|
Re: Глюк контроллера или компилятора?
посмотрите это
|
|
|
|
27.05.2011, 16:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2009
Сообщений: 4,561
Сказал спасибо: 619
Сказали Спасибо 1,813 раз(а) в 974 сообщении(ях)
|
Re: Глюк контроллера или компилятора?
"это" в приведенной мною прошивке есть.
|
|
|
|
27.05.2011, 16:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Re: Глюк контроллера или компилятора?
RMW
чтение - модификация - запись.
Используйте другой регистр, в котором меняйте разряды, а уже его - весь выводите в порт.
|
|
|
|
27.05.2011, 16:43
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Глюк контроллера или компилятора?
Вопрос в том, есть ли внешний подтягивающий резистор на 4 бите ? Если нет, то так и дожно быть. При установке, например, бита 3:
- проц сначала читает весь порт, в том числе и четвёртый бит, который равен нулю при отсутствии резистора,
- потом проц устанавливает бит 3 внутри себя
- и наконец, записывает результат обратно в порт, при этом пишет уже нолик в бит 4, изменяя ранее установленную единичку на ноль
|
|
|
Сказали "Спасибо" Yurkin2007
|
|
|
27.05.2011, 17:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2009
Сообщений: 4,561
Сказал спасибо: 619
Сказали Спасибо 1,813 раз(а) в 974 сообщении(ях)
|
Re: Глюк контроллера или компилятора?
Сообщение от urry
|
Используйте другой регистр, в котором меняйте разряды, а уже его - весь выводите в порт.
|
Да - вот так работает (это я уже обнаружил раньше).
Но тему создал, чтобы разобраться - каким образом оказались связанными разряды?
Сообщение от Yurkin2007
|
Вопрос в том, есть ли внешний подтягивающий резистор на 4 бите ? Если нет, то так и дожно быть. При установке, например, бита 3:
- проц сначала читает весь порт, в том числе и четвёртый бит, который равен нулю при отсутствии резистора,
- потом проц устанавливает бит 3 внутри себя
- и наконец, записывает результат обратно в порт, при этом пишет уже нолик в бит 4, изменяя ранее установленную единичку на ноль
|
Да. Вы по-видимому абсолютно правы!
Резистор есть, но он нагружен на светодиод (вход оптрона). Так что "единица" на выходе - около вольта. (Так сделано, чтобы при коммутации общий потребляемый ток не изменялся сильно. Ради этого и был выбран выход с ОК).
Отключил оптрон - глюк пропал.
Спасибо за разъяснения, тему можно считать завершенной
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:18.
|
|