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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 19.05.2017, 10:53   #1
AlexNik
Junior Member
 
Регистрация: 28.05.2012
Сообщений: 11
Вес репутации: 100/22
AlexNik will become famous soon enoughAlexNik will become famous soon enough
По умолчанию Проблема с SPI на PIC18F26K22.

Давненько не был на форуме... Подскажите пожалуйста. SPI на МК PIC18F26K22 не принимает данные. Ниже программа. SPI1 не работал с реальной микросхемой, вернее запись в микросхему есть, а при считывании данные от микросхемы идут правильно по осциллограме, но PIC18 принимает всегда 0. Потом завесил вход SPI1 на 1 постоянно, PICKIT3 видит логическую 1 по этому порту, но SPI1 принимает опять 0 вместо 255. Перешёл на SPI2 - результат аналогичный. На передачу SPI работает, а приём всегда 0!!! Что может быть? [#] //ГЛАВНАЯ ФУНКЦИЯ void main (void) { TRISC = 0b10010000; //порт C ANSELC = 0b11101111; // TRISB = 0b11100101; //порт B: ANSELB = 0b11111011; // LATBbits.LATB4 = 0; // SSP2CON1 = 0b00100010; //FOSC/64 = 64/64 = 1MHz SSP2CON2 = 0b00000000; // SSP2CON3 = 0b00000000; // while(1) { for (i=1;i

Последний раз редактировалось AlexNik; 19.05.2017 в 11:01.
AlexNik вне форума   Ответить с цитированием
Старый 19.05.2017, 11:02   #2
AlexNik
Junior Member
 
Регистрация: 28.05.2012
Сообщений: 11
Вес репутации: 100/22
AlexNik will become famous soon enoughAlexNik will become famous soon enough
По умолчанию Re: Проблема с SPI на PIC18F26K22.

Не могу вставить программу.
AlexNik вне форума   Ответить с цитированием
Старый 19.05.2017, 11:04   #3
AlexNik
Junior Member
 
Регистрация: 28.05.2012
Сообщений: 11
Вес репутации: 100/22
AlexNik will become famous soon enoughAlexNik will become famous soon enough
По умолчанию Re: Проблема с SPI на PIC18F26K22.

void main (void) { TRISC = 0b10010000; ANSELC = 0b11101111; TRISB = 0b11100101; ANSELB = 0b11111011; LATBbits.LATB4 = 0; SSP2CON1 = 0b00100010; SSP2CON2 = 0b00000000; SSP2CON3 = 0b00000000; while(1) { for (i=1;i
AlexNik вне форума   Ответить с цитированием
Старый 19.05.2017, 11:51   #4
_WIL_
Senior Member
 
Регистрация: 26.11.2009
Адрес: Беларусь
Сообщений: 670
Вес репутации: 1181/47
_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of
По умолчанию Re: Проблема с SPI на PIC18F26K22.

Цитата:
Сообщение от AlexNik Посмотреть сообщение
Не могу вставить программу.
используйте тег code
http://www.microchip.su/showpost.php?p=1144&postcount=1

[CODE]
текст программы
[./CODE]
точку после [ убрать!
_WIL_ вне форума   Ответить с цитированием
Старый 19.05.2017, 12:18   #5
AlexNik
Junior Member
 
Регистрация: 28.05.2012
Сообщений: 11
Вес репутации: 100/22
AlexNik will become famous soon enoughAlexNik will become famous soon enough
По умолчанию Re: Проблема с SPI на PIC18F26K22.

Цитата:
Сообщение от _WIL_ Посмотреть сообщение
используйте тег code
http://www.microchip.su/showpost.php?p=1144&postcount=1

[CODE]
текст программы
[./CODE]
точку после [ убрать!
Так и делал - не получилось. Попробую ещё раз. [CODE] //ГЛАВНАЯ ФУНКЦИЯ void main (void) { TRISC = 0b10010000; //порт C ANSELC = 0b11101111; // TRISB = 0b11100101; //порт B: ANSELB = 0b11111011; // LATBbits.LATB4 = 0; // SSP2CON1 = 0b00100010; //FOSC/64 = 64/64 = 1MHz SSP2CON2 = 0b00000000; // SSP2CON3 = 0b00000000; // while(1) { for (i=1;i
AlexNik вне форума   Ответить с цитированием
Старый 19.05.2017, 12:25   #6
AlexNik
Junior Member
 
Регистрация: 28.05.2012
Сообщений: 11
Вес репутации: 100/22
AlexNik will become famous soon enoughAlexNik will become famous soon enough
По умолчанию Re: Проблема с SPI на PIC18F26K22.

Конец программы обрезается. [CODE] //ГЛАВНАЯ ФУНКЦИЯ void main (void) { TRISC = 0b10010000; //порт C ANSELC = 0b11101111; // TRISB = 0b11100101; //порт B: ANSELB = 0b11111011; // LATBbits.LATB4 = 0; // SSP2CON1 = 0b00100010; //FOSC/64 = 64/64 = 1MHz SSP2CON2 = 0b00000000; // SSP2CON3 = 0b00000000; // while(1) { for (i=1;i
AlexNik вне форума   Ответить с цитированием
Старый 19.05.2017, 12:28   #7
yeskela
Senior Member
 
Аватар для yeskela
 
Регистрация: 28.01.2010
Адрес: Новочеркасск
Возраст: 35
Сообщений: 1,114
Вес репутации: 3551/75
yeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond repute
По умолчанию Re: Проблема с SPI на PIC18F26K22.

Цитата:
Сообщение от AlexNik Посмотреть сообщение
Конец программы обрезается.
https://pastebin.com
__________________
Отсутствие доступа в интернет с рабочего места очень замедляет работу. Наличие - полностью парализует её.
yeskela вне форума   Ответить с цитированием
Старый 19.05.2017, 12:29   #8
Vovka
Senior Member
 
Аватар для Vovka
 
Регистрация: 27.12.2007
Адрес: недалеко от г.Белгорода
Возраст: 50
Сообщений: 1,837
Вес репутации: 2631/81
Vovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond repute
Отправить сообщение для Vovka с помощью ICQ
По умолчанию Re: Проблема с SPI на PIC18F26K22.

файлом выложите
__________________
Настройся на хороший день и он таким будет!
Vovka вне форума   Ответить с цитированием
Старый 19.05.2017, 12:39   #9
_WIL_
Senior Member
 
Регистрация: 26.11.2009
Адрес: Беларусь
Сообщений: 670
Вес репутации: 1181/47
_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of
По умолчанию Re: Проблема с SPI на PIC18F26K22.

Цитата:
Сообщение от AlexNik Посмотреть сообщение
Так и делал - не получилось. Попробую ещё раз. [CODE] //ГЛАВНАЯ ФУНКЦИЯ void main (void) { TRISC = 0b10010000; //порт C ANSELC = 0b11101111; // TRISB = 0b11100101; //порт B: ANSELB = 0b11111011; // LATBbits.LATB4 = 0; // SSP2CON1 = 0b00100010; //FOSC/64 = 64/64 = 1MHz SSP2CON2 = 0b00000000; // SSP2CON3 = 0b00000000; // while(1) { for (i=1;i
Код:
 
//ГЛАВНАЯ ФУНКЦИЯ 
void main (void) 
   {      
           TRISC  = 0b10010000;      //порт C    
           ANSELC = 0b11101111;    //  
           TRISB  = 0b11100101;      //порт B:     
           ANSELB = 0b11111011;      //  
           LATBbits.LATB4 = 0;       //    
           SSP2CON1 = 0b00100010;    //FOSC/64  =  64/64 = 1MHz    
           SSP2CON2 = 0b00000000;    //    
           SSP2CON3 = 0b00000000;    //    
           while(1)    
                 { 
                       for (i=1;i
Как то так
В расширенном режиме есть предварительный просмотр , чтоб всю тему не загаживать.

Может у вас недопустимый символ после for (i=1;i

Последний раз редактировалось _WIL_; 19.05.2017 в 12:45.
_WIL_ вне форума   Ответить с цитированием
Старый 19.05.2017, 12:41   #10
AlexNik
Junior Member
 
Регистрация: 28.05.2012
Сообщений: 11
Вес репутации: 100/22
AlexNik will become famous soon enoughAlexNik will become famous soon enough
По умолчанию Re: Проблема с SPI на PIC18F26K22.

Проблема с интернетом. Выложите пожалуйста текст на сайт. Файл в облаке: https://cloud.mail.ru/public/BRf3/oHmxfRHur

Последний раз редактировалось AlexNik; 19.05.2017 в 12:59.
AlexNik вне форума   Ответить с цитированием
Старый 19.05.2017, 13:00   #11
_WIL_
Senior Member
 
Регистрация: 26.11.2009
Адрес: Беларусь
Сообщений: 670
Вес репутации: 1181/47
_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of
По умолчанию Re: Проблема с SPI на PIC18F26K22.

Цитата:
Сообщение от AlexNik Посмотреть сообщение
Проблема с интернетом. Выложите пожалуйста текст на сайт. Файл в облаке: https://cloud.mail.ru/public/BRf3/oHmxfRHur

Код:
 
//ГЛАВНАЯ ФУНКЦИЯ
void main (void)
{  

   TRISC  = 0b10010000;      //порт C
   ANSELC = 0b11101111;      //
   TRISB  = 0b11100101;      //порт B: 
   ANSELB = 0b11111011;      //
   LATBbits.LATB4 = 0;       //
   SSP2CON1 = 0b00100010;    //FOSC/64 = 64/64 = 1MHz
   SSP2CON2 = 0b00000000;    //
   SSP2CON3 = 0b00000000;    //
   while(1)
   {  for (i=1;i<=2;i++)
      {
         Delay10KTCYx(200);                   //
      }
      LED = !LED;
      chr = 0;
      CS = 0;
      chr = SSP2BUF;
      SSP2BUF = 0b10101010;                   //
      //do Nop() while (PIR3bits.SSP2IF == 0);
      //PIR3bits.SSP2IF = 0;
      do Nop() while (SSP2STATbits.BF == 0);
      for (i=1;i<=2;i++) {};
      chr = SSP2BUF;
      CS = 1;
   }
   
}
_WIL_ вне форума   Ответить с цитированием
Старый 19.05.2017, 13:06   #12
AlexNik
Junior Member
 
Регистрация: 28.05.2012
Сообщений: 11
Вес репутации: 100/22
AlexNik will become famous soon enoughAlexNik will become famous soon enough
По умолчанию Re: Проблема с SPI на PIC18F26K22.

Благодарю за помощь. В Errata описана ошибка по SPI. Но я думаю, что я её обошёл из-за задержки после проверки бита BF. 7. Module: MSSP (Master Synchronous Serial Port) 7.1 SPI Master mode When the MSSP is used in SPI Master mode and the CKE bit is clear (CKE = 0), the Buffer Full (BF) bit and the MSSP Interrupt Flag (SSPIF) bit become set half an SCK cycle early. If the user software immediately reacts to either of the bits being set, a write collision may occur as indicated by the WCOL bit being set. Work around To avoid a write collision one of the following methods should be used: Method 1: Add a software delay of one SCK period after detecting the completed transfer (the BF bit or SSPIF bit becomes set) and prior to writing to the SSPBUF register. Verify the WCOL bit is clear after writing to SSPBUF. If the WCOL bit is set, clear the bit in software and rewrite the SSPBUF register. Method 2: As part of the MSSP initialization procedure, set the CKE bit (CKE = 1).
AlexNik вне форума   Ответить с цитированием
Старый 19.05.2017, 15:42   #13
AlexNik
Junior Member
 
Регистрация: 28.05.2012
Сообщений: 11
Вес репутации: 100/22
AlexNik will become famous soon enoughAlexNik will become famous soon enough
По умолчанию Re: Проблема с SPI на PIC18F26K22.

Цитата:
Сообщение от _WIL_ Посмотреть сообщение
Код:
 
//ГЛАВНАЯ ФУНКЦИЯ
void main (void)
{  

   TRISC  = 0b10010000;      //порт C
   ANSELC = 0b11101111;      //
   TRISB  = 0b11100101;      //порт B: 
   ANSELB = 0b11111011;      //
   LATBbits.LATB4 = 0;       //
   SSP2CON1 = 0b00100010;    //FOSC/64 = 64/64 = 1MHz
   SSP2CON2 = 0b00000000;    //
   SSP2CON3 = 0b00000000;    //
   while(1)
   {  for (i=1;i<=2;i++)
      {
         Delay10KTCYx(200);                   //
      }
      LED = !LED;
      chr = 0;
      CS = 0;
      chr = SSP2BUF;
      SSP2BUF = 0b10101010;                   //
      //do Nop() while (PIR3bits.SSP2IF == 0);
      //PIR3bits.SSP2IF = 0;
      do Nop() while (SSP2STATbits.BF == 0);
      for (i=1;i<=2;i++) {};
      chr = SSP2BUF;
      CS = 1;
   }
   
}
Может кто-нибудь проверит на таком же процессоре? Ведь для этого не нужно подцеплять физически SPI, достаточно подать 1 на вход SPI.
AlexNik вне форума   Ответить с цитированием
Старый 22.05.2017, 07:18   #14
AlexNik
Junior Member
 
Регистрация: 28.05.2012
Сообщений: 11
Вес репутации: 100/22
AlexNik will become famous soon enoughAlexNik will become famous soon enough
По умолчанию Re: Проблема с SPI на PIC18F26K22.

Цитата:
Сообщение от AlexNik Посмотреть сообщение
Может кто-нибудь проверит на таком же процессоре? Ведь для этого не нужно подцеплять физически SPI, достаточно подать 1 на вход SPI.
Вот нашёл такую же проблему:http://www.microchip.com/forums/m551030-p2.aspx

pkral пишет:
"I had same problem on 18F26K22, with reading zeros from SPI. While comm was done at notably slower speed 1Mbps (64MHz/64div) problem was, that portC defaults to analog input.There is also defaul lower speed slew rate which may address your problem. so this should help: SLRCON = 0;ANSELC = 0;"

Попробовал сделать: SLRCON = 0 - не помогло. А бит ANSELC.4=0, который отвечает за вход SPI1, как видно из листинга программы, был обнулён. Но попробовал сделать: ANSELC = 0 - и всё заработало!!!Тогда решил определить какой бит ANSELC ещё влияет на вход SPI1.Оказалось это бит: ANSELC.3 - SCK1 - частота SPI1. Но это выход!

Тоже самое оказалось и с SPI2. Настройка: ANSELB-0b0011.1001 решило проблему. Т.е. нужно обнулить не только 2-й бит, отвечающий за SDI2, но и 1-й бит - SCK2.

Может кому-нибудь пригодится и сэкономит время :-)
AlexNik вне форума   Ответить с цитированием
Старый 22.05.2017, 10:31   #15
Zikon
Junior Member
 
Регистрация: 04.07.2012
Сообщений: 20
Вес репутации: 139/21
Zikon will become famous soon enoughZikon will become famous soon enough
По умолчанию Re: Проблема с SPI на PIC18F26K22.

в DS так и есть

https://www.dropbox.com/s/wrfdvthx6kcw81w/xxx.png?dl=0
Zikon вне форума   Ответить с цитированием
Старый 22.05.2017, 11:56   #16
AlexNik
Junior Member
 
Регистрация: 28.05.2012
Сообщений: 11
Вес репутации: 100/22
AlexNik will become famous soon enoughAlexNik will become famous soon enough
По умолчанию Re: Проблема с SPI на PIC18F26K22.

Цитата:
Сообщение от Zikon Посмотреть сообщение
Да действительно написано. Но в документации при настройке интерфейса SPI это отдельно не указано - поэтому вводит в заблуждение, т.к. в режиме мастера бит порта SCK1 настраивается на выход.
AlexNik вне форума   Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC 12f629 проблема вывода сигнала на портах GP0 и GP1 andreii Продукция MICROCHIP 18 06.07.2014 14:39
Проблема при работе с таблицами, просьба знающих направить на правильный путь митяй Вопросы начинающих 12 09.03.2013 20:45
Проблема при "клонировании" программы с одного pic18f2520 на другую при помощи pickit2 Hellwarr Вопросы начинающих 8 25.12.2010 02:17
Вопросы по проекту на pic16f84a asm. louiscifer Вопросы начинающих 14 13.04.2009 06:19


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


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