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

 
 
 
Reply to this topicStart new topic
> STM8S - правда, что UART в режиме SPI выплёвывает данные только LSB-ом вперёд?
InsolentS
сообщение Nov 15 2012, 07:13
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Собственно сабж. Какой же тогда толк от такого SPI??


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post
scifi
сообщение Nov 15 2012, 11:21
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(InsolentS @ Nov 15 2012, 11:13) *
Собственно сабж. Какой же тогда толк от такого SPI??

Не нравится - не кушайте. А если очень надо, то и такой пригодится. К тому же никто не мешает переставлять биты в софте.
Go to the top of the page
 
+Quote Post
InsolentS
сообщение Nov 15 2012, 12:29
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Цитата(scifi @ Nov 15 2012, 17:21) *
Не нравится - не кушайте. А если очень надо, то и такой пригодится. К тому же никто не мешает переставлять биты в софте.

Дело не в том - нравится или не нравится. Это большой подводный камень, который не заметно с первого взгляда. Мне надо было 2 SPI и 1 UART в устройстве, я заложил 2 SPI аппаратных, а UART решил сделать софтовым. Вот только 2ой "аппаратный SPI" подкачал, пришлось делать его тоже софтовым sad.gif
Биты я бы с удовольствием переставил. Если бы в instruction set была команда реверса, как в cortex.
Я ничего против не имею stm8, с удовольствием его использую. Ожидал ответы, типа "ты пропустил битик такой-то в регистре таком-то, установи его и всё попрёт" sm.gif


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 15 2012, 12:53
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(InsolentS @ Nov 15 2012, 14:29) *
Если бы в instruction set была команда реверса, как в cortex.
Я ничего против не имею stm8, с удовольствием его использую. Ожидал ответы, типа "ты пропустил битик такой-то в регистре таком-то, установи его и всё попрёт" sm.gif

Можно через таблицу переставить. Не подходит?
Go to the top of the page
 
+Quote Post
scifi
сообщение Nov 15 2012, 13:49
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Ещё возможен такой вариант:
Код
uint8_t bitrev(uint8_t byte)
{
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLWA X, A");
        return byte;
}

33 такта вместе с вызовом функции и возвратом.
Update
А вот такой код на 6 тактов быстрее:
Код
uint8_t bitrev(uint8_t byte)
{
        asm("LD 0, A");
        asm("SRL A");
        asm("AND A, #0x55");
        asm("LD 1, A");
        asm("LD A, 0");
        asm("AND A, #0x55");
        asm("SLA A");
        asm("OR A, 1");
        asm("LD 0, A");
        asm("SRL A");
        asm("SRL A");
        asm("AND A, #0x33");
        asm("LD 1, A");
        asm("LD A, 0");
        asm("AND A, #0x33");
        asm("SLA A");
        asm("SLA A");
        asm("OR A, 1");
        asm("SWAP A");
        return byte;
}
Go to the top of the page
 
+Quote Post
InsolentS
сообщение Nov 16 2012, 04:48
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Цитата(_Артём_ @ Nov 15 2012, 18:53) *
Можно через таблицу переставить. Не подходит?

Нет, не хотелось бы расходовать память программ, её мало sm.gif

Цитата(scifi @ Nov 15 2012, 19:49) *
-

Спасибо за код, думаю, многим он пригодится. У меня тоже получалось порядка 30 тактов.
В моём случае проще сделать софтовый SPI - к счастью, на втором конце сидит АЦП, общение с которым происходит достаточно редко.


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 15th June 2025 - 13:20
Рейтинг@Mail.ru


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