Сложности с управлением gp1
-
trojninalex
- Родился
- Сообщения: 15
- Зарегистрирован: Пн мар 01, 2021 09:01:13
Сложности с управлением gp1
Всем привет! Использую MPASM pic12f629
Код:
bsf STATUS, RP0
clrf TRISIO
bcf STATUS, RP0
clrf GPIO
movlw 0x07
Movwf CMCON
bsf GPIO, GP1
На выходе устанавливается высокий уровень. Но как только вызову:
bsf GPIO, GP2
или
bcf GPIO, GP2
У меня сбрасывается пин GP1.
Почему так происходит?
У меня кончились идеи. В даташите ничего подобного не нашел.
Код:
bsf STATUS, RP0
clrf TRISIO
bcf STATUS, RP0
clrf GPIO
movlw 0x07
Movwf CMCON
bsf GPIO, GP1
На выходе устанавливается высокий уровень. Но как только вызову:
bsf GPIO, GP2
или
bcf GPIO, GP2
У меня сбрасывается пин GP1.
Почему так происходит?
У меня кончились идеи. В даташите ничего подобного не нашел.
- Реклама
Re: Сложности с управлением gp1
Этого не может быть.В даташите ничего подобного не нашел.
Вот сразу перевод.
Чтение регистра GPIO возвращает состояние на выводах порта, а запись производится в защелку GPIO. Все
операции записи в порт выполняются по принципу «чтение – модификация - запись», т.е. сначала производится чтение состояния выводов порта, затем изменение и запись в защелку.
-
trojninalex
- Родился
- Сообщения: 15
- Зарегистрирован: Пн мар 01, 2021 09:01:13
Re: Сложности с управлением gp1
Не в полне понимаю почему gp1 сбрасывается.
Получается
1. Считали
000010
2. Модифицировали
000110
3. Записали в защелку
Получается
1. Считали
000010
2. Модифицировали
000110
3. Записали в защелку
Re: Сложности с управлением gp1
Этой "проблеме" столько-же, сколько самому PIC, я думал, что об этом "глюке" и не услышу уже. :-D
TC: nop поставьте между bsf/bcf
TC: nop поставьте между bsf/bcf
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Сложности с управлением gp1
[uquote="trojninalex",url="/forum/viewtopic.php?p=4033999#p4033999"]Не в полне понимаю почему gp1 сбрасывается.
Получается
1. Считали
000010
2. Модифицировали
000110
3. Записали в защелку[/uquote]
Проблема в нагрузке на проблемный пин и в скорости чтения/записи. Если на пин напрямую повесить светодиод, например, то с него будет читаться 0, а не выведенная в пин 1.
В современных ПИКах есть отдельный регистр защелки выхода LAT и запись в этот регистр отдельного бита не связана с чтением пинов. Читается защелка, а не пин.
Получается
1. Считали
000010
2. Модифицировали
000110
3. Записали в защелку[/uquote]
Проблема в нагрузке на проблемный пин и в скорости чтения/записи. Если на пин напрямую повесить светодиод, например, то с него будет читаться 0, а не выведенная в пин 1.
В современных ПИКах есть отдельный регистр защелки выхода LAT и запись в этот регистр отдельного бита не связана с чтением пинов. Читается защелка, а не пин.
- Реклама
Re: Сложности с управлением gp1
Как решение буфер вывода - с ним проводятся изменения, а уже его содержимое затем выдается в порт.

-
trojninalex
- Родился
- Сообщения: 15
- Зарегистрирован: Пн мар 01, 2021 09:01:13
Re: Сложности с управлением gp1
[uquote="КРАМ",url="/forum/viewtopic.php?p=4034030#p4034030"]Проблема в нагрузке на проблемный пин и в скорости чтения/записи. Если на пин напрямую повесить светодиод, например, то с него будет читаться 0, а не выведенная в пин 1.[/uquote]
Времени предостаточно, аж 8uS до вызова bsf. Попробовал поставить пожтягивающий резастор по + питания. Не дало результата.
Добавлено after 2 minutes 39 seconds:
Использовать буфер не дает возможность по времени. Тайминги всего алгоритма сбиваются. nop ставить тоже пробовал. Странный глюк.
Добавлено after 12 minutes 24 seconds:
C GP5 таких проблем нет, все отлично вкл. когда нужно и выкл. когда нужно. Только мне нужен GP1 
А с GP0 тоже что и с GP1. С остальными таких проблем нет. Может это как-то связано с компаратором.
Времени предостаточно, аж 8uS до вызова bsf. Попробовал поставить пожтягивающий резастор по + питания. Не дало результата.
Добавлено after 2 minutes 39 seconds:
Использовать буфер не дает возможность по времени. Тайминги всего алгоритма сбиваются. nop ставить тоже пробовал. Странный глюк.
Добавлено after 12 minutes 24 seconds:
А с GP0 тоже что и с GP1. С остальными таких проблем нет. Может это как-то связано с компаратором.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Сложности с управлением gp1
Зачем подтягивающий резистор ноге, которую настроили на выход ?trojninalex писал(а):Попробовал поставить пожтягивающий резастор по + питания.
Вам нужно разгрузить эту ногу. В защёлку пишется значение, равное реальному уровню на ноге, а не то, которое вы записали когда-то там. И никакие тут НОПы не спасут ...
-
trojninalex
- Родился
- Сообщения: 15
- Зарегистрирован: Пн мар 01, 2021 09:01:13
Re: Сложности с управлением gp1
bsf GPIO, GP1
На ноге GP1 появились +5v (точнее +4.92v)
; ANOTHER CODE
bsf GPIO, GP2
На ноге GP1 пропали +5v, на ноге GP2 появились +5v
Второй абзац пункта 3.1 страница 19. На странице 22 блок диаграмма пинов GP0 и GP1.
Судя по описанию и диаграме, контакты порта считываются уже на выходе пина, модифицируется и записывается в защелку.
В симуляции проблеммы нет, и как я все это понимаю должно работать без проблем, но...
На ноге GP1 появились +5v (точнее +4.92v)
; ANOTHER CODE
bsf GPIO, GP2
На ноге GP1 пропали +5v, на ноге GP2 появились +5v
Второй абзац пункта 3.1 страница 19. На странице 22 блок диаграмма пинов GP0 и GP1.
Судя по описанию и диаграме, контакты порта считываются уже на выходе пина, модифицируется и записывается в защелку.
В симуляции проблеммы нет, и как я все это понимаю должно работать без проблем, но...
- Вложения
-
- Screenshot_2021-05-20_00-04-29.png
- (111.15 КБ) 228 скачиваний
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Сложности с управлением gp1
[uquote="trojninalex",url="/forum/viewtopic.php?p=4034191#p4034191"]На ноге GP1 пропали....на ноге GP2 появились...[/uquote]
Приведите РЕАЛЬНУЮ схему. Без домыслов, как есть.
Приведите РЕАЛЬНУЮ схему. Без домыслов, как есть.
Re: Сложности с управлением gp1
Возожно вопрос во взаимодействии с компаратором.
Стоит проверить режим отключения незадействованного аппаратного модуля.
Я частенько вот такую вставку делаю:
но именно в самом начале программы, а не в режиме "оперативного переназначения" выводов.
Да и без схемы и полного текста программы будет очередное "гадание"....

Стоит проверить режим отключения незадействованного аппаратного модуля.
Я частенько вот такую вставку делаю:
Код: Выделить всё
; инициализация железа при первой подаче питания
;
hard_init
clrwdt
MOVLW 07h ; Set GP<2:0> to
MOVWF CMCON ; digital IOДа и без схемы и полного текста программы будет очередное "гадание"....
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Сложности с управлением gp1
А Вам что написали :trojninalex писал(а):контакты порта считываются уже на выходе пина, модифицируется и записывается в защелку
Аlex писал(а):В защёлку пишется значение, равное реальному уровню на ноге, а не то, которое вы записали когда-то там.
-
trojninalex
- Родился
- Сообщения: 15
- Зарегистрирован: Пн мар 01, 2021 09:01:13
Re: Сложности с управлением gp1
В данный момент контроллер подключен к логическому анализатору.
Добавлено after 1 minute 54 seconds:
Alex
Я рад что мы смогли убедиться, что понимаем одинакого, как работает порт на 12f629. Теперь можем перейти к решению самого вопроса.
Добавлено after 1 minute 54 seconds:
Alex
Я рад что мы смогли убедиться, что понимаем одинакого, как работает порт на 12f629. Теперь можем перейти к решению самого вопроса.
-
trojninalex
- Родился
- Сообщения: 15
- Зарегистрирован: Пн мар 01, 2021 09:01:13
Re: Сложности с управлением gp1
Эксперименты продолжаются.
Решил по ножкам сделать внутренюб подтяжку
Установки следующие
Trisio = 0x3f
nGPPU = 0
CmCON = 7
WPU (по умолчанию равен 3f)
Подтяжка появилась на всех ножках кооме gp0 и gp1.
Пробовал на нескольких чипах. Результат тот же.
И вопрос по выходу так же не решен.
Решил по ножкам сделать внутренюб подтяжку
Установки следующие
Trisio = 0x3f
nGPPU = 0
CmCON = 7
WPU (по умолчанию равен 3f)
Подтяжка появилась на всех ножках кооме gp0 и gp1.
Пробовал на нескольких чипах. Результат тот же.
И вопрос по выходу так же не решен.
Re: Сложности с управлением gp1
У ТС PIC12F629, а CMCON он настраивает.
Re: Сложности с управлением gp1
О-о-опс, недосмотрел, недочитал.
Извините.
Извините.



