|
Быстрый доступ в срам avr, Осц.пробник |
|
|
|
Mar 15 2007, 14:19
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(yarunt @ Mar 15 2007, 11:07)  Подключая АД9280 , быстрый ацп , столкнулся с ситуацией быстрой записи из порта в срам авра. Частота процессора 16 мег и адс. Все условия типа if,else не использую так-как занимают от 5 до 8 циклов, 67(количество колонок в дисплее) раз делаю запись из порта подключеного адс в срам ,с инкрементом.Такой доступ должен мне должен какбы обеспечить доступ в срам за 2 цикла. Тоесть полезный каждый 2-й цикл,значит 8 мгц выборки.Чтоб увидеть синусоиду на дисплее мне нужно как минимум 5 выборок , делю 8мгц на 5 выборок получаю полезных 1.6 мгц.
Но нетут-то было получается 300кгц с натягом ,подскажите может где-то я в расчетах ошибся? Проэкт не могу показать так-как в алгоритм билдере. Приму любую критику на свой счет. Ха...А из порта читаешь? Из одного? А запуск АЦП делаешь?.. А счоччик какой есть с переходом по условию? Посмотри листинг, чего там твой билдер наворотил.
|
|
|
|
|
Mar 15 2007, 14:28
|

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

|
Цитата(yarunt @ Mar 15 2007, 08:07)  Подключая АД9280 , быстрый ацп , столкнулся с ситуацией быстрой записи из порта в срам авра. Частота процессора 16 мег и адс. Все условия типа if,else не использую так-как занимают от 5 до 8 циклов, 67(количество колонок в дисплее) раз делаю запись из порта подключеного адс в срам ,с инкрементом.Такой доступ должен мне должен какбы обеспечить доступ в срам за 2 цикла. Тоесть полезный каждый 2-й цикл,значит 8 мгц выборки.Чтоб увидеть синусоиду на дисплее мне нужно как минимум 5 выборок , делю 8мгц на 5 выборок получаю полезных 1.6 мгц.
Но не тут-то было, получается 300 кГц с натягом, подскажите может где-то я в расчетах ошибся? Проект не могу показать так-как в алгоритм билдере. Приму любую критику на свой счет. Максимально возможной быстроты записи данных из АЦП во внутреннюю память можно достичь двумя командами, повторенными в вашем случае 67 раз. Код in r16,pinе st x+,r16 Занимает 3 такта на выборку. При 16 МГц это даст 5.3 Мвыборок/с. Для пробника неплохо. Быстрее нельзя, нет никакой возможности. Для синхронизации выборок подайте клоки на АЦП, тогда без труда (в смысле без затрат на синхронизацию) будете читать каждую третью выборку. Вот такое предложение, но надо забыть про билдер, си и писать на ассемблере. Не хочу разжигить религиозные войны, но си реально замедляет работу программы в 5-10 раз, что для обработки быстрых процессов неприемлемо. Кстати, идея не моя, она уже реализована, к сожалению, не могу найти ссылку, на компе порядка 300000 неразобранных файлов, уже трудно ориентироваться(:-(.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 15 2007, 14:34
|

Местный
  
Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476

|
Цитата(mse @ Mar 15 2007, 15:19)  Ха...А из порта читаешь? Из одного? А запуск АЦП делаешь?.. А счоччик какой есть с переходом по условию? Посмотри листинг, чего там твой билдер наворотил. Ну вот пример; AD_TO PIN | $200->y | 0-> threestate \\ включаем адс pine->[y++] \\ записываем с порт е в срам с инкриментом pine->[y++] \\ записываем с порт е в срам с инкриментом pine->[y++] \\ записываем с порт е в срам с инкриментом ...... и так 67 раз 1-> threestate \\ выключаем адс | SR_TO LCD \\ выводим на дисплей RET \\ назад
--------------------
|
|
|
|
|
Mar 15 2007, 14:51
|

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

|
colourStrips.bmp ( 23.24 килобайт )
Кол-во скачиваний: 73Цитата(yarunt @ Mar 15 2007, 11:34)  Ну вот пример; AD_TO PIN | $200->y | 0-> threestate \\ включаем адс pine->[y++] \\ записываем с порт е в срам с инкриментом pine->[y++] \\ записываем с порт е в срам с инкриментом pine->[y++] \\ записываем с порт е в срам с инкриментом ...... и так 67 раз 1-> threestate \\ выключаем адс | SR_TO LCD \\ выводим на дисплей RET \\ назад Ну вот, я говорил, что си замедляет в 5-10 раз, а билдер, значит, ещё больше. Вы с трудом получаете 300 кГц, по сравнению с потенциально достижимым 5333 билдер проигрывает в 17 раз. Вот, посмотрите, откопал один снапшот с тем пробником на 5333 кГц.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 15 2007, 15:02
|

Местный
  
Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476

|
Ну вот, я говорил, что си замедляет в 5-10 раз, а билдер, значит, ещё больше. Вы с трудом получаете 300 кГц, по сравнению с потенциально достижимым 5333 билдер проигрывает в 17 раз.
Вот, посмотрите, откопал один снапшот с тем пробником на 5333 кГц. [/quote] Вопрос а запись в стек быстрее ,ато мне кажется инкримент добавляет один цикл? Ну а по билдеру это тот-же ассемблер глюков своих в нем хватает.
--------------------
|
|
|
|
|
Mar 15 2007, 16:28
|

Гуру
     
Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591

|
Цитата(=GM= @ Mar 15 2007, 14:51)  Ну вот, я говорил, что си замедляет в 5-10 раз, а билдер, значит, ещё больше. Вы с трудом получаете 300 кГц, по сравнению с потенциально достижимым 5333 билдер проигрывает в 17 раз. Да не замедляет Билдер, это руки кривые замедляют, на Билдере можно писать таже как и на Асм , команда в команду. И зачем запуск АЦП делать ? Пусть себе молотит по клокам АВР. Просто читаете порт и сохраняете с постинкрементом . PINX->tmp tmp->[Y++] . . . Надо было делать на Мегах 48-88 все быстрее -20 мГц. А запись в стек теже 2 такта.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|