21.07.2015, 01:19
|
|
Прописка
Регистрация: 24.12.2006
Сообщений: 167
Сказал спасибо: 9
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Странности с Mplab Sim и 16F676
Не могу заставить в MPLAB SIM изменить состояние портов у 16F676. В конфигурации Мплаба, контроллер выбран правильно.Порты настроены на выход. Если в шапке асм-файла я выбираю другой контроллер, допустим pic16f73 или 874, то этот же код работает как надо.
У меня MpLab версии 8.92 С 16F676 даже ногами подрыгать не получается, а именно он и нужен. На команду bsf ни одна нога тоже не реагирует. Трисы живые, т.е. их состояние изменяется. Могу конечно ICD2 с pic16f877 задействовать, но тогда надо макетку лепить с семисегментным дешифратором под индикацию. В Протеусе пока не пробовал, хочу с мплабом разобраться.
Вот две шапки. В самом тексте программы ничего не меняю. Что происходит?
list p=16F676 ; Не дрыгает ногами
#include ‹p16F676.inc›
ERRORLEVEL -302
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF
__________________________________________________ _______________
list p=16f73 ; Тут все нормально
include "p16f73.inc"
ERRORLEVEL -302
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC
__________________________________________________ _______________
|
|
|
|
21.07.2015, 09:06
|
|
Прописка
Регистрация: 24.12.2006
Сообщений: 167
Сказал спасибо: 9
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Странности с Mplab Sim и 16F676
Сам себе и отвечу. Это глюк Мплаба версии 8.92 Сейчас на работе, откатился на версию 8.56 и случилось чудо. Все заработало!
Однако рано радоваться. Изменяется только старшие тетрады портов, а младшие так и остаются мертвые.
С другим контроллером, все пучком.
Последний раз редактировалось FreeTramp; 21.07.2015 в 09:26.
|
|
|
|
21.07.2015, 09:10
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Странности с Mplab Sim и 16F676
Попробуй Project -› Clean
|
|
|
|
21.07.2015, 09:28
|
|
Прописка
Регистрация: 24.12.2006
Сообщений: 167
Сказал спасибо: 9
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Странности с Mplab Sim и 16F676
Сообщение от NewWriter
|
Попробуй Project -› Clean
|
Это не помогает. Младшие 4 бита портов ни на что не реагируют.
|
|
|
|
21.07.2015, 17:31
|
|
Прописка
Регистрация: 27.08.2006
Адрес: Кривой Рог
Сообщений: 84
Сказал спасибо: 23
Сказали Спасибо 15 раз(а) в 13 сообщении(ях)
|
Re: Странности с Mplab Sim и 16F676
С ANSEL все в порядке?
|
|
|
|
21.07.2015, 17:59
|
|
Прописка
Регистрация: 04.09.2009
Сообщений: 167
Сказал спасибо: 1
Сказали Спасибо 35 раз(а) в 25 сообщении(ях)
|
Re: Странности с Mplab Sim и 16F676
Сообщение от picoman
|
С ANSEL все в порядке?
|
+1. Там ещё и компаратор ( CMCON ) имеется, а у "pic16f73 или 874" его нет. Обычная "проблема" при шапочном изучении даташита, MPLAB вообще здесь никаким боком, все глюки в голове. Что-то вроде:
Код:
|
...
movlw 0x07
movwf CMCON
... |
ТС поможет.
Последний раз редактировалось shindax; 21.07.2015 в 18:08.
|
|
|
|
21.07.2015, 20:46
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Странности с Mplab Sim и 16F676
Вообщето, ANSEL и CMCON влияют только на режим входов, а на режим выходов не действуют. Но значения регистров порта в MPLAB-е считываются именно со состояний входов. А вот в режиме аналогового входа MPLAB будет показывать в регистре порта нули на той позиции, где выбран режим аналогового входа.
Поэтому, то что получилось у ТС - это результат особенностей MPLAB-а.
|
|
|
|
21.07.2015, 22:47
|
|
Прописка
Регистрация: 24.12.2006
Сообщений: 167
Сказал спасибо: 9
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Странности с Mplab Sim и 16F676
Сообщение от shindax
|
+1. Там ещё и компаратор ( CMCON ) имеется, а у "pic16f73 или 874" его нет. Обычная "проблема" при шапочном изучении даташита, MPLAB вообще здесь никаким боком, все глюки в голове.
|
Да нет, уважаемый. MPLAB как раз-таки боком идет. Попробовал этот же код симулировать в Протеусе из под Мплаба (Debugger/Select Tool/Proteus VSM) Все команды с портами выполняются в лучшем виде. Там где ноги настроены на вход, они и являются входами. Я еще раз повторю, в самой программе я не изменил ни строчки. Все эксперименты делал с одним и тем же кодом. Вот результат для PIC16F676:
MPLAB 8.92 - состояние портов не меняется. Все ноги в низком уровне.
MPLAB 8.56 - состояние портов меняется только у старшей тетрады. Младшие биты = 0.
Симуляция в Протеусе - ![Очень счастлив](images/smilies/icon_grin.gif)
Вот картинка:
|
|
|
|
22.07.2015, 11:27
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Странности с Mplab Sim и 16F676
Да, и в железе будет так же, как в Протеусе - ANSEL и CMCON на режим выходов совершенно не влияют. Выход то может быть только цифровым.
Дело именно в симуляторе MPLAB-а. Он передает в регистр состояние входов, а не выходных защелок. А аналоговые входы, повторюсь, дают 0 при чтении.
Но если выбрать симулятор Протеус, тогда регистры портов уже покажут состояние выходных защелок, а не входов.
Аналоговые входы влияют только на результат действий с портом командой bsf (bcf) PORTA (PORTC). При этом все остальные выходы, на которые влияет ANSEL, будут сброшены в 0. А если обновлять порт целиком командой movwf PORTC, то будет все нормально.
|
|
|
|
07.08.2015, 10:56
|
|
Прописка
Регистрация: 04.09.2009
Сообщений: 167
Сказал спасибо: 1
Сказали Спасибо 35 раз(а) в 25 сообщении(ях)
|
Re: Странности с Mplab Sim и 16F676
Сообщение от NewWriter
|
Да, и в железе будет так же, как в Протеусе - ANSEL и CMCON на режим выходов совершенно не влияют. Выход то может быть только цифровым...
|
Может дадите ссылку в даташите, где об этом сказано? Я вот не уверен, кто именно управляет выводами, пока компаратор включён. Сам я этот момент специально не проверял, но смотрю даташит и вижу таблицу на стр. 41 и там сказано: "There are eight modes of operation for the comparator. The CMCON register, shown in Register 6-1, is used to select the mode. Figure 6-2 shows the eight possible modes. The TRISA register controls the data direction of the comparator pins for each mode." В режимах CM2:CM0 011, 001 и 101 TRISA2 должен настраиваться на выход, как сказано выше. Да, выход цифровой ( а каким ему в этом МК ещё быть ), но управляется он компаратором, а не выходной защёлкой. Чтобы ему стать "просто" цифровым входом/выходом, нужно компаратор отключить: CMCON = 0x07. Надо проверить "в железе". А вот как раз Proteus-у я-бы доверял меньше всего.
Последний раз редактировалось shindax; 07.08.2015 в 11:00.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:14.
|
|