|
Отказ от использования стандартного 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, 09:11
|

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

|
Ах вот в чем дело, у вас тут ICC оказывается? Конечно! Вы хоть в код, который он генерит, заглядывали? Если нет, то ничего удивительного, что пауза между байтами у вас больше в 10 раз чем длительность передачи байта  - это я из другой, поднятой вами, темы почерпнул... Берите IAR или GNU-C и пишите следующий код (для передачи) Код void send(char *p, char len) { char temp; if (!len) return; do { temp=*p++; while(SPSR&(1<<SPIF)); SPDR=temp; } while(--len); } Поверьте, у вас будет нормальная скорость...
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jul 11 2006, 10:29
|

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

|
Цитата(Rst7 @ Jul 11 2006, 13:11)  Ах вот в чем дело, у вас тут ICC оказывается? Конечно! Вы хоть в код, который он генерит, заглядывали? Если нет, то ничего удивительного, что пауза между байтами у вас больше в 10 раз чем длительность передачи байта  - это я из другой, поднятой вами, темы почерпнул... Берите IAR или GNU-C и пишите следующий код (для передачи) Этот код был написан не мной и под WINAVR и был только перенесён мной на ICC без изменений. Не заработает ваш код, у меня вызовы 4-х параметровые, и по любому их надо собирать в нутри этой функции. И задержки у меня большие не потому, что руки кривые, а по тому, что так надо, и от них ни как не уйти.
|
|
|
|
Сообщений в этой теме
$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 Цитата($ilent @ Jul 11 2006, 13:29) ... Jul 11 2006, 11:34 $ilent Не, всё дело в том, что мега16 работает с приёмопе... Jul 11 2006, 11:59 Rst7 Цитата($ilent @ Jul 11 2006, 14:59) ... Jul 11 2006, 12:36 $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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|