![]() |
|
|
Продукция MICROCHIP Технические вопросы по всей продукции Microchip |
![]() |
|
Опции темы | Опции просмотра |
![]() |
#1 |
Member
Регистрация: 31.03.2016
Возраст: 38
Сообщений: 80
Вес репутации: 76/0 ![]() |
![]()
Все добра и доброго дня!
Имею в наличии отладочную платку "Curiosity" на проце PIC16F1619. Не получается заставить выдать старт по i2c. Вот инициализация I2C Код:
void init_I2C(){ TRISB4=1; TRISB5=1; ANSB4=0; ANSB5=0; SSPCON1 = 0b00101000; //SSP Module as Master SSPCON2 = 0; SSPADD = 0x09; //Setting Clock Speed SSPSTAT = 0; } Код:
init_I2C(); //set bit SEN in the SSP1CON2 SSP1IF = 0; SSP1CON2 |= 1<<0; while(!SSP1IF); while(1){ NOP(); } Состояние регистров в аттаче. Буду признателен в помощи запуска!
__________________
https://www.linkedin.com/in/aliaksandr-kisel/ |
![]() |
![]() |
![]() |
#2 |
Senior Member
|
![]()
Скажите, а что вы хотели получить после выполнения выражения
SSP1CON2 |= 1<<0; Если просто установить lsb бит, то зачем такая замысловатость? Последний раз редактировалось =AK=; 05.09.2019 в 13:38. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Регистрация: 12.07.2012
Возраст: 34
Сообщений: 2,685
Вес репутации: 4859/106 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
=AK=
обычно используют макро с маской и выставляют маску. чтобы не было магических чисел. тут полагаю вопрошающий убрал макро, чтобы не было вопросов про макро. andro_bro попробуйте заместо Код:
while(!SSP1IF); Код:
while(SSP1CON2 & (1 << 0)); |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Регистрация: 02.04.2008
Адрес: Кременчуг
Возраст: 35
Сообщений: 1,437
Вес репутации: 2632/87 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#5 |
Member
Регистрация: 31.03.2016
Возраст: 38
Сообщений: 80
Вес репутации: 76/0 ![]() |
![]()
Я повоевал с этим процом и забил. Надо было написать модуль для работы с датчиком BMP-280 для другого проца. Вот взял для отладки PIC18F25J50 и пошло дело... А с тем я не знаю в чем дело. Попробую в субботу. О результате отпишусь.
__________________
https://www.linkedin.com/in/aliaksandr-kisel/ |
![]() |
![]() |
![]() |
#6 |
Member
Регистрация: 21.11.2009
Сообщений: 35
Вес репутации: 138/42 ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
#7 |
Member
Регистрация: 31.03.2016
Возраст: 38
Сообщений: 80
Вес репутации: 76/0 ![]() |
![]()
Я так думаю, это сделанно для совместимости кода. В библиотеке так....
__________________
https://www.linkedin.com/in/aliaksandr-kisel/ |
![]() |
![]() |
![]() |
#8 |
Senior Member
Регистрация: 18.10.2016
Сообщений: 148
Вес репутации: 386/20 ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
#9 |
Member
Регистрация: 21.11.2009
Сообщений: 35
Вес репутации: 138/42 ![]() ![]() |
![]()
Давайте вспомним, сколько раз мы материли микрочиповские даташиты?
Попробуйте без единички. И попробуйте не !SSPIF, а по простому, без закидонов явно указать нужное состояние флага - SSPIF==1 или SSPIF==0. Авось сработает. Кто знает, чего там компилятор себе думает... И да, резисторы подтяжки какие на линиях I2C? |
![]() |
![]() |
![]() |
#10 |
Senior Member
Регистрация: 18.10.2016
Сообщений: 148
Вес репутации: 386/20 ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
#11 |
Member
Регистрация: 31.03.2016
Возраст: 38
Сообщений: 80
Вес репутации: 76/0 ![]() |
![]()
Всё установлено) Я забил на это. Отладил на целевом камне PIC12LF1840 коммуникацию. Правда завтра буду пробовать на отладочной плате подымать SPI для приемника MRF49XA. Осталось их с полсотни. Надо выработать их. :-)
__________________
https://www.linkedin.com/in/aliaksandr-kisel/ |
![]() |
![]() |
![]() |
#12 |
Member
Регистрация: 31.03.2016
Возраст: 38
Сообщений: 80
Вес репутации: 76/0 ![]() |
![]()
Вот, вот хотел отладить приемник MRF49XA. Целый день промучился с настройкой аппаратного SPI. Контроллер все тот же в плате curoisyty PIC16F1619. Вот код. Не работает...
Код:
#define CS LATC6 void main(void) { // SCS INTOSC; SPLLEN disabled; IRCF 4MHz_HF; int mrf49_status=0; OSCCON = 0x6A; initPort(); initMySPI(); CS = 0; mrf49_status = SPI_Receive_byte(0); mrf49_status = (mrf49_status<<8)+SPI_Receive_byte(0x55); CS=1; while(1) NOP(); } void initPort(){ // Конфиг ног SPI TRISB4 = TRIS_IN; //SDI TRISB6 = TRIS_OUT; //SCK TRISC7 = TRIS_OUT; //SDO TRISC6 = TRIS_OUT; //CS //Начальное состяние CS = 1; } void initMySPI(){ SSP1STAT=0XC0; SSP1CON=0X30; } unsigned char SPI_Receive_byte(unsigned char data) { unsigned char temp; SSPBUF=data; while(!SSPIF); SSPIF=0; temp=SSPBUF; return temp; }
__________________
https://www.linkedin.com/in/aliaksandr-kisel/ |
![]() |
![]() |
![]() |
#13 |
Senior Member
Регистрация: 12.07.2012
Возраст: 34
Сообщений: 2,685
Вес репутации: 4859/106 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
andro_bro
у Вас нет кода для настройки ansel порта C. Что у Вас не работает? Статус не получаете? |
![]() |
![]() |
![]() |
#14 |
Member
Регистрация: 31.03.2016
Возраст: 38
Сообщений: 80
Вес репутации: 76/0 ![]() |
![]()
Он был тоже. Не запускается тактирование. Перепробовал много вариантов. Кроме автоконфигуратора, т.к. Код хочу портировать на целевой проц. Наверное стоит поступить как и с I2C. Запустить на целевом проце....
__________________
https://www.linkedin.com/in/aliaksandr-kisel/ |
![]() |
![]() |
![]() |
#15 |
Senior Member
Регистрация: 12.07.2012
Возраст: 34
Сообщений: 2,685
Вес репутации: 4859/106 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
andro_bro
покажите disasm функции, которая у Вас не работает. |
![]() |
![]() |
![]() |
#16 | |
Senior Member
Регистрация: 18.10.2016
Сообщений: 148
Вес репутации: 386/20 ![]() ![]() ![]() ![]() |
![]() Цитата:
Код:
//xc8 assembler MOVLW 0X10 ;out CKL to RB6 BANKSEL RB6PPS MOVWF RB6PPS MOVLW 0X11 ;out SDA to RB4 MOVWF RB4PPS MOVLW (1<<TRISB_TRISB4_POSN) | (1<<TRISB_TRISB6_POSN) ;I2C LINE BANKSEL TRISB MOVWF TRISB MOVLW (1<<SSP1CON1_SSPEN_POSN) | (0<<SSP1CON1_CKP_POSN) | (1<<SSP1CON1_SSPM3_POSN) | (0<<SSP1CON1_SSPM2_POSN) | (0<<SSP1CON1_SSPM1_POSN) | (0<<SSP1CON1_SSPM0_POSN) ;master BANKSEL SSP1CON1 MOVWF SSP1CON1 MOVLW 0X4F ;100 кгц CLK / 32 MHZ core BANKSEL SSP1ADD MOVWF SSP1ADD Последний раз редактировалось sdn_sdn; 13.12.2020 в 15:07. |
|
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
Опции просмотра | |
|
|