реклама на сайте
подробности

 
 
> Связь mega8 -> t2313 по SPI, работать работает, но в чем же соль
amost
сообщение Sep 2 2009, 15:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 28-10-05
Из: Ukraine, Khmelnitsky
Пользователь №: 10 246



здравствуйте.

пришлось связать два камня по SPI. передача данных в одну сторону Mega8 (master) --> tiny2313. инициализацию мастера и слейва сделал по ДШ.

mega8:

Код
void SPIinit(void)
{
    DDRB |= (1<<PIN_SPI_MOSI) | (1<<PIN_SPI_SCK) | (1<<PIN_SPI_SS);
    SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR0);
}


t2313:
Код
void USIinit(void)
{
    DDRB = (1<<USI_PIN_DO);
    PORTB |=  (1<<USI_PIN_DI) | (1<<USI_PIN_SCK);
    USICR = (1<<USIOIE) | (1<<USIWM0) | (1<<USICS1);            
}


отправляю байт

Код
void SPI_send_byte(char data)
{
    SPDR = data;
    while( !(SPSR & (1<<SPIF)) )
    ;
}


принимаю на тиньке
Код
ISR (USI_OVERFLOW_vect)
{
    USISR |= (1<<USIOIF);

    usi_in_buf[gBuf_ind_in] = USIDR;
    gBuf_ind_in++;
}


после получения каждого нового символа передаю его слэйвом по UART.

так вот, один байт таким способом я принять могу, но если посылается несколько байт -- получается каша. правильно принимается только последний символ из всего потока. ставлю после передачи каждого символа задержку --
Код
    SPI_send_byte('b');
    _delay_loop_1(48);
    SPI_send_byte('a');
    _delay_loop_1(48);
    SPI_send_byte('d');
    _delay_loop_1(48);
    SPI_send_byte(' ');


-- слэйв принимает нормально. да, если нужно то mega запущена на 16МГц, tiny2313 -- 8МГц. клок на SPI на мастере делится на 16. если делить на 128 то нормально принимает при значении задержки между символами приблизительно 3мкс (начинает принимать нормально при _delay_loop_1(15)).

изначально, было две версии:
1. передача очередного байта начинается до завершения передачи предыдущего. думаю этот вариант исключается поллингом флага SPIF, и флага WCOL. (?)
2. тинька не успевает обрабатывать поток данных. этот вариант тоже вроде как исключил -- понизил частоту клока, сократил до минимума обработчик прерывания. пробовал даже после 4-5 принятых в ОЗУ символов запрещать прерывания на слэйве и спокойненько выдавать буфер в UART.

теоретически, могу оставить задержки между символами. но хочется же знать в чем соль. хотя бы на чьей стороне? мастер/слэйв?

да, мой первый проэкт именно на C. могу чего-то не знать.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- amost   Связь mega8 -> t2313 по SPI   Sep 2 2009, 15:48
- - DpInRock   При таком многословии надо бы соблюдать правила яз...   Sep 2 2009, 19:26
- - amost   а откуда ему взяться, этому лишнему клоку? там же ...   Sep 3 2009, 04:16
- - _Pasha   Цитата(amost @ Sep 2 2009, 18:48) после п...   Sep 3 2009, 05:59
|- - amost   Цитата(_Pasha @ Sep 3 2009, 08:59) Привед...   Sep 3 2009, 20:28
- - DpInRock   Цитатаа откуда ему взяться Вариантов - очень много...   Sep 3 2009, 08:15
- - SasaVitebsk   Я что-то не увидел из текста - а вы SS-ом дёргаете...   Sep 3 2009, 10:56
- - DpInRock   У 2313 нет никакого SS. Просто тупой сдвиговый рег...   Sep 3 2009, 11:26
|- - SasaVitebsk   Цитата(DpInRock @ Sep 3 2009, 14:26) У 23...   Sep 4 2009, 08:35
|- - _Pasha   Цитата(SasaVitebsk @ Sep 4 2009, 11:35) П...   Sep 4 2009, 10:56
- - DpInRock   Ну, существует масса извращенных способов последов...   Sep 4 2009, 11:51
|- - _Pasha   Цитата(DpInRock @ Sep 4 2009, 14:51) А у ...   Sep 4 2009, 12:07
- - SasaVitebsk   Если честно, то настораживает то, что у автора топ...   Sep 4 2009, 13:29
- - DpInRock   ЦитатаЕсли честно, то настораживает то, что у авто...   Sep 4 2009, 13:36
|- - _Pasha   Цитата(DpInRock @ Sep 4 2009, 16:36) А во...   Sep 4 2009, 13:54
- - Палыч   Цитата(amost @ Sep 2 2009, 18:48) ...так ...   Sep 4 2009, 14:01
- - amost   Цитата(DpInRock @ Sep 4 2009, 14:51) Ну, ...   Sep 5 2009, 14:05
|- - SasaVitebsk   Цитата(amost @ Sep 5 2009, 17:05) с этой ...   Sep 7 2009, 11:24
- - DpInRock   Цитатас этой позиции я и читал ДШ, где в упор не у...   Sep 5 2009, 22:02


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.02355 секунд с 7
ELECTRONIX ©2004-2016