Nzx писал(а):
Скорректирую вопрос своего коллеги выше(работаем вместе):
Когда только начали осваивать DSP, у меня вроде бы получилось передать значение типа float из DSP в RISC. Если не ошибаюсь, там разница в адресации и типе указателя, мол при работе с int, адрес задается соответствующего типа и адресация, к примеру, следующая: DSP - 0x82, RISC - 0x3000104, с float же не помню точно. А сейчас снова нужно передать значения типа float из DSP в RISC. Но, в отличие от int, уже не получается. Задаю указатели и переменные типа float, хочу передать к примеру 3,5:
ptr=(float *)0x84;
*ptr=3.5;
При попытке достать это значение в RISC(при этом просматриваю все адреса поблизости, т.к не помню точного адреса), везде вижу нули:
float temp1[20];
For(i=0; i<20;i++)
{ptr=(float *)(0x3000100+0x01*i);
temp1[i]=*ptr;}
Подскажите пожалуйста, в чем ошибка.
P.s. Сам код не выложил, проблема именно с float. Unsigned int (естественно, когда все переменные того же типа) передается нормально.
Адресация RISC - полусловная (8 бит)
Адресация DSP - словная (16 бит)
float занимает в памяти 32 бита, соответственно 2 адреса памяти DSP и 4 адреса памяти RISC,
т.е. в RISCe эту переменную нужно "собирать" из четырех адресов ОЗУ