реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> SSP, не заносятся данные в регистр данных
S1LENCE
сообщение Jan 5 2011, 10:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 2-01-11
Пользователь №: 61 990



Здравствуйте,

у меня вот такая проблема в симулятор (мк lpc2148), использую SSP, пишу в регистр данных (SSPDR) данные 16 бит, вроде все нормально, флаг TFE = 0, BSY = 1, но в регистре все равно нули, в чем может быть проблема? или так и должно быть (возможно с регистра данных данные автоматически переносятся в сдвиговых регистр и в симуляторе этого не видно) ?

Спасибо!
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jan 5 2011, 11:02
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Симулятор поступает совершенно правильно. Как в жизни. Ибо писать в регистр данных и читать регистр данных - это разные вещи. Регистры разные ибо.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
S1LENCE
сообщение Jan 5 2011, 11:08
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 2-01-11
Пользователь №: 61 990



В каком смысле разные регистры? Он же один?
на сколько я понимаю. если он пустой и я туда заношу данные, то SPI сразу начанает передачу и поэтому я вижу нули, или не так?
Спасибо
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 5 2011, 11:39
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (S1LENCE @ Jan 5 2011, 17:08) *
В каком смысле разные регистры? Он же один?

Вы будете смеяться, но их два - один на запись, другой на чтение. Начните с попытки понять, что такое SPI а не с тыкания мышкой в симуляторы.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
S1LENCE
сообщение Jan 5 2011, 15:22
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 2-01-11
Пользователь №: 61 990



Ну это понятно что 2 фифо буфера, но программа все равно к одному обращается - SSPDR
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 5 2011, 15:41
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (S1LENCE @ Jan 5 2011, 21:22) *
но программа все равно к одному обращается - SSPDR

А подумать, хоть чуть-чуть? Два "понятно", а зачем тогда второй, "если все равно к одному обращается"?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
S1LENCE
сообщение Jan 5 2011, 16:04
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 2-01-11
Пользователь №: 61 990



При записи в этот регистр, данные поступают в Т буфер, когда считывает, то данные считываются с R буфера
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jan 5 2011, 18:04
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата(S1LENCE @ Jan 5 2011, 22:04) *
При записи в этот регистр, данные поступают в Т буфер, когда считывает, то данные считываются с R буфера

Вы где умных слов набрались таких? Не ходите больше туда. Там Зло.

Типа, просто посмотрите на схему (блок схему) SPI. Любого микроконтроллера. Абсолютно любого.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
S1LENCE
сообщение Jan 25 2011, 09:26
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 2-01-11
Пользователь №: 61 990



Подскажите, пожалуйста, что я не так делаю, немогу понять

Код
int main(void)
{
int i;

    PINSEL1 |= 0x02A8;         //select SSEL, MISO, MOSI, SCK
    IO0DIR |= (1 << 20);            //SSEl as output
    SSPCR0 = 0x0D;         //14 bit
    SSPCPSR = 0xFA;           //speed = 32kHz
    SSPCR1 |= (1 << 1);         //SSP enable
for(;;)
{
    SSPDR = 0x16C8;
    while (!(SSPSR & (1 << 0)));
    for(i = 0; i < 100000; i++);
}
}


Почему в дебаггере в SSPDR всегда 0х3FF, тоесть все "1" после команды SSPDR = 0x16C8
И работает не так как надо...
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jan 25 2011, 12:18
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



А не пробовали прочитать ответы на самый первый пост? Попробуйте.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
S1LENCE
сообщение Jan 25 2011, 15:58
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 2-01-11
Пользователь №: 61 990



Я так и не понял те ответы, но работает уже правильно
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st July 2025 - 08:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01447 секунд с 7
ELECTRONIX ©2004-2016