Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: В какой моде запускать main?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Страницы: 1, 2
aaarrr
Цитата(singlskv @ Apr 18 2009, 05:06) *
Я же не против попыток, я не поддерживаю повсеместное использование спецобработчиков IRQ там где это нафиг не нужно...

Дык и я не поддерживаю, хотя и не вижу в этом особого зла.

Цитата(singlskv @ Apr 18 2009, 05:06) *
З.Ы. TWI ИМХО, можно разуливать почти всегда, по крайней мере после приведения логики обращений(чтение/запись) c
мегой к варианту общения с EEPROM траблов больше нет. Ну а частота прерываний... это все-таки уже вопрос об общеем
построении системы...

Да, EEPROM - это, кажется, один из очень немногих относительно надежно работающих с TWI продуктов sad.gif

Цитата(defunct @ Apr 18 2009, 05:13) *
Для мозга более полезно находить способы как обойтись без попыток.

Да, например, задать глупый вопрос на форуме.
defunct
Цитата(aaarrr @ Apr 18 2009, 04:09) *
Грех в них тапком не кинуть smile.gif Уж больно много приходится заниматься их продукцией, и качество оной не окрыляет.

А мне их MAC нравится smile.gif - простой как пень, одинаковый на AVR32, SAM7 и SAM9 и быстрый. Что еще надо.
128 байтные буферы не смущают, т.к. имею дело с пакетами разной длины.
singlskv
Цитата(aaarrr @ Apr 18 2009, 05:16) *
Да, EEPROM - это, кажется, один из очень немногих относительно надежно работающих с TWI продуктов sad.gif
"Фишка" там в том, что если мастер требует еще данных то нужно ему их дать
"по-кругу" как в EEPROM... дальше все работает...
aaarrr
Цитата(defunct @ Apr 18 2009, 05:17) *
Что еще надо.

Чтобы в нем глюков не было. Например, обнаружил такую смешную вещь: иногда при сбросе бита TE в EMAC_NCR не сбрасывается TGO в EMAC_TSR, хотя если верить документации, должен сбрасываться по любому чиху.
DpInRock
И чего столько проблемсвложенностью образовалось?
Как оказалось все просто. Запускаемся в систем моде и ставим обработчику аттрибут _nested. Ну, и разрешаем внутри прерывание. И боле ни о чем не думаем. Никаких обработчиков на ассемблере.

А тут зато щастья привалило. Нашел полный аналог сишного jpeg на паскале. Щас разберусь в нем, а потом переведу обратно на Си. Чистый. Без ООП заморочек.
singlskv
Цитата(DpInRock @ Apr 18 2009, 05:27) *
И чего столько проблемсвложенностью образовалось?
Как оказалось все просто. Запускаемся в систем моде и ставим обработчику аттрибут _nested. Ну, и разрешаем внутри прерывание. И боле ни о чем не думаем. Никаких обработчиков на ассемблере.
Это шутка в пол шестого ?
Можно глянуть налистинг обработчиков ?
aaarrr
Не-а, не шутка. Почему это так удивляет?
singlskv
Цитата(aaarrr @ Apr 18 2009, 05:33) *
Не-а, не шутка. Почему это так удивляет?
Патаму что пол шестого и nested я читаю исключительно как naked smile.gif
Спокойной ночи...
defunct
Цитата(aaarrr @ Apr 18 2009, 04:23) *
Чтобы в нем глюков не было. Например, обнаружил такую смешную вещь: иногда при сбросе бита TE в EMAC_NCR не сбрасывается TGO в EMAC_TSR, хотя если верить документации, должен сбрасываться по любому чиху.

Не сталкивался с подобным. Годами работает и не глючит.
aaarrr
Цитата(defunct @ Apr 18 2009, 05:41) *
Не сталкивался с подобным. Годами работает и не глючит.

А TE сбрасывать приходится? Ну, может просто повезло. Однако ситуация была отловлена вполне конкретно: TGO стоит, а передачи на самом деле нет.
defunct
Цитата(aaarrr @ Apr 18 2009, 04:57) *
А TE сбрасывать приходится? Ну, может просто повезло. Однако ситуация была отловлена вполне конкретно: TGO стоит, а передачи на самом деле нет.

Приходится, но это редкое явление, хотя устройств много... уже б наверное проявилось где-то/как-то.
Вот сейчас проделал небольшой эксперимент "в лоб", после установки EMAC_TSTART вставил сл. код:
Код
    ....
    // Start frame transmission.
    pEMAC->EMAC_NCR |= AT91C_EMAC_TSTART;

    delay_cycles( rnd() & 0xFFF );

    if (pEMAC->EMAC_TSR & AT91C_EMAC_TGO)
    {
        pEMAC->EMAC_NCR &= ~AT91C_EMAC_TE;
        r++;

        if (pEMAC->EMAC_TSR & AT91C_EMAC_TGO)
            f++; // TGO still set (reset failed)
        else
            s++; // TGO=0 (reset succeed)
    }
    ....
}

Пока r == s (уже > 100K)

PS: проц из относительно старой партии - 0616.
aaarrr
Цитата(defunct @ Apr 18 2009, 06:47) *
Вот сейчас проделал небольшой эксперимент "в лоб"

Спасибо, конечно, но это уж слишком "в лоб", у меня так тоже ничего не залипает. Есть еще куча условий, которые трудно будет воспроизвести... да и выделить тоже.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.