Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 04.09.2019, 10:27   #1
andro_bro
Member
 
Регистрация: 31.03.2016
Возраст: 36
Сообщений: 80
Вес репутации: 76/0
andro_bro will become famous soon enough
По умолчанию PIC16F1619 and master I2C

Все добра и доброго дня!

Имею в наличии отладочную платку "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();
    }
Отладка застревает на while(!SSP1IF), логический анализатор не показывает ни каких изменений. Все пины в логической единице.
Состояние регистров в аттаче.

Буду признателен в помощи запуска!
Миниатюры
регистры SSP1.PNG  
andro_bro вне форума   Ответить с цитированием
Старый 05.09.2019, 13:31   #2
=AK=
Senior Member
 
Аватар для =AK=
 
Регистрация: 02.08.2007
Возраст: 63
Сообщений: 305
Вес репутации: 1149/59
=AK= has much to be proud of=AK= has much to be proud of=AK= has much to be proud of=AK= has much to be proud of=AK= has much to be proud of=AK= has much to be proud of=AK= has much to be proud of=AK= has much to be proud of=AK= has much to be proud of
Отправить сообщение для =AK= с помощью Skype™
По умолчанию Re: PIC16F1619 and master I2C

Скажите, а что вы хотели получить после выполнения выражения


SSP1CON2 |= 1<<0;


Если просто установить lsb бит, то зачем такая замысловатость?

Последний раз редактировалось =AK=; 05.09.2019 в 13:38.
=AK= вне форума   Ответить с цитированием
Старый 05.09.2019, 14:01   #3
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,150
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC16F1619 and master I2C

=AK=
обычно используют макро с маской и выставляют маску. чтобы не было магических чисел.
тут полагаю вопрошающий убрал макро, чтобы не было вопросов про макро.

andro_bro
попробуйте заместо
Код:
while(!SSP1IF);
использовать
Код:
while(SSP1CON2 & (1 << 0));
почитайте описание. для генерации прерываний надо еще настроить.
besogon на форуме   Ответить с цитированием
Старый 05.09.2019, 15:00   #4
Рак
Senior Member
 
Регистрация: 02.04.2008
Адрес: Кременчуг
Возраст: 33
Сообщений: 1,370
Вес репутации: 2386/78
Рак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond repute
По умолчанию Re: PIC16F1619 and master I2C

Цитата:
Сообщение от andro_bro Посмотреть сообщение
Все добра и доброго дня!

Имею в наличии отладочную платку "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();
    }
Отладка застревает на while(!SSP1IF), логический анализатор не показывает ни каких изменений. Все пины в логической единице.
Состояние регистров в аттаче.

Буду признателен в помощи запуска!
Вроде, всё верно настроено, попробуйте без отладки проверить в железе. Вижу, что с древних времён этот модуль не притерпел изменений.
Рак вне форума   Ответить с цитированием
Старый 05.09.2019, 16:57   #5
andro_bro
Member
 
Регистрация: 31.03.2016
Возраст: 36
Сообщений: 80
Вес репутации: 76/0
andro_bro will become famous soon enough
По умолчанию Re: PIC16F1619 and master I2C

Я повоевал с этим процом и забил. Надо было написать модуль для работы с датчиком BMP-280 для другого проца. Вот взял для отладки PIC18F25J50 и пошло дело... А с тем я не знаю в чем дело. Попробую в субботу. О результате отпишусь.
andro_bro вне форума   Ответить с цитированием
Старый 15.09.2019, 01:20   #6
Asmodey
Member
 
Регистрация: 21.11.2009
Сообщений: 35
Вес репутации: 138/37
Asmodey will become famous soon enoughAsmodey will become famous soon enough
По умолчанию Re: PIC16F1619 and master I2C

Цитата:
Сообщение от andro_bro Посмотреть сообщение
Отладка застревает на while(!SSP1IF), логический анализатор не показывает ни каких изменений. Все пины в логической единице.
В 16F1619 точно больше одного MSSP модуля? Если нет, тогда зачем нужно указывать номер используемого SSP?
Asmodey вне форума   Ответить с цитированием
Старый 15.09.2019, 07:16   #7
andro_bro
Member
 
Регистрация: 31.03.2016
Возраст: 36
Сообщений: 80
Вес репутации: 76/0
andro_bro will become famous soon enough
По умолчанию Re: PIC16F1619 and master I2C

Я так думаю, это сделанно для совместимости кода. В библиотеке так....
andro_bro вне форума   Ответить с цитированием
Старый 15.09.2019, 11:54   #8
sdn_sdn
Senior Member
 
Регистрация: 18.10.2016
Сообщений: 104
Вес репутации: 339/15
sdn_sdn is a jewel in the roughsdn_sdn is a jewel in the roughsdn_sdn is a jewel in the roughsdn_sdn is a jewel in the rough
По умолчанию Re: PIC16F1619 and master I2C

Цитата:
Сообщение от Asmodey Посмотреть сообщение
В 16F1619 точно больше одного MSSP модуля? Если нет, тогда зачем нужно указывать номер используемого SSP?
Наверное потому, что такой номер прописан в даташите.
sdn_sdn вне форума   Ответить с цитированием
Старый 15.09.2019, 17:55   #9
Asmodey
Member
 
Регистрация: 21.11.2009
Сообщений: 35
Вес репутации: 138/37
Asmodey will become famous soon enoughAsmodey will become famous soon enough
По умолчанию Re: PIC16F1619 and master I2C

Давайте вспомним, сколько раз мы материли микрочиповские даташиты?
Попробуйте без единички. И попробуйте не !SSPIF, а по простому, без закидонов явно указать нужное состояние флага - SSPIF==1 или SSPIF==0. Авось сработает. Кто знает, чего там компилятор себе думает...

И да, резисторы подтяжки какие на линиях I2C?
Asmodey вне форума   Ответить с цитированием
Старый 15.09.2019, 18:41   #10
sdn_sdn
Senior Member
 
Регистрация: 18.10.2016
Сообщений: 104
Вес репутации: 339/15
sdn_sdn is a jewel in the roughsdn_sdn is a jewel in the roughsdn_sdn is a jewel in the roughsdn_sdn is a jewel in the rough
По умолчанию Re: PIC16F1619 and master I2C

Цитата:
Сообщение от Asmodey Посмотреть сообщение
Кто знает, чего там компилятор себе думает...
Ассемблерный листинг знает.
sdn_sdn вне форума   Ответить с цитированием
Старый 15.09.2019, 19:34   #11
andro_bro
Member
 
Регистрация: 31.03.2016
Возраст: 36
Сообщений: 80
Вес репутации: 76/0
andro_bro will become famous soon enough
По умолчанию Re: PIC16F1619 and master I2C

Всё установлено) Я забил на это. Отладил на целевом камне PIC12LF1840 коммуникацию. Правда завтра буду пробовать на отладочной плате подымать SPI для приемника MRF49XA. Осталось их с полсотни. Надо выработать их. :-)
andro_bro вне форума   Ответить с цитированием
Старый 16.09.2019, 19:45   #12
andro_bro
Member
 
Регистрация: 31.03.2016
Возраст: 36
Сообщений: 80
Вес репутации: 76/0
andro_bro will become famous soon enough
По умолчанию Re: PIC16F1619 and master I2C

Вот, вот хотел отладить приемник 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;
}
Прошлый пример по I2C успешно заработал на другом проце.
andro_bro вне форума   Ответить с цитированием
Старый 16.09.2019, 20:48   #13
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,150
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC16F1619 and master I2C

andro_bro
у Вас нет кода для настройки ansel порта C.

Что у Вас не работает? Статус не получаете?
besogon на форуме   Ответить с цитированием
Старый 16.09.2019, 21:00   #14
andro_bro
Member
 
Регистрация: 31.03.2016
Возраст: 36
Сообщений: 80
Вес репутации: 76/0
andro_bro will become famous soon enough
По умолчанию Re: PIC16F1619 and master I2C

Он был тоже. Не запускается тактирование. Перепробовал много вариантов. Кроме автоконфигуратора, т.к. Код хочу портировать на целевой проц. Наверное стоит поступить как и с I2C. Запустить на целевом проце....
andro_bro вне форума   Ответить с цитированием
Старый 16.09.2019, 21:08   #15
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,150
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC16F1619 and master I2C

andro_bro
покажите disasm функции, которая у Вас не работает.
besogon на форуме   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

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


Часовой пояс GMT +3, время: 16:50.


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