Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 01.03.2021, 14:38  
ustalov
Прохожий
 
Регистрация: 14.02.2011
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ustalov на пути к лучшему
По умолчанию Прерывание RB для pic16f690

Рег.IOCB расположен во 2-м банке памяти, но ни компилятор PICC, ни протеус и даже MPLAB, и ASM похоже не знают об этом и обращаются в банк 1, а там IOCA. Получается, что прерывание RB недоступно. Может кто решал эту задачку,поделитесь!!
Вложения:
Тип файла: pdf 690_rb.pdf (100.9 Кб, 0 просмотров)
Реклама:
ustalov вне форума  
Непрочитано 01.03.2021, 14:50  
Eddy71
Почётный гражданин KAZUS.RU
 
Аватар для Eddy71
 
Регистрация: 22.02.2008
Адрес: Ukraine, рядом с Полтавой
Сообщений: 9,556
Сказал спасибо: 5,392
Сказали Спасибо 24,763 раз(а) в 5,559 сообщении(ях)
Eddy71 на пути к лучшему
По умолчанию Re: Прерывание RB для pic16f690

Никогда проблем не было - всё нормально и там и там компилируется.
__________________
«Совершенство — это не тогда, когда уже нечего больше добавить, а тогда, когда уже нечего отнять.»
/Эйнштейн/

моя домашняя страничка: http://www.eddy.com.ua/
Eddy71 вне форума  
Непрочитано 01.03.2021, 15:29  
alvadep
Почётный гражданин KAZUS.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Прерывание RB для pic16f690

116 ( 8 ) = 4E (16)
Правильно надо записывать.

Цитата:
Для записи числа в десятичной системе счисления в одних трансляторах требуется представление только в виде цифр (255, 65535), тогда как в других для этого требуется начать число с точки (.255, .65535).
Для записи числа в шестнадцатеричной системе требуется начать число с префикса «0x» (0xFF, 0x2000), в других — добавить в конце числа «h» (0FFh, 2000h), в третьих — записывать только цифры (0FF, 2000), при этом в последних двух случаях у чисел, начинающиеся с A…F, для отличия их от символьных имён спереди добавляют ноль.
Признаком восьмеричной системы в некоторых трансляторах является ведущий ноль (0377, 0177777), в других требуется добавить префикс в виде буквы «O», а число заключить в апострофы (O’377’, O’177777’).
Для записи констант в двоичной системе распространённым является формат вида b'10010111'.

Последний раз редактировалось alvadep; 01.03.2021 в 15:38.
alvadep вне форума  
Непрочитано 01.03.2021, 15:43  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 674
Сказал спасибо: 360
Сказали Спасибо 753 раз(а) в 358 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Прерывание RB для pic16f690

Вот это :

Код:
#include ‹xc.h›
// PIC16F690

void main(void){
    
    IOCA = 0x0F;
    IOCB = 0x0F;
    
    IOCAbits.IOCA4 = 1;
    IOCBbits.IOCB4 = 1;

    while (1);    

}

компилируется вот в это :

Код:
   ;psect for function _main
   _main:	
   
   ;main.c: 5: IOCA = 0x0F;
   ;incstack = 0
   ; Regs used in _main: [wreg]
   	movlw	15
   	bsf	3,5	;RP0=1, select bank1
   	bcf	3,6	;RP1=0, select bank1
   	movwf	22	;volatile
   
   ;main.c: 6: IOCB = 0x0F;
   	movlw	15
   	bcf	3,5	;RP0=0, select bank2
   	bsf	3,6	;RP1=1, select bank2
   	movwf	22	;volatile
   
   ;main.c: 8: IOCAbits.IOCA4 = 1;
   	bsf	3,5	;RP0=1, select bank1
   	bcf	3,6	;RP1=0, select bank1
   	bsf	22,4	;volatile
   
   ;main.c: 9: IOCBbits.IOCB4 = 1;
   	bcf	3,5	;RP0=0, select bank2
   	bsf	3,6	;RP1=1, select bank2
   	bsf	22,4	;volatile

l11:	
   ;main.c: 12: while (1);
   
   	goto	l11
   __end_of_main:

С банками все в норме.
Компилятор XC8 v1.41, MPLABX 3.51
j-Roger вне форума  
Непрочитано 01.03.2021, 15:53  
anatol378
Почётный гражданин KAZUS.RU
 
Аватар для anatol378
 
Регистрация: 19.10.2004
Адрес: Нижний Новгород
Сообщений: 1,746
Сказал спасибо: 416
Сказали Спасибо 1,240 раз(а) в 551 сообщении(ях)
anatol378 на пути к лучшему
По умолчанию Re: Прерывание RB для pic16f690

MOVWF 0116 может вместо MOVWF 0116 надо MOVWF 0x74
__________________
Решил посоветовать, да забыл что...
anatol378 вне форума  
Непрочитано 01.03.2021, 17:31  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 401
Сказали Спасибо 2,215 раз(а) в 1,313 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Прерывание RB для pic16f690

Сообщение от ustalov Посмотреть сообщение
и ASM похоже не знают об этом и обращаются в банк 1,
На ассемблере вы сами всё пишите, вплоть до буковки, до циферки, и вы сами ответственны за переключение банков.
С другой стороны, вот это, что у вас в пдф-ке написано:
BCF 0x3, 0x5
BSF 0x3, 0x6
насколько я по памяти помню, и есть переключение банка сбросом и установкой в регистре STATUS (адрес 0x3) битов, отвечающих за банки, RPx, кажись.
Пишу чисто по памяти, но по-моему, это так и есть. Проверьте сами по даташиту МК.

Upd:
Уже сам проверил. Вот, на картинке всё показано. Какие еще вопросы? Читайте маны вдумчиво! И не кипишите без нужнды.
Миниатюры:
Нажмите на изображение для увеличения
Название: Снимок.PNG
Просмотров: 0
Размер:	23.0 Кб
ID:	160930   Нажмите на изображение для увеличения
Название: Снимо2к.PNG
Просмотров: 0
Размер:	18.0 Кб
ID:	160931  

Последний раз редактировалось NewWriter; 01.03.2021 в 17:48.
NewWriter вне форума  
Непрочитано 01.03.2021, 19:30  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 674
Сказал спасибо: 360
Сказали Спасибо 753 раз(а) в 358 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Прерывание RB для pic16f690

В частности, в MPASM есть директива banksel ( это скорее "встроенный " макрос с параметром ), активирующий нужный банк для указанного параметра, будь то регистр памяти или периферии.

Используется ручками , например, так:
Код:
...
#include ‹p16f690.inc›
...
movlw	0x0F ; что будем писать
banksel	IOCA ; переключаем банк
movwf	IOCA ; куда будем писать
    
banksel	IOCB ; переключаем банк
movwf	IOCB ; куда будем писать
В выхлопе компилятора по месту banksel появляются коды инструкций выбора нужного банка.

По поводу ASM-вставок в языке C для компилятора XC8.
В MPLAB XC8 C Compiler директива banksel поддерживается в inline-ассемблере; в документации описано, как это делается. Для выбора страницы программной памяти при использовании команд, влияющих на Program Counter (PC), существует аналогичная штука pagesel.
Как это работает и работает ли в других компиляторах - нужно курить ихнюю документацию ( или по крайней мере глубоко затянуться )

Последний раз редактировалось j-Roger; 01.03.2021 в 19:56.
j-Roger вне форума  
Непрочитано 01.03.2021, 19:33  
alvadep
Почётный гражданин KAZUS.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Прерывание RB для pic16f690

Сообщение от anatol378 Посмотреть сообщение
MOVWF 0116 может вместо MOVWF 0116 надо MOVWF 0x74
тогда уж: MOVWF 0x16

Сообщение от NewWriter Посмотреть сообщение
Читайте маны вдумчиво! И не кипишите без нужнды.
ТС банки выбрал правильно, а вот сам регистр нет.
Ему не мешало бы разобраться как записываются числа в разных системах исчисления, чтобы не было комментов типа
Цитата:
загрузил непонятно куда
Это во-первых. А во-вторых с разрядность операнда команды MOVWF и почему для адресации еще нужны банки.
alvadep вне форума  
Непрочитано 01.03.2021, 20:06  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 674
Сказал спасибо: 360
Сказали Спасибо 753 раз(а) в 358 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Прерывание RB для pic16f690

При косвенной адресации тоже может быть засада с банками, для этого существует аналог директивы banksel - директива bankisel. Бан + кисель, короче
j-Roger вне форума  
Сказали "Спасибо" j-Roger
alvadep (01.03.2021)
Непрочитано 01.03.2021, 20:54  
alvadep
Почётный гражданин KAZUS.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Прерывание RB для pic16f690

Сообщение от j-Roger Посмотреть сообщение
При косвенной адресации тоже может быть засада с банками, для этого существует аналог директивы banksel - директива bankisel. Бан + кисель, короче
Все правильно, эт я на скору руку писал, удаляю вариант.
alvadep вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STM32F103C8T6 Таймер и прерывание по окончании счета zeon13 ARM 13 23.08.2016 09:18
Не работает прерывание от TMR1 Vadimkhl PIC 1 18.04.2016 05:02
stm32 после старта TIM6 сразу прерывание kvark85 ARM 8 04.07.2013 11:22
Непонятное прерывание stm32 sosedi ARM 17 20.02.2013 22:38
Мега88 внешнее прерывание по низкому уровню E_C_C Proteus 0 06.09.2012 11:47


Часовой пояс GMT +4, время: 09:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot