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

 
 
 
Reply to this topicStart new topic
> Быстодействие ATmega8515
vts
сообщение Oct 29 2010, 10:18
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 19-01-10
Из: Ярославль
Пользователь №: 54 915



Подскажите пожалуйста в чем ошибка.
Хотел проверить с какой максимальной скоростью ATmega8515 может переключать сигнал на ногах. Написал
__C_task void main(void)
{DDRA=0xff;
while(1)
{PORTA=0xff;
PORTA =0x00;
}
__watchdog_reset;
}
На кварце 11059,2 кГц переключение идет с частотой всего 1,8 МГц, причем со скваженностью 2.
Я что-то неправльно настроил или это потолок быстродействия микросхемы.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 29 2010, 10:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(vts @ Oct 29 2010, 14:18) *
На кварце 11059,2 кГц переключение идет с частотой всего 1,8 МГц, причем со скваженностью 2.
Я что-то неправльно настроил или это потолок быстродействия микросхемы.
Чему Вы удивляетесь? Считаем: 11.059/1.8=примерно 6. Т.е. ваш цикл выполняется за 6 тактов (в ассемблере: ldi - 1 такт, out - 1 такт и эти две команды присутствуют в цикле дважды: вывод нуля и единиц, ещё команда jmp - 2 такта). Всё - совпадает.
Go to the top of the page
 
+Quote Post
vts
сообщение Oct 29 2010, 11:18
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 19-01-10
Из: Ярославль
Пользователь №: 54 915



Спасибо. Происхождение такого вопроса возникло из-за того что есть необходимость считывать 3 двухканальных 14-разрядных АЦП в последовательном коде с частотой не менее 200 кГц. Для этих целей решили использовать ATXmega126A1 настроенную на работу на частоте 32 МГц, но оказалось что она может вот также перебирать ногами с частотой 2,5 МГц. Причем при добавлении любой команды скорость считывания падает чрезвычайно быстро. Это тоже для этой микросхемы правильно или в этом случае мы уже мудрим?
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Oct 29 2010, 11:22
Сообщение #4


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(vts @ Oct 29 2010, 14:18) *
Спасибо. Происхождение такого вопроса возникло из-за того что есть необходимость считывать 3 двухканальных 14-разрядных АЦП в последовательном коде ...


А что за интерфейс у АЦП? Если SPI то проблем не должно быть (SPI в мегах может работать на частотах вплоть до Fosc/2).
Может стоит поискать АЦП с соответствующим интерфейсом.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 29 2010, 13:10
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(vts @ Oct 29 2010, 15:18) *
есть необходимость считывать 3 двухканальных 14-разрядных АЦП в последовательном коде с частотой не менее 200 кГц. Для этих целей решили использовать ATXmega126A1 настроенную на работу на частоте 32 МГц
Т.е. Вам необходимо забрать с АЦП 1.2 млн измерений в секунду. Чтобы забрать одно измерение МК отводится 32/1.2=26 тактов. Забрать по последовательному интерфейсу 14 (а, может быть - 16) бит - уже проблематично. А ещё, наверное, результаты измерения нужно как-то обработать - тут уж совсем ресурсов не остаётся...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Oct 30 2010, 22:59
Сообщение #6


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(vts @ Oct 29 2010, 10:18) *
есть необходимость считывать 3 двухканальных 14-разрядных АЦП в последовательном коде с частотой не менее 200 кГц. Для этих целей решили использовать ATXmega126A1 настроенную на работу на частоте 32 МГц, но оказалось что она может вот также перебирать ногами с частотой 2,5 МГц. Это тоже для этой микросхемы правильно или в этом случае мы уже мудрим?

Многое зависит от того, что вам на самом деле нужно, и как организовано чтение, чтобы не задохнуться от потока информации. В вашем случае скорость чтения равна 1.2 Мбит/с, ее можно довести до 85 Мбит/с или кратковременно до 250 мбит/с.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
vts
сообщение Nov 1 2010, 17:20
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 19-01-10
Из: Ярославль
Пользователь №: 54 915



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

Можно привести какие-нибудь рекомендации по организации и настройке микропроцессора и периферии, лучше с примером кода, для достижения таких скоростей. Заранее благодарен.

Сообщение отредактировал vts - Nov 1 2010, 17:22
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Nov 1 2010, 17:28
Сообщение #8


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



имхо человек пошутил про 250 Мбит/с ..да и про 85 Мбит/с тоже.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
=GM=
сообщение Nov 1 2010, 22:41
Сообщение #9


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Какое пошутил? Вы думаете мне легко копытом по клаве стучать :-)?

Ну, шутки в сторону, предположим, все 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, задачка на факультатив :-). Если не сможете решить, я покажу.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 1 2010, 23:06
Сообщение #10


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(=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 читал


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
=GM=
сообщение Nov 2 2010, 09:41
Сообщение #11


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Спасибо, поправил. Рука пронесла :-).


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 23:51
Рейтинг@Mail.ru


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