осциллограф
|
|
bulat | Дата: Суббота, 22.04.2017, 19:30 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| собираю осциллограф для себя,большая частота особо не нужна-до 500 кгц мне достаточно пока входная часть собрана на AD9820(ацп),атмега32 управляет всем процессом,индикатор заказал(и получил) 480*320 точек на контроллере ILI9481(библиотеку для него не нашел,пришлось переделывать от ili9125,делал инициализацию,очистка/закрашивание экрана и вывод пикселя) пока все работает,но зашел в тупик-как опрашивать порт со строгой дискретностью? за 3 такта нашел на этом же форуме ,мне надо за 4,16,32 и тд тактов ниже программа(довольно большая)
|
|
| |
bulat | Дата: Суббота, 22.04.2017, 20:24 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| Нашел в ассемблере функцию nop,включил в опрос порта к которому подключен ацп,теперь опрос ровно 4 такта (0,25 мксек) read4: $asm IN R16, PIND NOP STS {osc(1)}, R16 IN R16, PIND NOP STS {osc(2)}, R16 IN R16, PIND NOP STS {osc(3)}, R16 IN R16, PIND NOP STS {osc(4)}, R16 .................... теперь осталось сделать в остальные интервалы времени...
|
|
| |
virus-error | Дата: Понедельник, 24.04.2017, 22:00 | Сообщение # 3 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| приветствую тоже интересует осциллограф , хочется замутить только для компа , я понимаю что за 4,16,32 такта микрокантроллера , извиняюсь за вопрос может лучше организовать с помощью таймера
|
|
| |
bulat | Дата: Вторник, 25.04.2017, 12:59 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| я пробовал таймером,уже многое дошло что и как,выкладывать не стал-активность темы никакая потому и решил что это никому не надо уже обогнал DSO138,сигнал 50 кгц видно четко (в DSO его уже не видать),но до хамелеона еще далеко есть еще карманный осциллограф с радиокота версии 2 (на стм32ф103) но я его так и не смог толком настроить вопросов еще море...
|
|
| |
bulat | Дата: Вторник, 25.04.2017, 13:08 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| вот фото на скорую руку
|
|
| |
pchela5 | Дата: Вторник, 25.04.2017, 13:36 | Сообщение # 6 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| Камрад, выложи схему - это раз. Второе замечание - ты неправильно организовал цикл записи в подпрограмме.
1. Указываем жестко размещение массива в ОЗУ и его размер сделать лучше кратным 2-ке dim osc(1024) as byte At &H100 - теперь твои данные располагаются по этому адресу - и длятся до &H4FF dim osc_clear(512) as byte At &H500 - здесь второй массив располагается до адреса &H6FF
2. В подпрограмме надо выставить указатель - регистровую пару Х на начало твоего массива
push xl - сохраняем стек, хотя баском сует в стек все - наверное можно и не делать это push xh ldi xh, 1 - ставим указатель на начало данных ldi xl, 0
и потом в цикле записывать данные в озу:
loop: IN R16, PINd - считываем порт ST X+, R16 - пишем в озу и увеличиваем указатель на 1 CPI XH, $05 - проверяем если старший регистр больше конца массива то прыгаем на выход иначе BRLO LOOP - перейти на начало цикла NOP - продолжение
pop xh pop xl - вынимаем из стека
С временными задержками более 8 тактов ситуация аналогичная - вставляешь переменную, предварительно присвоив ей значение, и организуешь цикл.
Сообщение отредактировал pchela5 - Вторник, 25.04.2017, 15:20 |
|
| |
bulat | Дата: Вторник, 25.04.2017, 14:36 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| Схема насчет асм-я в нем не разбираюсь,просто стырил (ссылка в 1 посте),огромное вам спасибо!
Сообщение отредактировал bulat - Вторник, 25.04.2017, 14:40 |
|
| |
pchela5 | Дата: Вторник, 25.04.2017, 14:41 | Сообщение # 8 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| Длина данного цикла - 6 тактов, поэтому для 16 МГц не прокатит. Если нужна именно такая задержка - 0,25 - то кварц ставим 24 МГц - при питании от 5 вольт проблем нет. У меня мега работает при внешнем тактировании на 25 МГц при питании 3,3 вольта.
0.5 мкс - 12 тактов при 24 МГц
loop: LDI R16, 2 - загружаем двоечку в порт - 1 такт loop1: DEC R16 - вычитаем - 1 такт
BRNE loop1: если не равно 0 то прыгаем назад - 2 такта, иначе 1 такт - итого тикнуло 6 тактов - выполняем дальше программу IN R16, PINd - считываем порт - 1 такт ST X+, R16 - пишем в озу и увеличиваем указатель на 1 - 2 такта CPI XH, $05 - проверяем если старший регистр больше конца массива то прыгаем на выход иначе - 1 такт BRLO LOOP - перейти на начало цикла - 2 такта
А вообще, книжку Ерофеева про АВР читать обязательно
Сообщение отредактировал pchela5 - Вторник, 25.04.2017, 14:46 |
|
| |
bulat | Дата: Вторник, 25.04.2017, 15:15 | Сообщение # 9 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| 24 МГц? идея хорошая... попробую ваш вариант опроса порта,потом выложу что получилось а насчет книжки...Ерофеева поищу
|
|
| |
pchela5 | Дата: Вторник, 25.04.2017, 15:27 | Сообщение # 10 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| Дабы не загромождать форум стучи мне в аську 480095828 - я в рабочее время в ней - могу по мере возможности отвечать. Если не заработает от 24 МГц при 3,3 вольтах то надо либо ставить внешний генератор на транзисторе ну или перейти на шкалу 0,4 мкс
|
|
| |
virus-error | Дата: Вторник, 25.04.2017, 19:39 | Сообщение # 11 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| а если взять какую простую xmega они вроде до 32МГц , там попробовать немножко разогнать , а что если там уже и по spi с АЦП , про I2C я молчу хотя можно было бы два канала сделать
|
|
| |
bulat | Дата: Вторник, 25.04.2017, 19:45 | Сообщение # 12 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| osc(1) = PIND:NOP:NOP:NOP osc(2) = PIND:NOP:NOP:NOP osc(3) = PIND:NOP:NOP:NOP и т д каждая строка 8 тактов или 0,5 мксек,книгу не нашел-по этой фамилии столько книг гугл
долго мучался с синхронизацией,вроде получилось-картинка стоит мертво если есть уровень синхры поправлю программу,добавлю комментарии и выложу
|
|
| |
bulat | Дата: Вторник, 25.04.2017, 19:54 | Сообщение # 13 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| про SPI и I2C лучше забыть-скорость считывания ацп не та,моя AD9280 имеет параллельный 8-битный выход и подключен к одному порту-считал порт и все насчет хмега-сначала бы простой сделать,вроде моего,решить проблемы с синхронизацией,разверткой... а когда будет боле-менее хороший результат-вот тогда можно и разогнать насчет двух каналов-какие проблемы,хоть 100!порты AD9280 имеют три состояния,переводим все кроме нужного в третье состояние и с нужного считываем P.S. память мега32 забита на 70 процентов,чувствую на все не хватит,будем искать варианты но-это после...
программа
Сообщение отредактировал bulat - Вторник, 25.04.2017, 20:41 |
|
| |
pchela5 | Дата: Среда, 26.04.2017, 11:49 | Сообщение # 14 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| Цитата bulat ( ) P.S. память мега32 забита на 70 процентов,чувствую на все не хватит,будем искать варианты но-это после... Лобовая атака с 1000 NOP сожрет всю память рано или поздно - надо циклы делать и лучше на ассемблере. По книге попутал автора - Евстифеев http:// mega-avr.com.ua /evstifeev-a-v-mikrokontrollery-avr-semejstva-mega/ Выложи скомпилированный кекс плиз.
|
|
| |
bulat | Дата: Среда, 26.04.2017, 13:07 | Сообщение # 15 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| вот
я уже говорил что в асм я ноль,а тем более встроить его в баском авр... вот программа,как вставить сюда ваш код? Спойлер $regfile = "m32def.dat" ' контроллер $crystal = 16000000 ' частота $hwstack = 200 ' $swstack = 200 '$framesize = 200 ' dim x as word dim t as Dword dim osc(800) as byte Config portd = INPUT Do for x = 1 to 800 osc(x) = pind next x
loop
Сообщение отредактировал bulat - Среда, 26.04.2017, 13:19 |
|
| |
pchela5 | Дата: Среда, 26.04.2017, 13:30 | Сообщение # 16 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| Вот фрагмент твоего кода - дизассемблировал прошивку: LDI XL,$D9 LDI XH,$02 IN R24,PIND ST X,R24 NOP NOP NOP LDI XL,$DA LDI XH,$02 IN R24,PIND ST X,R24 NOP NOP NOP Т.е. идет загрузка непосредственного значения адреса ячейки памяти в индексный регистр, считывание из порта и запись в ОЗУ. Это заняло у тебя 5600 строк кода на ассемблере. 5600, Карл!!!
А вот этот кусок занимает 8 строчек кода и выполняет туже функцию - разница в 700 раз. ldi xh, 1 - ставим указатель на начало данных ldi xl, 0 loop: NOP NOP IN R24, PINd ST X+, R24 CPI XH, $05 BRLO LOOP
Сообщение отредактировал pchela5 - Среда, 26.04.2017, 13:58 |
|
| |
bulat | Дата: Среда, 26.04.2017, 13:40 | Сообщение # 17 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| ура!скомпилировалось! $regfile = "m32def.dat" ' êîíòðîëëåð $crystal = 16000000 ' ÷àñòîòà
$hwstack = 200 ' $swstack = 200 ' $framesize = 200 ' dim x as word dim t as Dword dim osc(800) as byte Config portd = INPUT Do
!ldi XH, 1 '- ñòàâèì óêàçàòåëü íà íà÷àëî äàííûõ !ldi XH, 0 loop: !NOP !NOP !IN R24, PINd !ST X+, R24 !CPI XH, $05 !BRLO LOOP
loop
Сообщение отредактировал bulat - Среда, 26.04.2017, 13:44 |
|
| |
pchela5 | Дата: Среда, 26.04.2017, 13:51 | Сообщение # 18 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| dim x as word dim t as Dword dim osc(800) as byte at &H0100 - теперь твои данные располагаются по этому адресу - и длятся до &H0420 Config portd = INPUT Do
'for x = 1 to 800 'osc(x) = pind 'next x
$asm
push xl '- сохраняем стек push xh push R25 push R24
ldi R25, $04 '- в регистр пишем старший байт адреса конца озу ldi xh, 1 '- ставим указатель на начало данных ldi xl, 0 Loop: NOP IN R24, PINd ST X+, R24 CPI XL, $20 CPC XH, R25 BRLO LOOP
pop R24 pop R25 pop XH pop XL
$end Asm
Loop Как то так
Сообщение отредактировал pchela5 - Среда, 26.04.2017, 14:00 |
|
| |
pchela5 | Дата: Среда, 26.04.2017, 13:55 | Сообщение # 19 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| Цитата bulat ( ) ура!скомпилировалось! Она компилируется но начало блока памяти у тебя не указано. апноут AN #193 - Examples for using OVERLAY на сайте www.mcselec.com - читать обязательно - тогда ты поймешь, как располагаются данные в ОЗУ. Ну а про память программ поговорим отдельно, если понадобится.
|
|
| |
bulat | Дата: Среда, 26.04.2017, 14:56 | Сообщение # 20 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| вот спасибо!и за апноут-я и не знал что такое есть... память память программы уменьшилась с 73 до 36 %!!!
|
|
| |
bulat | Дата: Среда, 26.04.2017, 18:41 | Сообщение # 21 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| мысли в слух....хочется понять принцип в хамелеоне там данные с ацп считываются за 3 такта (на самой быстрой развертке),кварц 15 МГц,то есть за 3/15=0,2 мксек длина экрана 176 пикселей подал с генератора меандр,постепенно увеличивал частоту пока на экране не поместится ровно 1 полный период,получилось примерно 115кгц,период этой частоты 1сек/11500=8,7 мксек ,делим на 176 и получаем... 0,049 мксек!!!как это?
|
|
| |
bulat | Дата: Четверг, 27.04.2017, 08:14 | Сообщение # 22 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| наверно там программное увеличение развертки... пока вот что получилось
отрисовка экрана медленная,надо как то оптимизировать
Сообщение отредактировал bulat - Четверг, 27.04.2017, 09:06 |
|
| |
pchela5 | Дата: Четверг, 27.04.2017, 10:25 | Сообщение # 23 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| Исходники хамелеона есть в открытом доступе - скорее программное увеличение, да. Красивая картинка на дисплее получается, а синус как?
|
|
| |
bulat | Дата: Четверг, 27.04.2017, 12:31 | Сообщение # 24 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| у меня нет генератора сигналов синуса,скачал с интернета сигнал генератор,вот 10 кгц,на большее программа не способна есть шумок-провода не экранированы
сейчас загвоздка с кнопками-их думаю цеплять параллельно дисплею,ведь осталось всего 4 свободных пина и они будут использоваться для входной части (как в хамелеоне),можно еще вывод CS дисплея посадить на минус-будет еще один свободный вывод
Сообщение отредактировал bulat - Четверг, 27.04.2017, 12:35 |
|
| |
bulat | Дата: Четверг, 27.04.2017, 17:39 | Сообщение # 25 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| удалось подключить кнопки параллельно дисплею,пока их 5,но задействованы 3-пауза,развертка + и - вот пока так наверно здесь это никому не интересно, активность слабая,если что пишите bulat943@mail.ru
Сообщение отредактировал bulat - Четверг, 27.04.2017, 17:41 |
|
| |
virus-error | Дата: Четверг, 27.04.2017, 19:50 | Сообщение # 26 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| а мне понравилось , еще есть предложение на входе перед ацп устоновить делители напряжения и когда с ацп ыходять все восем едениц микрокантроллер переключал делители , когда меньше определенного напряжение деленное напряжение уменшалось
|
|
| |
bulat | Дата: Четверг, 27.04.2017, 20:15 | Сообщение # 27 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| Я так и сделаю-входная часть будет как в хамелеоне-это и делители,и режим открытого и закрытого входа правда смещение оу придется делать на переменном резисторе(в хамелеоне шимом регулируется,здесь канал шим занят) синхронизацию вроде победил
|
|
| |
radan | Дата: Пятница, 28.04.2017, 08:27 | Сообщение # 28 |
Группа: Свой человек
Сообщений: 16
Статус: Offline
| Цитата bulat ( ) наверно здесь это никому не интересно, активность слабая Интересно, просто многие за развитием наблюдают молча. Так что мы ждём результатов!
|
|
| |
bulat | Дата: Пятница, 28.04.2017, 13:27 | Сообщение # 29 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| Пока дело встало за входной частью,смотрю варианты...
|
|
| |
pchela5 | Дата: Пятница, 28.04.2017, 13:28 | Сообщение # 30 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| Цитата radan ( ) Интересно, просто многие за развитием наблюдают молча. Ну да, если тебе нужна помощь - обращайся. А так - все ждут результата. Ну и статью неплохо бы. Я, например, не очень пока понимаю принцип работы твоей программы, хотя мысль сделать осциллоскоп была. Так что ждем.
|
|
| |
bulat | Дата: Пятница, 28.04.2017, 13:38 | Сообщение # 31 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| ок,в следующей программе напишу комментарии Нарисовал входную часть,чтоб не изобретать велосипед взял от Хамелеона D2
спаял,вроде норм,получилось 8 пределов,но как сделать управление?у меня всего 5 кнопок,их можно конечно увеличить до 16,но смысл? 1)пауза 2)время развертки плюс и минус 3)входной делитель плюс и минус 4)переключение AC/DC 5)уровень синхронизации плюс и минус 6)тип синхронизации-auto,по фронту,по спаду,одиночное по фронту,одиночное по спаду 7)прокрутка в паузе 8)выключение(дисплей надо правильно выключать иначе ему прийдет кердык...(мне так сказали,тупо отключать дисплей плохо)
Сообщение отредактировал bulat - Пятница, 28.04.2017, 21:19 |
|
| |
bulat | Дата: Суббота, 29.04.2017, 08:54 | Сообщение # 32 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| Спаял входную часть,пока конденсаторы не подбирал(около 74нс4051),так как нечем точно замерить
Сообщение отредактировал bulat - Суббота, 29.04.2017, 20:00 |
|
| |
bulat | Дата: Суббота, 29.04.2017, 20:47 | Сообщение # 33 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| сделал управление как в хамелеоне-вправо/влево=переход вправо/влево по пунктам меню,вверх/вниз=увеличение/уменьшение параметров на видео частота 20 кгц (программа SOUNDCARD),синус 1 пункт меню-предел:50 мв,0,1 в,0,2 в,0,5 в,1 в,2 в,5 в и 10 вольт/деление 2 пункт-развертка:2.5 мксек,5 мксек,10 мкс,20 мкс,50 мкс,0,1 мс, 0,2мс,0,5 мс,1 мс и 5 миллисекунд/деление 3 пункт-режим постоянка/переменка DC/AC 4 пункт-уровень синхронизации ,на экране бегает точка все исходники ниже позже нарисую полную схему
|
|
| |
virus-error | Дата: Суббота, 29.04.2017, 21:41 | Сообщение # 34 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| да я тоже не совсем понял как это реализовано , я тут еще придумал как реализовать измерение на большую частоту , но она будет занемать больше железа
|
|
| |
virus-error | Дата: Суббота, 29.04.2017, 21:47 | Сообщение # 35 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| предлагаю точки на жки заменить на полосы (класика) а на горизонтальных поласах указать напряжение каждой полоски
|
|
| |
kip96 | Дата: Суббота, 29.04.2017, 22:07 | Сообщение # 36 |
Группа: Свой человек
Сообщений: 170
Статус: Offline
| bulat, вполне читаемый и понятный стиль программы, легкоусвояемый. Решил сказать, по тому,что не часто такое встретишь. Так держать! . К стати, продолжай, за темой многие просто следят, как я например.
|
|
| |
bulat | Дата: Суббота, 29.04.2017, 22:28 | Сообщение # 37 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| здесь можно и посчитать-между точками по вертикали=пределу(в строке меню левое значение),между точками по горизонтали=времени развертки ок,сделаю полосочки с напряжениями,но скорость отрисовки экрана падает в два с половиной раза(это когда линии и по вертикали и по горизонтали),я поэтому и сделал поменьше точек и...зачем они?в видео только перебор по меню,еще добавлю минимальное,максимальное напряжение и от пика до пика(внизу справа оставил место) кроме того(в будущем) в паузе двигаем маркер вправо-влево и видим действующее напряжение с частотой пока только пробовал делать,здесь пока не реализовано- имеем массив с выборками ацп,перебираем массив с первой выборки поочередно(массив перебираем не останавливаясь,пока не достигнем последней ячейки=1024)-ищем уровень синхронизации-сначала ищем значения ниже синхры,как нашли-ищем значение выше синхры,нашли-запомнили номер ячейки массива и потом опять ищем уровень ниже синхры,нашли-ищем значение выше синхры,как ее нашли запомнили номер ячейки массива и вышли из перебора массива теперь разницу (второй запомненный номер ячейки-первый запомненный номер ячейки),делим на время выборки и вуаля-вот вам частота время выборки кратно частоте кварца,в режимах 2.5 мксек,5 мксек,10 мкс оно равно четырем тактам,то есть 4/16 000 000=0,25 мксек
|
|
| |
virus-error | Дата: Воскресенье, 30.04.2017, 20:33 | Сообщение # 38 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| ребята есть идея как увеличить количество измерений за единицу времени , но мне как та самому не очень нравится эта идея , может у каго есть предложение получше
Сообщение отредактировал virus-error - Воскресенье, 30.04.2017, 20:37 |
|
| |
virus-error | Дата: Воскресенье, 30.04.2017, 20:39 | Сообщение # 39 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| забыл дорисовать микрокантролеры которые читат ацп , они считывают по очереди не синхронно
|
|
| |
bulat | Дата: Понедельник, 01.05.2017, 15:11 | Сообщение # 40 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| не совсем понял как он измерять должен... у меня есть идейка,использовать параллельное озу,считывать сначала в озу,а потом из озу в мк,как будет результат выложу... но это не скоро,надо выбрать быстрый параллельный озу и ждать пока он прийдет... сейчас намалюю блок схему чтоб был понятен принцип
нарисовал))) кварцевый генератор вырабатывает 32 МГц,когда на его входе ноль он работает,когда единица-не работает(заблокирован),сигнал с него идет на счетчики деления кварцованной частоты,мультиплексор выбирает какую из частот использовать как тактовую,эта деленная частота поступает на счетчики адреса озуи на ацп 1)запись.сначала атмега загружает в регистр коэф деления кварцевого генератора,ставит на озу на r/w=0=режим записи,на cs ацп=0=разрешение работы,затем сбрасывает счетчики,на cs озу=0=разрешение работы и ждет сигнала заполнения озу счетчики начинают считать с 0,выставляют адрес на озу = 0,сигнал с ацп копируется в озу(строб записи пока не придумал,но наверно можно просто проинвертировать тактовый сигнал),затем выставляют адрес на озу = 1,снова запись и т д (для примера озу 2048*8) как только счетчик достигнет значения=2048 тактовый генератор заблокируется,этот же сигнал идет на: атмега-знак того что озу заполнен и готов к считыванию подает на cs озу лог 1-озу в спячку атмега переводит схему в режим считывания озу- 2)считывание-атмега загужает в регистр: мультиплексор переводит счетчики на внешний счет (синхр,сигналы с атмеги-просто тики) r/w озу=1-режим считывания озу cs ацп=1-блокировка ацп затем атмега считывает озу-сначала из 0 ячейки,потом подает один тик ,счетчик увеличивается на +1,атмега считывает ячейку 2 и т д пока не считаются все ячейки-все! при тактовой частоте=32 МГц будет 32 мегавыборки,что в 8 раз больше чем сейчас но все это пока в теории,надо кумекать...
Сообщение отредактировал bulat - Понедельник, 01.05.2017, 16:47 |
|
| |
virus-error | Дата: Понедельник, 01.05.2017, 21:50 | Сообщение # 41 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| измеряет так в начале один микрокантролленые мереет напряжкение а ацп и начинает обрабатывать данные и записывать в озу, пока первый микрокантроллер обрабатывает анные второй мереет значение на ацп ...... и так по кругу , в итоге пока один обрабатывает второй производит измерение , получаем производительность в четыре раза, а микрокантроллер каторый выводит данные на жки н же и считывает данные с озу и стирает их,
к примеру время на осцилографе один пиксель 1 секунда , четыре микрокантроллера в течении одной секунды производят имерение (максимального и минимального наприжения (два байта) и записывают их в озу, спустя одну секунду основной микрокантроллер считывает два байта и стирает их , считанные байты обрабатываются в какую ячейку их записать (последующе отправятся на жки) , и отправлять на жки 100 герц
Сообщение отредактировал virus-error - Понедельник, 01.05.2017, 21:51 |
|
| |
bulat | Дата: Понедельник, 01.05.2017, 22:14 | Сообщение # 42 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| да наверно скорость от этого не вырастет-если тактовая 16 МГц,самое быстрое чтение за 3 такта,480 точек развертка то получается один цикл измерения =(3/16 000 000)*480=0,00009 сек или 90 мксек-итак быстро считывается,тут медленно загружается инфа в дисплей,надо попробовать переписать библиотеку на ассемблер,там обычный дрыгоног и все... как вариант(правда странный,но на скорости отразится)-нарисовать линии маркером прямо на экране
P.S. прямо так и хочется изучать стм,там наааамного быстрее
|
|
| |
virus-error | Дата: Понедельник, 01.05.2017, 23:18 | Сообщение # 43 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| а если применить RASPBERRY PI ZERO https://www.raspberrypi.org/blog/raspberry-pi-zero/ 1ГГц только вот загвоздка bascom-avr не знает arm , да и принципе это уже "мы слепили из того что было" да и мне вообщем больше в dip корпусах хочется собрать , но это больше стационарный
|
|
| |
pchela5 | Дата: Вторник, 02.05.2017, 10:28 | Сообщение # 44 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| Цитата bulat ( ) нарисовал)))кварцевый генератор вырабатывает 32 МГц,когда на его входе ноль он работает,когда единица-не работает(заблокирован),сигнал с него идет на счетчики деления кварцованной частоты,мультиплексор выбирает какую из частот использовать как тактовую,эта деленная частота поступает на счетчики адреса озуи на ацп Для этих целей надо поставить ПЛМ Альтеру типа 3064 - 44 ноги как у Меги32 - все туда прекрасно уместится. Дешево и сердито, ну и частоту можно поднять - все будет зависить от типа ОЗУ.
|
|
| |
bulat | Дата: Среда, 03.05.2017, 21:05 | Сообщение # 45 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| Заказал CY7C1021D-память 64 кб*16(если все будет ном то можно будет замахнуться на 2 канала),атмега128-будет где разгуляться скоро будет продолжение... а пока идут детали буду искать более "быстрый" дисплей,думаю испытать ILI9341 со SPY,посмотю что можно выжать...
Сообщение отредактировал bulat - Четверг, 04.05.2017, 18:25 |
|
| |
bulat | Дата: Вторник, 30.05.2017, 12:42 | Сообщение # 46 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| итак ili9341 показал прекрасный результаты,отрисовка быстрая,жду озу
|
|
| |
bulat | Дата: Понедельник, 12.06.2017, 18:52 | Сообщение # 47 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| Переделал под ILI9341,сам экран с тачскрином,памяти атмега32 не достаточно-пришлось перейти на атмега1284р похоже,скоро все управление можно сделать без кнопок... пока сделал только переключение времени развертки-нажатие на левую часть экрана развертка минус,на правую часть=развертка плюс,надо думать как расположить "кнопки" на экране,они такие же как в варианте выше
|
|
| |
bulat | Дата: Четверг, 22.06.2017, 01:19 | Сообщение # 48 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| на основе схемы хамелеон D2 сделал ослика на 9341,все работает,пока все на кнопках но думаю сделать тач похоже тема умерла...на днях выложу видео
|
|
| |
GSV | Дата: Четверг, 22.06.2017, 08:10 | Сообщение # 49 |
Группа: Друзья
Сообщений: 38
Статус: Offline
| bulat, Все затаились и ждут результатов ,потому и в теме тихо
|
|
| |
bulat | Дата: Четверг, 22.06.2017, 22:16 | Сообщение # 50 |
Группа: Проверенные
Сообщений: 110
Статус: Offline
| сравнил "показометр" на ili9341 и 9481,плюс у первого-занимает мало выводов атмега32,минус-отрисовка графика дольше чем 9481,для эксперимента заменил кварц тактового генератора атмега32 с 16 на 27 МГц-уже отрисовка быстрее,пришлось пересчитывать время развертки память атмега32 забита на 98%,думал задействовать тачскрин,придется убирать одну из разверток (сейчас 7,5 мксек/дел,10 мксек/дел,20 мксек/дел,50 мксек/дел,100 мксек/дел,200 мксек/дел,500 мксек/дел,1 мсек/дел и 5 мсек/дел) и резать библиотеку
|
|
| |