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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 29.06.2009, 09:33   #1
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/96
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию PIC24HJ64GP206 и модуль SPI1

Здравствуйте!
Что-то вот странное происходит с этим модулем у меня. Вот инициализация:
Код:
 
SSEN=0;
SPIROV=0;
SPI1CON1=0x0020;
SPIEN=1;
Т.е. инициализирую в мастер режиме, без вывода FRAME, с макс. делителями и предделителями(проверял по-разному) и в байтовом режиме. А потом, каждый раз при отправке байта, следующая функция(с дизасм. кодом привожу):
Код:
 
....................  spi_write(0x21);
0272:  MOV.B   #21,W0L
0274:  MOV.B   W0L,SPI1BUFL
0276:  BTSS.B  SPI1STAT.SPITBF
0278:  BRA     276
027A:  BCLR.B  SPI1STAT.SPIROV
....................  spi_write(0xc8); 
027C:  MOV.B   #C8,W0L
027E:  MOV.B   W0L,SPI1BUFL
0280:  BTSS.B  SPI1STAT.SPITBF
0282:  BRA     280
0284:  BCLR.B  SPI1STAT.SPIROV
....................  spi_write(0x06); 
0286:  MOV.B   #6,W0L
0288:  MOV.B   W0L,SPI1BUFL
028A:  BTSS.B  SPI1STAT.SPITBF
028C:  BRA     28A
028E:  BCLR.B  SPI1STAT.SPIROV
и т.д. (всего передаю 6 байт подряд за один раз). А проблема в том, что на осциллограмме вижу только переданные 2 байта, а остальные 4 отсутствуют! Помогите - уже не пойму в чем дело! Эррату читал - второй модуль тоже включил и все равно без толку. Может где-то еще что упустил? Конфигурацию нужно привести? Спасибо.
AleksBak вне форума   Ответить с цитированием
Старый 29.06.2009, 10:41   #2
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/116
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: PIC24HJ64GP206 и модуль SPI1

Цитата:
Сообщение от AleksBak Посмотреть сообщение
Здравствуйте!
Что-то вот странное происходит с этим модулем у меня. Вот инициализация:
Код:
 
SSEN=0;
SPIROV=0;
SPI1CON1=0x0020;
SPIEN=1;
Т.е. инициализирую в мастер режиме, без вывода FRAME, с макс. делителями и предделителями(проверял по-разному) и в байтовом режиме. А потом, каждый раз при отправке байта, следующая функция(с дизасм. кодом привожу):
Код:
 
....................  spi_write(0x21);
0272:  MOV.B   #21,W0L
0274:  MOV.B   W0L,SPI1BUFL
0276:  BTSS.B  SPI1STAT.SPITBF
0278:  BRA     276
027A:  BCLR.B  SPI1STAT.SPIROV
....................  spi_write(0xc8); 
027C:  MOV.B   #C8,W0L
027E:  MOV.B   W0L,SPI1BUFL
0280:  BTSS.B  SPI1STAT.SPITBF
0282:  BRA     280
0284:  BCLR.B  SPI1STAT.SPIROV
....................  spi_write(0x06); 
0286:  MOV.B   #6,W0L
0288:  MOV.B   W0L,SPI1BUFL
028A:  BTSS.B  SPI1STAT.SPITBF
028C:  BRA     28A
028E:  BCLR.B  SPI1STAT.SPIROV
и т.д. (всего передаю 6 байт подряд за один раз). А проблема в том, что на осциллограмме вижу только переданные 2 байта, а остальные 4 отсутствуют! Помогите - уже не пойму в чем дело! Эррату читал - второй модуль тоже включил и все равно без толку. Может где-то еще что упустил? Конфигурацию нужно привести? Спасибо.
у меня с битом spitbf тоже что-то не получалось. я использую флаг прерывания spi
__________________

Vanizma вне форума   Ответить с цитированием
Старый 29.06.2009, 10:45   #3
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 42
Сообщений: 3,334
Вес репутации: 2341/92
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Re: PIC24HJ64GP206 и модуль SPI1

SPI1CON2bits.SPIBEN = 1; // попутал, оно для FJ

еще в эррате
Код:
Writing to the SPIxBUF register as soon as the
TBF bit is cleared will cause the SPI module to
ignore the written data. Applications which use SPI
with DMA will not be affected by this erratum.

Work around
After the TBF bit is cleared, wait for a minimum
duration of one SPI Clock before writing to the
SPIxBUF register.
Alternatively, do either of the following:
a) Poll the RBF bit and wait for it to get set
before writing to the SPIxBUF register.
b) Poll the SPI Interrupt flag and wait for it to
get set before writing to the SPIxBUF
register.
c) Use an SPI Interrupt Service Routine.
d) Use DMA.

Последний раз редактировалось vitalka; 29.06.2009 в 12:14.
vitalka вне форума   Ответить с цитированием
Старый 29.06.2009, 11:17   #4
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/96
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: PIC24HJ64GP206 и модуль SPI1

Цитата:
Сообщение от vitalka Посмотреть сообщение
SPI1CON2bits.SPIBEN = 1;

еще в эррате
Код:
Writing to the SPIxBUF register as soon as the
TBF bit is cleared will cause the SPI module to
ignore the written data. Applications which use SPI
with DMA will not be affected by this erratum.
 
Work around
After the TBF bit is cleared, wait for a minimum
duration of one SPI Clock before writing to the
SPIxBUF register.
Alternatively, do either of the following:
a) Poll the RBF bit and wait for it to get set
before writing to the SPIxBUF register.
b) Poll the SPI Interrupt flag and wait for it to
get set before writing to the SPIxBUF
register.
c) Use an SPI Interrupt Service Routine.
d) Use DMA.
Спасибо большое Vitalka! Похоже это оно! Т.к. забыл еще одну интересную вещь дописать - т.к. этот SPI иницилизирует у меня LCD модуль и после инициализации я еще должно выждать некоторую паузу(еще переключить на вывод данных с вывода команд в индикатор) и уже потом выводить на экран пикселы, то опять после такой задержки импульсы со SPI-модуля шли(клоки и данные) и опять только 2 байта и все! Просто забыл это указать т.к. уже совсем сократил программу под конец и убрал все из нее кроме инициализации. Сейчас проверю и отпишусь. Спасибо.
Проверил пока что добавлением пауз между записями по SPI. Все работает. Наверно и с прерываниями(как у Vanizma) и др. способы пройдут и их пока что не успел проверить. Еще раз спасибо. Самое интересное, что не нашел это у себя в эррате до этого и сейчас. Похоже все эрраты надо заново скачать и все заново перечитать до буквы. Ревизия кристалла 3002.

Последний раз редактировалось AleksBak; 29.06.2009 в 11:53. Причина: добавил насчет проверки
AleksBak вне форума   Ответить с цитированием
Старый 29.06.2009, 12:13   #5
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 42
Сообщений: 3,334
Вес репутации: 2341/92
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Re: PIC24HJ64GP206 и модуль SPI1

Цитата:
Сообщение от AleksBak Посмотреть сообщение
Самое интересное, что не нашел это у себя в эррате до этого и сейчас. Похоже все эрраты надо заново скачать и все заново перечитать до буквы. Ревизия кристалла 3002.
вот она
vitalka вне форума   Ответить с цитированием
Старый 29.06.2009, 12:18   #6
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/116
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: PIC24HJ64GP206 и модуль SPI1

Цитата:
Сообщение от AleksBak Посмотреть сообщение
Проверил пока что добавлением пауз между записями по SPI. Все работает. Наверно и с прерываниями(как у Vanizma) и др. способы пройдут и их пока что не успел проверить. Еще раз спасибо. Самое интересное, что не нашел это у себя в эррате до этого и сейчас. Похоже все эрраты надо заново скачать и все заново перечитать до буквы. Ревизия кристалла 3002.
подойдут, подойдут - DMA только шум шинкует. Правда, приходится кроме канала DMA на запись настраивать канал DMA на чтение "в никуда", иначе устанавливается флаг переполнения буфера SPI.
__________________

Vanizma вне форума   Ответить с цитированием
Старый 29.06.2009, 12:38   #7
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/96
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: PIC24HJ64GP206 и модуль SPI1

Цитата:
Сообщение от Vanizma Посмотреть сообщение
подойдут, подойдут - DMA только шум шинкует. Правда, приходится кроме канала DMA на запись настраивать канал DMA на чтение "в никуда", иначе устанавливается флаг переполнения буфера SPI.
Понял спасибо. А эрраты у меня такой не было(ссылка выше).
AleksBak вне форума   Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RF модуль Radiocrafts RexeR Общетехнические вопросы 0 25.08.2008 19:02
Модуль дискретного ввода\вывода I7060 RS-485 ModBus redD Общетехнические вопросы 3 19.12.2007 17:33
Bluetooth модуль и UART ifa21rus Общетехнические вопросы 1 12.07.2007 13:02
какой GPRS модуль самый дешевый ? Sergey1 Общетехнические вопросы 0 17.04.2007 18:01
pic24hj64gp206: UART и OSCILLATOR, пару вопросов. Алексей Продукция MICROCHIP 1 14.04.2007 22:05


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


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