[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » форумы » В разработке » осциллограф (начинаем...)
осциллограф
bulatДата: Суббота, 22.04.2017, 19:30 | Сообщение # 1
Группа: Проверенные
Сообщений: 110

Статус: Offline
собираю осциллограф для себя,большая частота особо не нужна-до 500 кгц мне достаточно
пока входная часть собрана на AD9820(ацп),атмега32 управляет всем процессом,индикатор заказал(и получил) 480*320 точек на контроллере ILI9481(библиотеку для него не нашел,пришлось переделывать от ili9125,делал инициализацию,очистка/закрашивание экрана и вывод пикселя)
пока все работает,но зашел в тупик-как опрашивать порт со строгой дискретностью?
за 3 такта нашел на этом же форуме ,мне надо за 4,16,32 и тд тактов
ниже программа(довольно большая)
Прикрепления: oscilloscop_001.bas (21.8 Kb)


 
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 посте),огромное вам спасибо!
Прикрепления: __.lay6 (253.6 Kb)




Сообщение отредактировал 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 процентов,чувствую на все не хватит,будем искать варианты но-это после...

программа
Прикрепления: 9313333.bas (6.2 Kb) · Font12x16.font (6.9 Kb) · font8x8.font (4.0 Kb) · ADCREAD_01.inc (13.6 Kb) · hx8357_01.inc (12.5 Kb)




Сообщение отредактировал 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
Прикрепления: 9313333.hex (66.4 Kb)




Сообщение отредактировал 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
Прикрепления: primer2.hex (0.5 Kb)




Сообщение отредактировал 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 пункт-уровень синхронизации ,на экране бегает точка
все исходники ниже
позже нарисую полную схему
Прикрепления: oscilloscop_dem.bas (12.2 Kb) · 0877712.font (4.0 Kb) · 6061888.font (11.3 Kb) · ADCREAD_asm_01.inc (40.8 Kb) · hx8357_bascom_a.inc (12.1 Kb)


 
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, вполне читаемый и понятный стиль программы, легкоусвояемый. Решил сказать, по тому,что не часто такое встретишь. Так держать! smile . К стати, продолжай, за темой многие просто следят, как я например.

 
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

ребята есть идея как увеличить количество измерений за единицу времени , но мне как та самому не очень нравится эта идея , может у каго есть предложение получше
Прикрепления: 7174848.jpg (95.3 Kb)




Сообщение отредактировал 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, Все затаились и ждут результатов smile ,потому и в теме тихо smile

 
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 мсек/дел) и резать библиотеку


 
Форум » форумы » В разработке » осциллограф (начинаем...)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: