|
Отказ от использования стандартного SPI, Необходимо переделать код |
|
|
|
Jul 11 2006, 07:18
|

Частый гость
 
Группа: Новичок
Сообщений: 116
Регистрация: 14-02-06
Из: Москва. Перово
Пользователь №: 14 296

|
Всё дело в том, что не устраивает скорость передачи (делится на 2), вот и пришло в голову руками впихивать биты на ножки: MOSI PB5; MISO PB6; SCK PB7. младший в перёд, защёлка по фронту. У меня туго с операциями сдвига, компилятор ICC, подскажите плиз кто может. Код void transSPI(CMDT command, MyByte8T address, MyByte8T *buffer, MyByte8T len) { MyByte8T dummyRX = 0; MyByte8T dummyTX = 0xFF;
if (len > 0x80 || len == 0) return;
PORTB &= ~BIT(3);
SPDR = command | (len & 0x7F); while(!(SPSR &(1 << SPIF))); dummyRX = SPDR;
SPDR = address; while(!(SPSR &(1 << SPIF))); dummyRX = SPDR;
switch(command) { case READ_CMD: while(len-- > 0) { SPDR = dummyTX; while(!(SPSR &(1 << SPIF))); *buffer++ = SPDR; } break; case WRITE_CMD: while(len-- > 0) { SPDR = *buffer++; while(!(SPSR &(1 << SPIF))); dummyRX = SPDR; } } PORTB |= 1<<PORTD3;
}
|
|
|
|
|
 |
Ответов
|
Jul 11 2006, 12:36
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата($ilent @ Jul 11 2006, 14:59)  Не, всё дело в том, что мега16 работает с приёмопередатчиком, и я не могу отправлять в буфер приёмопередатчика ни чего пока не получу от него ответа, что он готов принять следующий пакет в 128 байт. В вашем исходнике никаких опросов готовности нет, кроме того, вы пытаетесь оптимизировать только ввод/вывод пакета через SPI. Я вам предложил оптимальный код. ЗЫ Мне кажется, вы взялись за задачу, вам непосильную, по причине не(до)понимания предмета
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
Сообщений в этой теме
$ilent Отказ от использования стандартного SPI Jul 11 2006, 07:18 ksv198 Цитата($ilent @ Jul 11 2006, 11:18) ... Jul 11 2006, 07:40 $ilent Цитата(ksv198 @ Jul 11 2006, 11:40) Быстр... Jul 11 2006, 07:49  Karl Цитата($ilent @ Jul 11 2006, 13:49) ... Jul 11 2006, 07:57  ksv198 Цитата($ilent @ Jul 11 2006, 11:49) ... Jul 11 2006, 09:25  SpiritDance Цитата($ilent @ Jul 11 2006, 11:49) ... Jul 11 2006, 14:47 $ilent ну конечно не с каждым, а через один.
на PB7 выдав... Jul 11 2006, 08:18 $ilent подскажите как какое нить число по битно положить ... Jul 11 2006, 08:49 Igor26 Цитата($ilent @ Jul 11 2006, 12:49) ... Jul 11 2006, 09:10 Rst7 Ах вот в чем дело, у вас тут ICC оказывается? Коне... Jul 11 2006, 09:11 $ilent Цитата(Rst7 @ Jul 11 2006, 13:11) Ах вот ... Jul 11 2006, 10:29  Rst7 Цитата($ilent @ Jul 11 2006, 13:29) ... Jul 11 2006, 11:34 $ilent Да именно так, я пытаюсь уменьшить время затрачено... Jul 11 2006, 12:56 IgorKossak По-моему лучше увеличить тактовую у МК (до 16 МГц)... Jul 11 2006, 13:17 $ilent Цитата(IgorKossak)По-моему лучше увеличить тактову... Jul 12 2006, 05:36 ksv198 Цитата($ilent @ Jul 12 2006, 09:36) ... Jul 12 2006, 06:43  zltigo Цитата(ksv198 @ Jul 12 2006, 09:43) Неужт... Jul 12 2006, 07:00 SpiritDance Угу на pentium 4.
8 Мгц SPI - это (8 Мбит/c - расх... Jul 12 2006, 06:38 Nanobyte Может, прикрутить к процессору сдвиговый регистр и... Jul 12 2006, 07:13 zltigo Цитата(Nanobyte @ Jul 12 2006, 10:13) Тог... Jul 12 2006, 07:22 $ilent Всем участвующим, сочусвтвующим, делящимся, насмех... Jul 12 2006, 07:19
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|