Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Быстодействие ATmega8515
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
vts
Подскажите пожалуйста в чем ошибка.
Хотел проверить с какой максимальной скоростью ATmega8515 может переключать сигнал на ногах. Написал
__C_task void main(void)
{DDRA=0xff;
while(1)
{PORTA=0xff;
PORTA =0x00;
}
__watchdog_reset;
}
На кварце 11059,2 кГц переключение идет с частотой всего 1,8 МГц, причем со скваженностью 2.
Я что-то неправльно настроил или это потолок быстродействия микросхемы.
Палыч
Цитата(vts @ Oct 29 2010, 14:18) *
На кварце 11059,2 кГц переключение идет с частотой всего 1,8 МГц, причем со скваженностью 2.
Я что-то неправльно настроил или это потолок быстродействия микросхемы.
Чему Вы удивляетесь? Считаем: 11.059/1.8=примерно 6. Т.е. ваш цикл выполняется за 6 тактов (в ассемблере: ldi - 1 такт, out - 1 такт и эти две команды присутствуют в цикле дважды: вывод нуля и единиц, ещё команда jmp - 2 такта). Всё - совпадает.
vts
Спасибо. Происхождение такого вопроса возникло из-за того что есть необходимость считывать 3 двухканальных 14-разрядных АЦП в последовательном коде с частотой не менее 200 кГц. Для этих целей решили использовать ATXmega126A1 настроенную на работу на частоте 32 МГц, но оказалось что она может вот также перебирать ногами с частотой 2,5 МГц. Причем при добавлении любой команды скорость считывания падает чрезвычайно быстро. Это тоже для этой микросхемы правильно или в этом случае мы уже мудрим?
mempfis_
Цитата(vts @ Oct 29 2010, 14:18) *
Спасибо. Происхождение такого вопроса возникло из-за того что есть необходимость считывать 3 двухканальных 14-разрядных АЦП в последовательном коде ...


А что за интерфейс у АЦП? Если SPI то проблем не должно быть (SPI в мегах может работать на частотах вплоть до Fosc/2).
Может стоит поискать АЦП с соответствующим интерфейсом.
Палыч
Цитата(vts @ Oct 29 2010, 15:18) *
есть необходимость считывать 3 двухканальных 14-разрядных АЦП в последовательном коде с частотой не менее 200 кГц. Для этих целей решили использовать ATXmega126A1 настроенную на работу на частоте 32 МГц
Т.е. Вам необходимо забрать с АЦП 1.2 млн измерений в секунду. Чтобы забрать одно измерение МК отводится 32/1.2=26 тактов. Забрать по последовательному интерфейсу 14 (а, может быть - 16) бит - уже проблематично. А ещё, наверное, результаты измерения нужно как-то обработать - тут уж совсем ресурсов не остаётся...
=GM=
Цитата(vts @ Oct 29 2010, 10:18) *
есть необходимость считывать 3 двухканальных 14-разрядных АЦП в последовательном коде с частотой не менее 200 кГц. Для этих целей решили использовать ATXmega126A1 настроенную на работу на частоте 32 МГц, но оказалось что она может вот также перебирать ногами с частотой 2,5 МГц. Это тоже для этой микросхемы правильно или в этом случае мы уже мудрим?

Многое зависит от того, что вам на самом деле нужно, и как организовано чтение, чтобы не задохнуться от потока информации. В вашем случае скорость чтения равна 1.2 Мбит/с, ее можно довести до 85 Мбит/с или кратковременно до 250 мбит/с.
vts
Цитата(=GM= @ Oct 31 2010, 01:59) *
Многое зависит от того, что вам на самом деле нужно, и как организовано чтение, чтобы не задохнуться от потока информации. В вашем случае скорость чтения равна 1.2 Мбит/с, ее можно довести до 85 Мбит/с или кратковременно до 250 мбит/с.

Можно привести какие-нибудь рекомендации по организации и настройке микропроцессора и периферии, лучше с примером кода, для достижения таких скоростей. Заранее благодарен.
Lmx2315
имхо человек пошутил про 250 Мбит/с ..да и про 85 Мбит/с тоже.
=GM=
Какое пошутил? Вы думаете мне легко копытом по клаве стучать :-)?

Ну, шутки в сторону, предположим, все 6 каналов подключены к порту d. Прочитать за раз один бит всех 6 каналов (максимум 8) можно с помощью примитивной программы

in tmp,pind
st z+,tmp
in tmp,pind
st z+,tmp
in tmp,pind
st z+,tmp
... и т.д.

На выборку битов от 6(8) каналов потребуется 3 такта. Итого, 8*(32 МГц/3) = 85.3 Мбит/с максимум. Похоже делается и 250Мбит/с, программа ещё примитивнее. Это вам, lmx2315, задачка на факультатив :-). Если не сможете решить, я покажу.
ILYAUL
Цитата(=GM= @ Nov 2 2010, 01:41) *
Какое пошутил? Вы думаете мне легко копытом по клаве стучать :-)?

Ну, шутки в сторону, предположим, все 6 каналов подключены к порту d. Прочитать за раз один бит всех 6 каналов (максимум 8) можно с помощью примитивной программы

in tmp,portd
st z+,tmp
in tmp,portd
st z+,tmp
in tmp,portd
st z+,tmp
... и т.д.

На выборку битов от 6(8) каналов потребуется 3 такта. Итого, 8*(32 МГц/3) = 85.3 Мбит/с максимум. Похоже делается и 250Мбит/с, программа ещё примитивнее. Это вам, lmx2315, задачка на факультатив :-). Если не сможете, я покажу.

Только я бы все таки PIND читал
=GM=
Спасибо, поправил. Рука пронесла :-).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.