Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
05.10.2009, 02:37
|
|
Прописка
Регистрация: 25.11.2006
Адрес: Харьков
Сообщений: 295
Сказал спасибо: 25
Сказали Спасибо 71 раз(а) в 60 сообщении(ях)
|
Re: Проблема с PIC16F73
Сообщение от tolyanv8
|
Подставляю некое видимое действие, например вывод в
порт
|
Как же Вы таким методом можете проконтролировать переключение в первый банк ОЗУ, если порты находятся в нулевом?
И еще одна мысль. В этом ПИКе 2 страницы программной памяти. И если подпрограмма находится в Page 1 (выше адреса 0800h), а вызов происходит из Page 0, то нужно перед вызовом правильно установить регистр PCLATH.
|
|
|
|
05.10.2009, 13:24
|
|
Прописка
Регистрация: 29.09.2007
Адрес: Донецк, ????
Сообщений: 199
Сказал спасибо: 21
Сказали Спасибо 19 раз(а) в 15 сообщении(ях)
|
Re: Проблема с PIC16F73
Цитата:
|
И еще одна мысль. В этом ПИКе 2 страницы программной памяти. И если подпрограмма находится в Page 1 (выше адреса 0800h), а вызов происходит из Page 0, то нужно перед вызовом правильно установить регистр PCLATH.
|
Как можно узнать, в какой странице находится подпрограмма?
|
|
|
|
05.10.2009, 16:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Проблема с PIC16F73
По листингу программы.
|
|
|
Сказали "Спасибо" MisterDi
|
|
|
05.10.2009, 17:03
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Проблема с PIC16F73
Вот так можно установить нужную страницу перед вызовом:
Код:
|
movlw high PODPROGRAMMA
movwf PCLATH
call PODPROGRAMMA |
Последний раз редактировалось realid; 05.10.2009 в 17:09.
|
|
|
|
05.10.2009, 21:11
|
|
Прописка
Регистрация: 29.09.2007
Адрес: Донецк, ????
Сообщений: 199
Сказал спасибо: 21
Сказали Спасибо 19 раз(а) в 15 сообщении(ях)
|
Re: Проблема с PIC16F73
Только что добрался до кода
Вся программа помещается в Page0,
т.е. межсегментных переходов вроде как-бы не надо
Что бы могло сие значить?
Код:
|
0186 00644 I2C_SEND_BYTE
0186 1683 00645 BSF STATUS,RP0 ;bank1
0187 1303 00646 BCF STATUS,RP1
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0188 1A07 00647 BTFSC SDA_SET |
TRIS-регистры вроде бы находятся в первом банке
Что компилятору может не нравиться?
|
|
|
|
05.10.2009, 21:16
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Проблема с PIC16F73
Сообщение от tolyanv8
|
Только что добрался до кода
Вся программа помещается в Page0,
т.е. межсегментных переходов вроде как-бы не надо
Что бы могло сие значить?
Код:
|
0186 00644 I2C_SEND_BYTE
0186 1683 00645 BSF STATUS,RP0 ;bank1
0187 1303 00646 BCF STATUS,RP1
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0188 1A07 00647 BTFSC SDA_SET |
TRIS-регистры вроде бы находятся в первом банке
Что компилятору может не нравиться?
|
Это предупреждение проверить биты выбора банка, а не ошибка. Убирается директивой error -302
|
|
|
|
06.10.2009, 02:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Проблема с PIC16F73
Сообщение от realid
|
Вот так можно установить нужную страницу перед вызовом:
Код:
|
movlw high PODPROGRAMMA
movwf PCLATH
call PODPROGRAMMA |
|
И при возврате в 0 банк:
Код:
|
movlw 0
movwf PCLATH
return |
Сообщение от tolyanv8
|
P.S. На другом PIC-е этот же код отлично функционирует
|
Такие глюки проверяются не нескольких экземплярах МК одного типа...
Последний раз редактировалось picavr; 06.10.2009 в 02:12.
|
|
|
|
13.10.2009, 16:40
|
|
Прописка
Регистрация: 29.09.2007
Адрес: Донецк, ????
Сообщений: 199
Сказал спасибо: 21
Сказали Спасибо 19 раз(а) в 15 сообщении(ях)
|
Re: Проблема с PIC16F73
Немного прояснил проблему
Похоже проблема с осциллятором (внутри PIC-a)
Попробовал различные тестовые программы,
повисание происходит в произвольных точках.
Осциллятор стандартный (кварц 4 МГц + 2 кондера 15 пф)
Часто осциллятор не заводится вообще,
но стартует от наводок (при касании кварца рукой),
потом правда виснет снова :О
Последний раз редактировалось tolyanv8; 13.10.2009 в 16:44.
Причина: добавление
|
|
|
|
13.10.2009, 22:29
|
|
Прописка
Регистрация: 25.11.2006
Адрес: Харьков
Сообщений: 295
Сказал спасибо: 25
Сказали Спасибо 71 раз(а) в 60 сообщении(ях)
|
Re: Проблема с PIC16F73
В таком случае попробуйте другой экземпляр кварца. Или в конфигурации ПИКа поменяйте тип генератора с XT на HS.
См. также https://kazus.ru/forums/showthread.php?t=14235
|
|
|
|
14.10.2009, 22:23
|
|
Прописка
Регистрация: 29.09.2007
Адрес: Донецк, ????
Сообщений: 199
Сказал спасибо: 21
Сказали Спасибо 19 раз(а) в 15 сообщении(ях)
|
Re: Проблема с PIC16F73
Кварц уже менял - не помогло
С XT/HS - то же самое
Попробую действительно собрать другую плату
с таким же контроллером, а то закрадываются смутные
сомнения, что PIC убитый немного
В данном экземпляре при тактировке от внешнего
генератора действительно происходит нормальное выполнение
тестовой программы, а от кварца - ни в каком режиме не хочет :о
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:20.
|
|