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

 
 
> mega128 + (MMC + mcp2515), Проблемы с инициализацией mcp2515 в параллели с MMC-картой
musa
сообщение Dec 16 2008, 07:54
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 033
Регистрация: 26-02-07
Из: Москва
Пользователь №: 25 668



Суть проекта заключается в следующем: по CAN'у приходят данные с других контроллеров в сети, нам необходимо все это анализировать и избранно записывать в файлик на карте. С mmc картой и файловой системой проблем нет, но вот как только на параллель повесили mcp2515 программа начинает виснуть при попытке сброса mcp2515.

Привожу ответственные куски кода:

Код
#define MCP_CS_PORT            PORTB
#define MCP_CS_DDR            DDRB
#define MCP_CS_PIN            4
#define MCP_SELECT()    cbi(MCP_CS_PORT, MCP_CS_PIN)
#define MCP_DESELECT()    sbi(MCP_CS_PORT, MCP_CS_PIN)


Сброс mcp2515:
Виснет в spiSendByte - больше негде.
Код
void reset2515(void)
{
    u08 cnt;
    
#ifdef MCP2515_DEBUG
    rprintf("mcp2515: Resetting...\n");
#endif

    MCP_SELECT();
    spiSendByte(CAN_RESET);
    MCP_DESELECT();

    for (cnt=0;cnt<0xff;cnt++);
}


spiSendByte - из библиотеки avrlib:
(прерывание не используется, код исполняется между #else и #endif)
Код
void spiSendByte(u08 data)
{
    // send a byte over SPI and ignore reply
    #ifdef SPI_USEINT
        while(!spiTransferComplete);
        spiTransferComplete = FALSE;
    #else
        while(!(inb(SPSR) & (1<<SPIF)));
    #endif

    outb(SPDR, data);
}


По осциллографу клок идет, чип селект дергается, по линиям данных я вообще ничего не вижу.
SPI точно работает, на MMC пишутся и читаются файлы - совершенно без проблем.

В чем может быть проблема? Приветствуются любые сумасшедшие идеи - сроки жмут.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 19:13
Рейтинг@Mail.ru


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