Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


Ответ
Опции темы
Непрочитано 02.02.2012, 11:50   #1221
SkataniK
Прохожий
 
Регистрация: 12.04.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
SkataniK на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

боюсь у меня далеко не тоже самое
привожу на ассемблере, потому, что в коде на си все правильно, уже сверился с кучей работающий примеров, лажа происходит именно в ассемблере и мне интересно почему это так
почему после прихода нужных данных они сразу же заменяются на белеберду?
Реклама:
SkataniK вне форума   Ответить с цитированием
Непрочитано 02.02.2012, 14:20   #1222
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ну, нет, так нет, сами разбирайтесь. Подсказка: лажа происходит из-за неполного понимания вами работы ииц в кортексе
=GM= вне форума   Ответить с цитированием
Непрочитано 03.02.2012, 00:25   #1223
Sergi_alc
Частый гость
 
Регистрация: 30.10.2011
Сообщений: 28
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sergi_alc на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

=GM=,
Сегодня проверил в железе. Команды
LDR R0, [R5, #0x8]
STRB R0, [R4, #0x1]
выполняются за 4 такта,а жаль. Придется переписывать всю оболочку.
Sergi_alc вне форума   Ответить с цитированием
Непрочитано 03.02.2012, 00:53   #1224
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Sergi_alc Посмотреть сообщение
=GM=,
Сегодня проверил в железе. Команды
LDR R0, [R5, #0x8]
STRB R0, [R4, #0x1]
выполняются за 4 такта,а жаль. Придется переписывать всю оболочку.
У вас команды совсем не те, про которые я говорил
1. LDR R0, [R5,#0x8] - откуда взялось смещение 0х08?
2. STRB R0, [R4,#0x1] - команда должна быть такая: STRB R0,[R4],#0x1

Цитата из технического руководства. Ваш случай - второй.

LDR any are pipelined when possible. This means that if the next instruction is
an LDR or non-base updating STR, and the destination of the first LDR is not
used to compute the address for the next instruction, then one cycle is removed from the cost of the next instruction. So, an LDR might be followed by an STR, so that the STR writes out what the LDR loaded. More multiple LDRs can be pipelined together. Some optimized examples:
— LDR R0,[R1]; LDR R1,[R2] - normally three cycles total
— LDR R0,[R1,R2]; STR R0,[R3,#20] - normally three cycles total
— LDR R0,[R1,R2]; STR R1,[R3,R2] - normally three cycles total
— LDR R0,[R1,R5]; LDR R1,[R2]; LDR R2,[R3,#4] - normally four cycles
total.
=GM= вне форума   Ответить с цитированием
Непрочитано 03.02.2012, 01:02   #1225
Sergi_alc
Частый гость
 
Регистрация: 30.10.2011
Сообщений: 28
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sergi_alc на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Для проверки вот так написал на С:
while (1)
{
fill_screen(black);
//Ввод
inp[0]=GPIOB-›IDR;
inp[1]=GPIOB-›IDR;
inp[2]=GPIOB-›IDR;
.......
inp[98]=GPIOB-›IDR;
inp[99]=GPIOB-›IDR;
// Вывод
for (i=0;i‹99;i++)
{
drawLine(i*4,240-(inp[i]››1),(i+1)*4,240-(inp[i+1]››1),white);
};
};
Чего-то с косвенной адресацией не получилось,буду учиться дальше.
Sergi_alc вне форума   Ответить с цитированием
Непрочитано 03.02.2012, 01:12   #1226
SkataniK
Прохожий
 
Регистрация: 12.04.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
SkataniK на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

ну почему же сразу нет, я же сказал, что мой код не отличается от всех других
но если хотется посмотреть, пожалуйста
функция чтения
void I2C_read (uint8_t SlaveAddrR,uint8_t SlaveAddrW, uint8_t RegisterAddr)
{
I2C2-›CR1 |= I2C_CR1_PE;
I2C2-›CR1 |= I2C_CR1_START;
while (!(I2C2-›SR1 & I2C_SR1_SB))

////////////////////
I2C2-›DR=SlaveAddrW;
//////////////////////

while((I2C1-›SR1 & I2C_SR1_ADDR)==0);

(void) I2C1-›SR1;
(void) I2C1-›SR2;

/////////////////////
I2C2-›DR=RegisterAddr;
while ((I2C2-›SR1 & I2C_SR1_TXE)==0)
//////
I2C2-›CR1 |= I2C_CR1_START;
while ((I2C2-›SR1 & I2C_SR1_SB)==0)
(void) I2C2-›SR1;

I2C2-›DR=SlaveAddrR; //send slave addr with R-bit
(вся запарка происходит в ассемблерном коде операции выше)

I2C_data=I2C2-›DR;

I2C2-›CR1 &= ~I2C_CR1_ACK ;
I2C2-›CR1 |= I2C_CR1_STOP;
I2C2-›CR1 &=~ I2C_CR1_PE;

}
убрал пару проверок, нафиг их, всё и так работает- смотрел на осциллографе
ещё раз повторю, данные приходят корректные - это видно в при внутрисхемной отладке (делаю на STM32 -Discovery), но сразу после их прихода в датаригистер заменяются на FF

Последний раз редактировалось SkataniK; 03.02.2012 в 01:17.
SkataniK вне форума   Ответить с цитированием
Непрочитано 03.02.2012, 01:36   #1227
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Для начала надо бы после операторов while(. . .) точку с запятой ставить, а то у вас многократно следующий оператор выполняется

Последний раз редактировалось =GM=; 03.02.2012 в 12:39.
=GM= вне форума   Ответить с цитированием
Непрочитано 03.02.2012, 01:41   #1228
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Sergi_alc Посмотреть сообщение
Чего-то с косвенной адресацией не получилось, буду учиться дальше
Попробуйте вот так

char buf[256];
char *p=buf;
unsigned long *pbi;
pbi=&GPIOB-›IDR;

*p++=*pbi;
*p++=*pbi;
. . . . . . . . .
*p++=*pbi;
=GM= вне форума   Ответить с цитированием
Непрочитано 03.02.2012, 10:05   #1229
Sergi_alc
Частый гость
 
Регистрация: 30.10.2011
Сообщений: 28
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sergi_alc на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Попробовал. Не получилось
char inp[100];
char *p=inp;
uint32_t volatile *pbi;

pbi=&(GPIOB-›IDR);

*p++=*pbi;

дает вот такой код при любой оптимизации
LDR R1, [R4, #0x6c]
ADDS R0, R1, #1
STR R0, [R4, #0x6c]
LDR R0, [R4, #0x70]
LDR R0, [R0]
STRB R0, [R1]
Sergi_alc вне форума   Ответить с цитированием
Непрочитано 03.02.2012, 10:17   #1230
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Компилятор делает то, что вы хотите. А вы хотите на каждой выборке за каким-то шутом сохранять содержимое текущего указателя в памяти. Спрашивается, зачем? Вы ж его тут же на следующей выборке затираете. Снимите атрибут volatile, и будет вам щастье.
=GM= вне форума   Ответить с цитированием
Ответ

Закладки

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 21:24.


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