Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
ну наверное запутался...
Отправлено
Roman_V 14 сентября 2009, г. 17:05
В ответ на:
А зачем вы его читаете... отправлено пользователем
Michael Klokov 14 сентября 2009, г. 16:51
маски и прочее я брал с даташита... мог зашиться конечно, но ведь работает как в даташите то.
Вы говорите зачем я его читаю. Так мне надо определить адрес начала данных, куда писать мои данные то. А как записал данные, то этот WR0 я смещаю на длину данных и ПЕРЕДАТЬ. Вот кусок даташита
/* first, get the free TX memory size */
FREESIZE:
get_free_size = Sn_TX_FSR;
if (get_free_size < send_size) goto FREESIZE;
/* calculate offset address */
get_offset = Sn_TX_WR & gSn_TX_MASK;
/* calculate start address(physical address) */
get_start_address = gSn_TX_BASE + get_offset;
/* if overflow socket TX memory */
if ( (get_offset + send_size) > (gSn_TX_MASK + 1) )
/* copy upper_size bytes of source_addr to get_start_address */
upper_size = (gSn_TX_MASK + 1) – get_offset;
memcpy(source_addr, get_start_address, upper_size);
/* update source_addr*/
source_addr += upper_size;
/* copy left_size bytes of source_addr to gSn_TX_BASE */
left_size = send_size – upper_size;
memcpy(source_addr, gSn_TX_BASE, left_size);
}
else
{
/* copy send_size bytes of source_addr to get_start_address */
memcpy(source_addr, get_start_address, send_size);
}
/* increase Sn_TX_WR as length of send_size */
Sn_TX_WR += send_size;
/* set SEND command */
Sn_CR = SEND;
}
Составить ответ | Вернуться на конференцию.
Ответы