Работа с буферами по прерываниям в реальном времени

прием, с помощью которого можно превращать любые данные в любые другие, только неизвестно, в какие
 
1 2 3 4

AXT

инженер вольнодумец

SashaMaks> Периодически будет возникать задержка,

Если делать правильно, то не будет.

SashaMaks> пока записывается буфер, так как для его записи нужно по факту почти 8000 тактов, а у нас при равенстве интервалов времени получаемых измерений только 160 тактов максимум.

Ну и что? Лишь бы пропускной способности флешки и проца хватало.

SashaMaks>>> Другие 2МБ/с съедаются 8-битностью контроллера.
AXT>> Как это? Почему это?
SashaMaks> Потому, что адресация и вся работа с флешкартой идёт в 32-х битной среде. Это плохо почти, как деление для 8-битного контроллера.

:facepalm: Нет никакой связи в данном случае. Пишешь ты всё равно блоками байт. Вычисления адресов — это мизер на этом фоне. Оно делается раз на блок, это ничто, меньше процента времени .

SashaMaks> SashaMaks>> Запись с частотой 1600МГц даёт запись данных всех 200кГц значений АЦП с равными промежутками времени. Это абсолютно важно для записи измеренных во времени данных с равными промежутками времени.
AXT>> Не важно. Подумай, почему. Подсказка: попробуй построить контраргумент. С доказательством.
AXT>> Ещё одна подсказка: [показать]

SashaMaks> Нет там никакого чтения.

Есть. Тычитаешь выход АЦП.

SashaMaks> Идёт только запись буфера в 512 байт. Так работает FAT и флешкарта - это аппаратно заложено в неё, так как в пределах данного блока памяти эти байты не адресуются, поэтому всегда читаются или пишутся всей кучей от и до.

И поэтому надо писать сектор в 512 байт данных, а не в 2 байта данных и 510 лапши. Ну неужели так сложно это понять???

Блин ну, ещё раз: в прерываниях формируешь блок в 512 байт, когда наполнился — в фоновом процессе пишешь на карту. А пока он пишется, заполняешь ДРУГОЙ блок. Что тут непонятного?

Блин, вот ты по мобильнику на ходу разговаривать можешь? Или всегда останавливаешься, когда тебе звонят, и стоишь до конца разговора?
Так вот, это то же самое. Для разговора останавливаться не обязательно. И для записи на карту не надо останавливать оцифровку.
 13.0.782.22013.0.782.220
RU SashaMaks #18.12.2014 23:21  @SashaMaks#18.12.2014 22:58
+
-
edit
 

SashaMaks
SashaPro

аксакал

SashaMaks> Нет там никакого чтения. Идёт только запись буфера в 512 байт. Так работает FAT и флешкарта - это аппаратно заложено в неё, так как в пределах данного блока памяти эти байты не адресуются, поэтому всегда читаются или пишутся всей кучей от и до.

Чтобы правильно организовать равномерную запись данных с АЦП на 200кГц с максимальной скоростью на флешкарту, необходимо применить DMA и двойную буферизацию. Это позволит разгрузить даже 8-битный процессор ATXMega где-то на 90%. Но нет у меня желания сейчас заморачиваться с DMA ATXMega. Большая частота измерений была актуальна только для случая измерения тяги двигателя МА-60-13 (Р-60-10), у которого произошел очень скоротечный взрыв от воспламенителя. Но я более не планирую таких испытаний...

AXT

инженер вольнодумец

SashaMaks> Значит будет-таки использоваться ЦП. А при 2МБ/с он будет загружен на все 100%, как и при записи 4000Гц данных с АЦП с равными промежутками времени.

А не надо писать с равными промежутками времени. Надо читать АЦП с равными промежутками времени. А писать флешку — по заполнению буфера. Неужели это так сложно понять?
 13.0.782.22013.0.782.220
+
-
edit
 

SashaMaks
SashaPro

аксакал

AXT> Если делать правильно, то не будет.

Ты сам это делал? Знаешь, как это делается? Пока я вижу, что нет.

AXT> Ну и что? Лишь бы пропускной способности флешки и проца хватало.

Как видишь этого не хватает. Это факт.

AXT> :facepalm: Нет никакой связи в данном случае. Пишешь ты всё равно блоками байт. Вычисления адресов — это мизер на этом фоне. Оно делается раз на блок, это ничто, меньше процента времени .

1% времени при 200кГц это вообще-то очень много. Нужно не более 0,0005% времени ЦП.
Ты определенно не представляешь, как работать с чипом флешкарты. Там не так всё просто, там целый протокол общения реализуется и всё идёт в 32-х битной среде.

AXT> Есть. Тычитаешь выход АЦП.

Причём тут чтение АЦП?

AXT> И поэтому надо писать сектор в 512 байт данных, а не в 2 байта данных и 510 лапши. Ну неужели так сложно это понять???

Так он и пишется. Но нужно для этого 8000 тактов. А имеется только 160 тактов. Даже если скинуть файловую лабуду и написать свой драйвер записи прямо в сектора, то всё равно потребуется не менее 4096 тактов для записи. Быстрее быть уже просто не может.

AXT> Блин ну, ещё раз: в прерываниях формируешь блок в 512 байт, когда наполнился — в фоновом процессе пишешь на карту. А пока он пишется, заполняешь ДРУГОЙ блок. Что тут непонятного?

Это алгоритм двойной буферизации с помощью DMA. А его я писать для XMega не буду. Неактуально.
+
-
edit
 

SashaMaks
SashaPro

аксакал

AXT> А не надо писать с равными промежутками времени. Надо читать АЦП с равными промежутками времени. А писать флешку — по заполнению буфера. Неужели это так сложно понять?

Так условие равенства промежутков времени между приходящими данных с АЦП приводит к интервалу времени между ними в 160 тактов.

32000000 / 200000 = 160.

Этого слишком мало, чтобы успеть за это время только с помощью ЦП записать буфер на флешку, когда нужно от 4000 тактов до 8000 тактов.
RU SashaMaks #18.12.2014 23:32  @SashaMaks#18.12.2014 23:30
+
-
edit
 

SashaMaks
SashaPro

аксакал

SashaMaks> 32000000 / 200000 = 160.
SashaMaks> Этого слишком мало, чтобы успеть за это время только с помощью ЦП записать буфер на флешку, когда нужно от 4000 тактов до 8000 тактов.

И тут не важно, будешь ли ты этот буфер писать каждый раз после получения данных с АЦП или по его заполнению. Всё равно будет нарушаться равенство интервалов времени.

AXT

инженер вольнодумец

SashaMaks> Чтобы правильно организовать равномерную запись данных с АЦП на 200кГц с максимальной скоростью на флешкарту, необходимо применить DMA

Можно без DMA, производительности хватит и так.

SashaMaks> и двойную буферизацию.

А чего ты нам всем головы морочил, что не понимаешь, что это такое???

SashaMaks> Но нет у меня желания сейчас заморачиваться с DMA ATXMega.

Но читателей форума-то зачем дезинформировать, что не выйдет? Нехорошо так делать. Сказал бы сразу, что тебе лень делать по-нормальному, все бы поняли.
 13.0.782.22013.0.782.220
+
-
edit
 

SashaMaks
SashaPro

аксакал

AXT> Можно без DMA, производительности хватит и так.

Хватит, но будет не точно записывать данные по времени.

AXT> А чего ты нам всем головы морочил, что не понимаешь, что это такое???
AXT> Но читателей форума-то зачем дезинформировать, что не выйдет? Нехорошо так делать. Сказал бы сразу, что тебе лень делать по-нормальному, все бы поняли.

Это ты не читаешь, что я пишу, причём сразу:

Топлива на нитрате натрия. [SashaMaks#17.12.14 15:13]

… Так не получится. Не хватает именно ресурсов процессора, чтобы так быстро записывать информацию. Идеально было бы применить DMA, но для XMega я пока не умею этого делать, да и не хочу. Можно было бы попробовать переписать драйвер записи данных на флеш носитель под себя и даже закрутить от него алгоритм работы всей программы, но это долго и много кода нужно переворотить, что тоже неохота делать. Пока оценил лишь возможности записи на флешку от XMega, тянет примерно на 4МБайта/сек, что…// Ракетомодельный
 


Вбили себе в головы какую-то ерунду на мой счёт, и доказываете её до потери пульса тут.
RU SashaMaks #18.12.2014 23:42  @SashaMaks#18.12.2014 23:32
+
-
edit
 

SashaMaks
SashaPro

аксакал

SashaMaks> И тут не важно, будешь ли ты этот буфер писать каждый раз после получения данных с АЦП или по его заполнению. Всё равно будет нарушаться равенство интервалов времени.

Ай нет. В случае постоянной записи, после каждого измерения с АЦП условие равенства промежутков времени выполняется, но существенно падает частота записи данных.

AXT

инженер вольнодумец

AXT>> Если делать правильно, то не будет.
SashaMaks> Ты сам это делал? Знаешь, как это делается? Пока я вижу, что нет.

Плохо видишь. Делал. И как раз FAT. И работало.

AXT>> Ну и что? Лишь бы пропускной способности флешки и проца хватало.
SashaMaks> Как видишь этого не хватает. Это факт.

Всем хватает, тебе не хватает. Может, подумаешь, почему?

SashaMaks> Ты определенно не представляешь, как работать с чипом флешкарты. Там не так всё просто, там целый протокол общения реализуется и всё идёт в 32-х битной среде.

Я писал код для работы с флеш-картой. И именно поэтому утверждаю, что ты несёшь бред. У всех карт, которые я занаю, 8-битовый протокол, кроме CompactFlash.

AXT>> Есть. Тычитаешь выход АЦП.
SashaMaks> Причём тут чтение АЦП?

То есть, ты не читаешь выход АЦП, а пишешь данные от балды? Я правильно понял? Тогда к чему это всё вообще? Я тебя уже совсем не понимаю.

AXT>> И поэтому надо писать сектор в 512 байт данных, а не в 2 байта данных и 510 лапши. Ну неужели так сложно это понять???
SashaMaks> Так он и пишется. Но нужно для этого 8000 тактов.

8000 тактов на что? на запись сектора?

SashaMaks> А имеется только 160 тактов.

На получение 512 байт данных? А как это тебе удаётся?

SashaMaks> Быстрее быть уже просто не может.

Ещё как может.

AXT>> Блин ну, ещё раз: в прерываниях формируешь блок в 512 байт, когда наполнился — в фоновом процессе пишешь на карту. А пока он пишется, заполняешь ДРУГОЙ блок. Что тут непонятного?
SashaMaks> Это алгоритм двойной буферизации с помощью DMA. А его я писать для XMega не буду. Неактуально.

Да причём тут DMA??? Причём???? Ты не можешь вызовом файловой системы 512 байт записать??? Только по два ???

Короче, код в студию. У тебя там явно сильные косяки.

PS: (подумалось) а ты точно знаешь, что такое прерывание? У меня такое ощущение появляется, что нет.
 13.0.782.22013.0.782.220

AXT

инженер вольнодумец

AXT>> Можно без DMA, производительности хватит и так.
SashaMaks> Хватит, но будет не точно записывать данные по времени.

Что такое "не точно записывать данные по времени"? У тебя есть поток данных, если ты не теряешь ни одного отсчёта при записи, то какая тут может быть неточность?

SashaMaks> Это ты не читаешь, что я пишу, причём сразу:

Я читаю. И вижу, что ты выдаёшь что-то в корне не совместимое с моим опытом разработки систем реального времени.
 13.0.782.22013.0.782.220
RU SashaMaks #18.12.2014 23:51  @SashaMaks#18.12.2014 23:42
+
-
edit
 

SashaMaks
SashaPro

аксакал

SashaMaks> Ай нет. В случае постоянной записи, после каждого измерения с АЦП условие равенства промежутков времени выполняется, но существенно падает частота записи данных.

Поэтому проще откатить до старого алгоритма записи с оверсэмплингом. Хотя, возможно повысить частоту данных с 100Гц до 1000Гц. Но нужно считать. Например, погрешность которую вносит запись данных на флешку по времени составляет 8000 / 32000000 = 0,00025с, что меньше 0,001с при частоте в 1000Гц. Т.е. больше 1000Гц делать бессмысленно.
+
-
edit
 

SashaMaks
SashaPro

аксакал

AXT> Что такое "не точно записывать данные по времени"? У тебя есть поток данных, если ты не теряешь ни одного отсчёта при записи, то какая тут может быть неточность?

Важно не просто не потерять значения, важно их получать с известным периодом. Короче говоря, нужно знать, сколько секунд проходит между измерениями, иначе грош-цена такому огромному количеству измерений, полученных неизвестно когда.
+
-
edit
 

SashaMaks
SashaPro

аксакал

AXT> Плохо видишь. Делал. И как раз FAT. И работало.

График в студию.

AXT> Всем хватает, тебе не хватает. Может, подумаешь, почему?

Не хочу. Ты голословен в своих доводах пока. Тут и думать не о чем. См. выше.

AXT> Я писал код для работы с флеш-картой. И именно поэтому утверждаю, что ты несёшь бред. У всех карт, которые я занаю, 8-битовый протокол, кроме CompactFlash.

А у меня именно CompactFlash. И там всё 32-х битное. И по мне, так ты несёшь полный бред.

AXT> То есть, ты не читаешь выход АЦП, а пишешь данные от балды? Я правильно понял? Тогда к чему это всё вообще? Я тебя уже совсем не понимаю.

Нет - это уже твоя манипуляция, нацеленная на уничижения меня. Заодно прекрасно видно, какую дурь ты себе вбил в голову и пытаешься доказать до потери пульса. Я ссылочку сохраню, а то тут не верят этому. Типа мне всё кажется.

AXT> 8000 тактов на что? на запись сектора?

Да.

SashaMaks>> А имеется только 160 тактов.
AXT> На получение 512 байт данных? А как это тебе удаётся?

Никак, я об этом и говорю, что это невозможно. Это тебе как-то удаётся делать. И я не представляю как.

AXT> Ещё как может.

Не в этом мире.
Чтобы только непосредственно адресовать на запись или чтение 512 байт по ISP нужно 512 байт * 8 бит = 4096 тактов.

AXT> Да причём тут DMA??? Причём???? Ты не можешь вызовом файловой системы 512 байт записать??? Только по два ???

Нет, не могу. Это не возможно на аппаратном уровне.

AXT> Короче, код в студию. У тебя там явно сильные косяки.

У меня косяков нет. У тебя есть, а скорее и вообще никакого кода нет. Это была плохая попытка вытащить его у меня.

AXT> PS: (подумалось) а ты точно знаешь, что такое прерывание? У меня такое ощущение появляется, что нет.

Да думай чего хочешь, твоё право. Только я тебя не порадую в будущем своим софтом.
RU SashaMaks #19.12.2014 00:15  @SashaMaks#19.12.2014 00:02
+
-
edit
 

SashaMaks
SashaPro

аксакал

SashaMaks> А у меня именно CompactFlash. И там всё 32-х битное. И по мне, так ты несёшь полный бред.

Упс. Вот эта карта используется мной:

Secure Digital — Википедия

Secure Digital Memory Card (SD) — формат карт памяти, разработанный для использования в основном в портативных устройствах. На сегодняшний день широко используется в цифровых фотоаппаратах и видеокамерах, мобильных телефонах, КПК, коммуникаторах и смартфонах, электронных книгах, GPS-навигаторах и в некоторых игровых приставках. Существуют четыре поколения карт памяти данного формата (совместимы сверху вниз): Формат был разработан в 1999 году фирмами Panasonic, SanDisk и Toshiba на основе MMC-карты. В 2000 году на CES компаниями Matsushita, SanDisk и Toshiba было объявлено о создании SD Card Association. // Дальше — ru.wikipedia.org
 
+
-
edit
 

SashaMaks
SashaPro

аксакал

AXT> У всех карт, которые я занаю, 8-битовый протокол, кроме CompactFlash.

Протокол и работа с памятью за это разные устройства отвечают. Работа с флеш картой не заканчивается работой с протоколом ISP, в ней ещё банк данных есть - память, причём очень большая, а в ней файловая система:

FAT32 — Википедия

Microsoft FAT32 Август 1996 (Windows 95 OSR2) Таблица Линейный список Тегирование кластера 4 GiB - 1 байт 8.3 или 255 символов при использовании LFN 2 TiB 8 TiB (2 Кб на сектор) 1 января 1980 — 31 декабря 2107 2 с Нет Нет Нет Нет FAT32 (от англ. File Allocation Table — «таблица размещения файлов») — это файловая система, разработанная компанией Microsoft, разновидность FAT. FAT32 — последняя версия файловой системы FAT и улучшение предыдущей версии, известной как FAT16. Она была создана, чтобы преодолеть ограничения на размер тома в FAT16, позволяя при этом использовать старый код программ MS-DOS и сохранив формат. // Дальше — ru.wikipedia.org
 
+
+3
-
edit
 

AXT

инженер вольнодумец

SashaMaks> График в студию.

График чего? Зависимости частоты рождений котят от фазы Луны?

AXT>> Всем хватает, тебе не хватает. Может, подумаешь, почему?
SashaMaks> Не хочу. Ты голословен в своих доводах пока. Тут и думать не о чем. См. выше.

Как и ты. Но ты начал утвержадть первым — вот на тебе и лежит бремя доказательства.

SashaMaks> А у меня именно CompactFlash.

Предупреждать же надо.

SashaMaks>И там всё 32-х битное.

:lol: В ней вообще нет ничего 32-битного. Шина данных — 16 бит, адресация — 48 бит. Документацию надо читать :)

AXT>> То есть, ты не читаешь выход АЦП, а пишешь данные от балды? Я правильно понял? Тогда к чему это всё вообще? Я тебя уже совсем не понимаю.
SashaMaks> Нет - это уже твоя манипуляция, нацеленная на уничижения меня.

Да нафиг ты мне сдался? Я просто не люблю, когда мозги людям забивают чушью. Историю про заливку сеточкой я вроде уже рассказывал?

SashaMaks>Заодно прекрасно видно, какую дурь ты себе вбил в голову и пытаешься доказать до потери пульса. Я ссылочку сохраню, а то тут не верят этому. Типа мне всё кажется.


AXT>> 8000 тактов на что? на запись сектора?
SashaMaks> Да.

То есть, округляя, 15 тактов на байт при максимально возможной скорости. Так чего напрягаться? при нормальном обработчике прерывания можно сидеть и курить бамбук, времени до фига для программной обработки.

SashaMaks> SashaMaks>> А имеется только 160 тактов.
AXT>> На получение 512 байт данных? А как это тебе удаётся?
SashaMaks> Никак, я об этом и говорю, что это невозможно. Это тебе как-то удаётся делать. И я не представляю как.

Потому, что ты упорно не хочешь понимать, что надо сначала полностью, до упора, забивать данными 512-байтовый блок, и только потом его писать. А в это время собирать данные для второго блока.

SashaMaks> Чтобы только непосредственно адресовать на запись или чтение 512 байт по ISP нужно 512 байт * 8 бит = 4096 тактов.

Стоп, а фига каждый байт адресовать? Блин, сейчас перечитаю доку мо XMega, неужели там такой ужас? Не помню ...

AXT>> Короче, код в студию. У тебя там явно сильные косяки.
SashaMaks> У меня косяков нет. У тебя есть, а скорее и вообще никакого кода нет. Это была плохая попытка вытащить его у меня.

Шеогорат великий, да возрадуйся! Этот человек воображает, что я хочу украсть его код!
 13.0.782.22013.0.782.220
19.12.2014 12:39, varban: +1: > Шеогорат великий, да возрадуйся! Этот человек воображает, что я хочу украсть его код!

:) :D :)

+
-
edit
 

SashaMaks
SashaPro

аксакал

AXT> График чего? Зависимости частоты рождений котят от фазы Луны?

Да какого-нибудь измерения. Всё вроде только об этом речь.

AXT> Как и ты. Но ты начал утвержадть первым — вот на тебе и лежит бремя доказательства.

Чего я могу тебе доказать. Я сейчас на тебя убил целый вечер. Ничего не сделал. А ты всё время так проводишь. Какой мне смысл вообще тебе чего-то доказывать. Пришёл сюда с политических форумов просто трепаться. На предложения о том, чтобы что-то предоставить 0. Ты форумом не ошибся?

AXT> :lol: В ней вообще нет ничего 32-битного. Шина данных — 16 бит, адресация — 48 бит. Документацию надо читать :)

Ты не задумывался над тем, что я сказал и рассказываю не о своём коде драйвера. Хотя ты не перед кем не остановишься. Там тоже, видимо, люди чушью занимаются.

AXT> Я просто не люблю, когда мозги людям забивают чушью.

Иди в политические форумы отстаивать справедливость.

AXT> при нормальном обработчике прерывания можно сидеть и курить бамбук, времени до фига для программной обработки.

"Нормальный обработчик" Очень содержательно.

AXT> Потому, что ты упорно не хочешь понимать, что надо сначала полностью, до упора, забивать данными 512-байтовый блок, и только потом его писать. А в это время собирать данные для второго блока.

А ты не понимаешь, что это делает проц, когда его пишет. И за 160 тактов он никогда не успеет слить буфер в 512 байт на флешку, а следующему значению с АЦП придётся ждать, пока проц освободится. Но у тебя своя реальность.

AXT> Стоп, а фига каждый байт адресовать? Блин, сейчас перечитаю доку мо XMega, неужели там такой ужас? Не помню ...

Давай, давай. Сейчас ещё будет экшен. Смотрю код и не перестаю удивляться твоё наивной самоуверенности в своей правоте. Ты не в мой адрес сейчас срач пишешь!

AXT> Шеогорат великий, да возрадуйся! Этот человек воображает, что я хочу украсть его код!

А чего тогда просишь?
Отстань от меня!
У тебя всё лучше работает, только это всё великая тайна :D

AXT

инженер вольнодумец

AXT>> График чего? Зависимости частоты рождений котят от фазы Луны?
SashaMaks> Да какого-нибудь измерения. Всё вроде только об этом речь.

"Иди туда, не знаю куда, принеси то, не знаю что" :(

AXT>> Как и ты. Но ты начал утвержадть первым — вот на тебе и лежит бремя доказательства.
SashaMaks> Чего я могу тебе доказать.

Естественно, нечего не можешь. Потому как доказательств нет.

SashaMaks> Я сейчас на тебя убил целый вечер. Ничего не сделал.

Я тоже почти ничяего не сделал, а собирался над 2D рендером поработать, в своём личном проекте.
SashaMaks> А ты всё время так проводишь.

Врать нехорошо.

SashaMaks> Пришёл сюда с политических форумов просто трепаться.

Посмотрел бы ты мою статистику постов за всю историю, что ли. А не за последние дни. Тогда, может, и перестал бы гнать насчёт того, откуда я пришёл.

SashaMaks> Ты не задумывался над тем, что я сказал и рассказываю не о своём коде драйвера.

Нет, ты рассказываешь о своих методах записи информации на карту. Ну вот нафига ты прогаживаешь 99.6% ёмкости карты и пропускной способности интерфейса, а потом жалуешься, что не хватает?

SashaMaks> Хотя ты не перед кем не остановишься. Там тоже, видимо, люди чушью занимаются.

"Там" — это где?

AXT>> Я просто не люблю, когда мозги людям забивают чушью.
SashaMaks> Иди в политические форумы отстаивать справедливость.

Сам иди. А в технических отстаивают точное знание. Математика, знаешь ли, точная наука.

AXT>> при нормальном обработчике прерывания можно сидеть и курить бамбук, времени до фига для программной обработки.
SashaMaks> "Нормальный обработчик" Очень содержательно.

Содержательней:
code c
  1. adc_interrupt_handler()
  2. {
  3.   buffer[(bufer_offset++) & buffer_size_mask] = hardware_register;
  4. }


Вот и весь обработчик.

SashaMaks> А ты не понимаешь, что это делает проц, когда его пишет. И за 160 тактов он никогда не успеет слить буфер в 512 байт на флешку,

Почему же? Я прекрасно это понимаю, и пару сообщений назад написал об этом. Но ты не понял или не заотел понят, что я сказал.

SashaMaks> а следующему значению с АЦП придётся ждать, пока проц освободится. Но у тебя своя реальность.

Не придётся. Потому что следующее значение будет обработано независимо и записано в другой буфер. И у меня более правильная реальность.

AXT>> Стоп, а фига каждый байт адресовать? Блин, сейчас перечитаю доку мо XMega, неужели там такой ужас? Не помню ...
SashaMaks> Давай, давай. Сейчас ещё будет экшен. Смотрю код и не перестаю удивляться твоё наивной самоуверенности в своей правоте. Ты не в мой адрес сейчас срач пишешь!

Прочитал. Уф, реальность всё та же. Никаких таких ужасов нет.

AXT>> Шеогорат великий, да возрадуйся! Этот человек воображает, что я хочу украсть его код!
SashaMaks> А чего тогда просишь?

Да просто уже интересно, как так можно накосячить :P

PS: Товарищи модераторы, перенесите этот буфферосрач куда-нибудь пожалуйста, в теме про топлива он явно ни к чему. Начиная отсюда Топлива на нитрате натрия. [AXT#17.12.14 12:29]
 13.0.782.22013.0.782.220
+
-
edit
 

SashaMaks
SashaPro

аксакал

AXT> "Иди туда, не знаю куда, принеси то, не знаю что" :(

График данных с АЦП по времени.

AXT> Ну вот нафига ты прогаживаешь 99.6% ёмкости карты и пропускной способности интерфейса, а потом жалуешься, что не хватает?

Это не я прожигаю, это драйвер.

AXT> Сам иди. А в технических отстаивают точное знание. Математика, знаешь ли, точная наука.

Ничего ты не отстоял. Одна строка ничего не доказывает. Я не вижу результата работы этого супер короткого алгоритма работы с флешкой.

AXT> Почему же? Я прекрасно это понимаю, и пару сообщений назад написал об этом. Но ты не понял или не заотел понят, что я сказал.

Та не имеешь представления о точности записи данных по времени. Тебе всё равно будет там между замерами с АЦП 160 тактов или 300 или 1000. О чем может быть дальше речь.
На этом уже всё понятно стало.
+
-
edit
 

SashaMaks
SashaPro

аксакал

AXT> Вот и весь обработчик.

Да там же вообще нет никакой записи на флешку. Оперативная память она, однако, не бесконечная и с частотой 200кГц закончится быстрей, чем за 1с.

Пока ничего нового не увидел.

AXT

инженер вольнодумец

SashaMaks> График данных с АЦП по времени.

График чего? Амплитудных значений? Моментов получения значений? Джиттера? Чего?

AXT>> Ну вот нафига ты прогаживаешь 99.6% ёмкости карты и пропускной способности интерфейса, а потом жалуешься, что не хватает?
SashaMaks> Это не я прожигаю, это драйвер.

Ты, ты. Именно ты. Потому что не хочешь организовать обработку данных нормальным образом, разделив процессы получения данных от АЦП и записи их на карту. А для максимальной производительности они должны быть независимыми.

SashaMaks> Ничего ты не отстоял. Одна строка ничего не доказывает. Я не вижу результата работы этого супер короткого алгоритма работы с флешкой.

Это не алгоритм работы с флешкой. Это код обработчика прерывания, читающий ADC. Работать с флешкой в нём нельзя. Иначе будет безбожно тормозить, как у тебя.

SashaMaks> Та не имеешь представления о точности записи данных по времени.

Я как раз имею. В случае записи на флеш с постоянной скорость понятия "точность записи" не существует. Сущестыует понятие "потеря отсчётов". Или ты думмаешь, что флешка — она, как магнитофонная лента что ли?

SashaMaks> Тебе всё равно будет там между замерами с АЦП 160 тактов или 300 или 1000.

Нет. Напротив, я описываю вариант, в котором между отсчётами всегда будет одинаковый интервал. Гарантированно. И при этом не будет тратиться 99% тактов процессора на верчение в мёртвом цикле.

SashaMaks> О чем может быть дальше речь.

Да, уже стало ясно, что ты не знаешь, что такое прерывание, и как ими правильнопользоваться, про асинхронную обработку потока данных тоже ... Правильно тебе Xan сказал, читай книжки по теме.

SashaMaks> На этом уже всё понятно стало.

... что ты даже не пытаешься меня выслушать и понять. Я ведь реально хотел помочь, для того код и просил.

Ну как хочешь. Твои проблемы.
 13.0.782.22013.0.782.220

varban

администратор
★★★
AXT> PS: Товарищи модераторы, перенесите этот буфферосрач куда-нибудь пожалуйста, в теме про топлива он явно ни к чему. Начиная отсюда Топлива на нитрате натрия. [AXT#17.12.14 12:29]

Угу, только доберусь до компа.
 39.0.2171.9339.0.2171.93
+
-
edit
 

SashaMaks
SashaPro

аксакал

AXT> Это не алгоритм работы с флешкой. Это код обработчика прерывания, читающий ADC. Работать с флешкой в нём нельзя. Иначе будет безбожно тормозить, как у тебя.

Ты предлагаешь прервать запись на флешку? А это делать-то можно?
+
0 (+1/-1)
-
edit
 

AXT

инженер вольнодумец

SashaMaks> Ты предлагаешь прервать запись на флешку? А это делать-то можно?

Зависит от типа. Между блоков можно у всех. Внутри блока — есть варианты:

MMC — можно хоть на полгода.
SD — нельзя.
SD в режиме совместимости с MMC — опять можно.
CF — в режиме совместимости с IDE — можно.
CF в родном — не помню.

В любом случае, пока ты можешь кидать данные быстрее записи — будут грабли, медленне и блоками — счастье есть.
А ты кидаешь в 256 раз больше, чем реально надо.
 13.0.782.22013.0.782.220
1 2 3 4

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru