Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Протокол ISP - описание
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Andrey_GTI
Нужно описание протокола ISP, подскажите где скачать.
Artem_Petrik
В datasheet раздел Memory programming подраздел serial downloading.
Andrey_GTI
Помогите разобраться, не удаётся сэмитировать протокол ISP.

Вопрос вот в этих строчках, как это понимать ?

When writing serial data to the AT90USB82/162, data is clocked on the rising edge of SCK.
When reading data from the AT90USB82/162, data is clocked on the falling edge of SCK. See
Figure 25-11 for timing details.
bloodden
Цитата(Andrey_GTI @ Nov 26 2008, 00:01) *
Помогите разобраться, не удаётся сэмитировать протокол ISP.

Вопрос вот в этих строчках, как это понимать ?

When writing serial data to the AT90USB82/162, data is clocked on the rising edge of SCK.
When reading data from the AT90USB82/162, data is clocked on the falling edge of SCK. See
Figure 25-11 for timing details.

Понимать так: это SPI
Andrey_GTI
Объясните плиз, под словом Read понимается сэмплирование данных с линий как мастером так и слэйвом, а под словом Write выдвигание новых данных на линию и слэйом и мастером ?? тоесть данные сэмплируются и слэйвом и мастером одновременно ? В книге "Аппаратные интерфейсы ПК" нарисована диаграмма со сдвигом MOSI относительно MISO, при этом слэйв сэмплирует данные по переднему фронту, а мастер по заднему. Так как на самом деле ? никак не пойму.
Dimonira
Сказали, же, смотреть SPI. Там в разделе по SPI всё подробно нарисовано. ISP работает в SPI режиме 0.
Не понимаю что непонятно sad.gif ...
Andrey_GTI
По какому фронту идёт сэмплирование мастером и слэйовм, а по какому идет сдвиг регистра мастером и слэйвом.
Dimonira
Вот пример программной "имитации" ("облегчённый" кусок моего кода для программатора из соотв. темы):
Код
unsigned char spiTransfer(unsigned char out_data)
{
    // softwared SPI
    unsigned char temp=0x80,in_data=0;
    while(temp)
    {
        // set MOSI
        BIT_SET(ISP_PORT,ISP_MOSI,(out_data & temp));
        // delay 1/2 of period
        delay_us(duration);
        // read MISO
        if(BIT_TEST(ISP_PIN,ISP_MISO))
            in_data|=temp;
        // SCK high
        BIT_ON(ISP_PORT,ISP_SCK);
        // delay 1/2 of period
        delay_us(duration);
        // prepare for next bit
        temp>>=1;
        // SCK low
        BIT_OFF(ISP_PORT,ISP_SCK);
    }
    return in_data;
}

Надеюсь смысл кода понятен: к моменту положительного фронта данные уже должны "стоять" (и мастер и слейв должны выставить), а сразу после отрицательного фронта данные должны быть обновлены (тоже обоими).
Andrey_GTI
тоесть сдвигаются по заднему фронту SCK, с реальным программатором работает ?
Dimonira
Да
Andrey_GTI
ок, спс, будем смотреть в чем прабл...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.